Liste d'adresses IP nommées Cloud Armor

1. Introduction

Les listes d'adresses IP nommées Google Cloud Armor vous permettent de référencer des listes d'adresses IP et de plages d'adresses IP gérées par des fournisseurs tiers. Vous pouvez configurer des listes d'adresses IP nommées dans une stratégie de sécurité. Vous n'avez pas besoin de spécifier manuellement chaque adresse IP ou chaque plage d'adresses IP.

Points abordés

  • Avantages des listes d'adresses IP nommées Cloud Armor
  • Créer une stratégie de sécurité Cloud Armor
  • Déployer une liste d'adresses IP nommée Cloud Armor
  • Créer un équilibreur de charge mondial
  • Créer un groupe d'instances géré avec un exemple d'application de test

Prérequis

  • Expérience avec les règles de sécurité et les équilibreurs de charge

2. Autoriser uniquement le trafic provenant de fournisseurs tiers autorisés

Un cas d'utilisation courant consiste à créer une liste d'autorisation contenant les adresses IP d'un partenaire tiers autorisé pour s'assurer que seul le trafic provenant de ce partenaire peut accéder à l'équilibreur de charge et aux backends.

Par exemple, les fournisseurs CDN doivent extraire le contenu des serveurs d'origine à intervalles réguliers pour le distribuer dans leurs propres caches. Un partenariat avec Google permet d'établir une connexion directe entre les fournisseurs CDN et le réseau périphérique de Google. Les utilisateurs CDN sur Google Cloud peuvent utiliser cette connexion directe lors de l'extraction de données d'origine. Dans ce cas, l'utilisateur CDN peut souhaiter créer une stratégie de sécurité autorisant uniquement le trafic provenant de ce fournisseur CDN.

Dans cet exemple, un fournisseur CDN publie sa liste d'adresses IP 23.235.32.0/20, 43.249.72.0/22, ⋯,. Un utilisateur CDN configure une règle de sécurité autorisant uniquement le trafic provenant de ces adresses IP. Par conséquent, deux points d'accès du fournisseur CDN sont autorisés (23.235.32.10 et 43.249.72.10), et leur trafic est donc autorisé. Le trafic provenant du point d'accès non autorisé 198.51.100.1 est bloqué.

27243e72ee25ee16.png

Liste d'adresses IP nommées de Google Cloud Armor

3. Simplifier la configuration et la gestion à l'aide de règles préconfigurées

Les fournisseurs CDN utilisent souvent des adresses IP qui sont bien connues et que de nombreux utilisateurs CDN doivent utiliser. Ces listes évoluent avec le temps, à mesure que les fournisseurs ajoutent, suppriment et mettent à jour les adresses IP.

L'utilisation d'une liste d'adresses IP nommée dans une règle de stratégie de sécurité simplifie le processus de configuration et de gestion des adresses IP, car Google Cloud Armor synchronise automatiquement les informations des fournisseurs CDN au quotidien. Le processus fastidieux et source d'erreurs consistant à gérer manuellement une longue liste d'adresses IP est ainsi éliminé.

Fournisseurs de listes d'adresses IP

Les fournisseurs de listes d'adresses IP répertoriés dans le tableau suivant sont compatibles avec Google Cloud Armor. Il s'agit des fournisseurs de CDN qui se sont associés à Google. Leurs listes d'adresses IP sont publiées via des URL publiques individuelles.

Ces partenaires fournissent des listes d'adresses IPv4 et IPv6 distinctes. Google Cloud Armor utilise les URL fournies pour extraire les listes, puis les convertit en listes d'adresses IP nommées. Les listes sont référencées par leur nom dans le tableau.

7e9c09a008e04656.png

Vous pouvez également utiliser Cloud Shell pour obtenir la liste des listes d'adresses IP nommées préconfigurées.

Connectez-vous à Cloud Shell et définissez votre projectid

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID

echo $projectid

Depuis Cloud Shell

gcloud compute security-policies list-preconfigured-expression-sets \
    --filter="id:sourceiplist"

Cette opération renvoie les valeurs :

EXPRESSION_SET
sourceiplist-fastly
sourceiplist-cloudflare
sourceiplist-imperva

4. Topologie de l'atelier de programmation

68a800f9adbf4570.png

5. Préparation

Configuration de l'environnement d'auto-formation

  1. Connectez-vous à la console Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Mémorisez l'ID du projet. Il s'agit d'un nom unique permettant de différencier chaque projet Google Cloud (le nom ci-dessus est déjà pris ; vous devez en trouver un autre). Il sera désigné par le nom PROJECT_ID tout au long de cet atelier de programmation.

  1. Vous devez ensuite activer la facturation dans Cloud Console pour pouvoir utiliser les ressources Google Cloud.

L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Veillez à suivre les instructions de la section "Nettoyer" qui indique comment désactiver les ressources afin d'éviter les frais une fois ce tutoriel terminé. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300$.

Démarrer Cloud Shell

Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.

Depuis la console GCP, cliquez sur l'icône Cloud Shell de la barre d'outils située dans l'angle supérieur droit :

bce75f34b2c53987.png

Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :

f6ef2b5f13479f3a.png

Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez réaliser toutes les activités de cet atelier dans un simple navigateur.

6. Créer un réseau VPC

Réseau VPC

Depuis Cloud Shell

gcloud compute networks create 

named-list-vpc

 --subnet-mode custom

Créer un sous-réseau

Depuis Cloud Shell

gcloud compute networks subnets create named-ip-subnet \
        --network 

named-list-vpc

 --range 10.0.0.0/24 --region us-east1

Créer des règles de pare-feu

Depuis Cloud Shell

gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16 

Créer l'équilibreur de charge

Créer le modèle d'instance

Depuis Cloud Shell

gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any

Créer le groupe d'instances géré

Depuis Cloud Shell

gcloud compute --project=$projectid  instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b

7. Vérifier les backends

Vérifiez que les instances de VM sont créées dans les deux régions et accédez à leurs sites HTTP.

  1. Toujours dans Compute Engine, cliquez sur "Instances de VM" dans le menu de gauche.
  2. Examinez les instances qui commencent par "us-east1-mig". Ces instances appartiennent aux groupes d'instances gérés.
  3. Cliquez sur l'adresse IP externe d'une instance de us-east1-mig. Vous devriez voir l'adresse IP du client (votre adresse IP) et le nom d'hôte (commence par us-east1-mig).

Configurer l'équilibreur de charge HTTP

  1. Dans la console Cloud, cliquez sur le menu de navigation ( mainmenu.png) > Services réseau > Équilibrage de charge, puis cliquez sur Créer un équilibreur de charge.
  2. Sous "Équilibrage de charge HTTP(S)", cliquez sur "Démarrer la configuration".

start_config.png

  1. Sélectionnez "D'Internet vers mes VM", puis cliquez sur "Continuer".
  2. Définissez le nom sur "http-lb".

Configurer le backend

Les services de backend dirigent le trafic entrant vers un ou plusieurs backends associés. Chaque backend est composé d'un groupe d'instances et de métadonnées sur sa capacité de livraison supplémentaire.

  1. Cliquez sur "Configuration du backend".
  2. Pour les services de backend et les buckets backend, cliquez sur "Créer ou sélectionner des services de backend et des buckets backend", puis sur "Services de backend", puis sur "Créer un service de backend".
  3. Le type de backend est "Groupe d'instances".
  4. Indiquez les valeurs suivantes et conservez les valeurs par défaut des autres paramètres : 18bf7a852f0759ee.png
  5. Cliquez sur "OK".
  6. Pour la vérification de l'état, sélectionnez "Créer une vérification de l'état". health_check.png
    1. Indiquez les valeurs suivantes et conservez les valeurs par défaut des autres paramètres : d2f85af1e988532b.png
  7. Cliquez sur "Enregistrer et continuer".
  8. Cliquez sur "Créer" pour créer le service de backend.

b00c217bf592f0.png

Configurer l'interface

Les règles d'hôte et de chemin d'accès déterminent la manière dont le trafic est dirigé. Par exemple, vous pouvez diriger le trafic vidéo vers un backend et le trafic statique vers un autre backend. Toutefois, vous n'apprendrez pas à configurer les règles d'hôte et de chemin d'accès dans cet atelier.

  1. Cliquez sur "Configuration du frontend".
  2. http-front-end
  3. Spécifiez les paramètres suivants et conservez les valeurs par défaut des autres paramètres : 51ae16211e72142f.png
  4. Cliquez sur "OK".

8. Examiner et créer l'équilibreur de charge HTTP

  1. Cliquez sur "Vérifier et finaliser".

8efe5b462a80071d.png

  1. Vérifiez les services de backend et l'interface.

30b06910bf7fae29.png

  1. Cliquez sur "Créer".
  2. Attendez plusieurs minutes que l'équilibreur de charge soit créé.
  3. Cliquez sur le nom de l'équilibreur de charge (http-lb).
  4. Notez l'adresse IPv4 de l'équilibreur de charge pour la prochaine tâche, qui sera désignée par http-lb.

9. Valider l'accès non autorisé réussi

Avant d'implémenter la stratégie d'adresse IP nommée, validez l'accès non autorisé réussi au répartiteur de charge et à l'application Web. Notez qu'une fois la règle d'adresse IP nommée implémentée, l'accès à l'application Web est limité à l'ensemble d'expressions provisionné.

  1. Identifiez l'adresse IP de l'équilibreur de charge créé à l'étape précédente (http-lb) et collez-la dans votre navigateur Web. Le résultat sera semblable à celui de la capture d'écran ci-dessous.

REMARQUE : Cette étape prendra plusieurs minutes. Une fois la page Web générée, l'adresse IP du client provient de Google Front End, et non de l'adresse IP de votre poste de travail.

f93410e9568f1f32.png

Depuis votre poste de travail, effectuez une validation semblable à celle indiquée ci-dessous.

bash-3.2$ curl <load-balancer-IP>

10. Exemple de résultat :

bash-3.2$ curl <load-balancer-ip>
<h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b

11. Configurer une liste d'adresses IP nommées

Créer une stratégie Cloud Armor pour une liste d'adresses IP nommée

Depuis Cloud Shell

gcloud compute --project=$projectid security-policies create ca-policy

Depuis Cloud Shell

gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*

Identifiez les adresses disponibles dans les listes d'adresses IP nommées du CDN.

Depuis Cloud Shell

gcloud compute security-policies list-preconfigured-expression-sets \
    --filter="id:sourceiplist"

Cette opération renvoie les valeurs :

EXPRESSION_SET
sourceiplist-fastly
sourceiplist-cloudflare
sourceiplist-imperva

Dans Cloud Shell, configurez une liste d'adresses IP nommée en fonction de l'ensemble d'expressions disponibles de votre CDN.

gcloud beta compute security-policies rules create 600 \
    --security-policy ca-policy \
    --expression "evaluatePreconfiguredExpr('expression_set')" \
    --action "allow"

Exemple avec Cloudflare

gcloud beta compute security-policies rules create 600 \
    --security-policy ca-policy \
    --expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \
    --action "allow"

12. Appliquer une règle de sécurité à l'autorité de certification

Appliquez la stratégie de sécurité de l'AC et attendez plusieurs minutes que la stratégie globale soit propagée.

gcloud compute backend-services update http-backend --security-policy ca-policy --global

13. Validation des adresses IP nommées

  1. Étant donné que la stratégie de sécurité est implémentée, l'accès à l'équilibreur de charge depuis votre poste de travail n'est pas autorisé.
  2. Pour valider, ouvrez une fenêtre de terminal sur votre poste de travail et effectuez un curl vers l'adresse IP de l'équilibreur de charge. La sortie de la commande curl générera une erreur "403 Forbidden" (403 Interdit), car votre poste de travail n'est plus autorisé.

Depuis votre poste de travail

bash-3.2$ curl <load-balancer-IP>
<!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden

Procédure de nettoyage

gcloud -q compute backend-services update http-backend --security-policy "" --global

gcloud -q compute --project=$projectid security-policies delete ca-policy

gcloud -q compute forwarding-rules delete http-front-end --global

gcloud -q compute target-http-proxies delete http-lb-target-proxy

gcloud -q compute url-maps delete http-lb

gcloud -q compute backend-services delete http-backend --global

gcloud -q compute health-checks delete http-health-check

gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b

gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template

gcloud -q compute --project=$projectid firewall-rules delete default-allow-http

gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check

gcloud -q compute networks subnets delete named-ip-subnet --region us-east1

gcloud -q compute networks delete named-list-vpc

14. Félicitations !

Bravo ! Vous avez terminé cet atelier de programmation.

Points abordés

  • Avantages des listes d'adresses IP nommées Cloud Armor
  • Créer un équilibreur de charge mondial
  • Créer un groupe d'instances géré avec un exemple d'application de test
  • Créer une stratégie de sécurité Cloud Armor
  • Déployer une liste d'adresses IP nommée Cloud Armor
  • Valider une règle Cloud Armor d'adresses IP nommées