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é. Il n'est pas nécessaire de spécifier manuellement chaque adresse IP ou plage d'adresses IP une par une.
Points abordés
- Avantages de la liste d'adresses IP nommées de Cloud Armor
- Créer une stratégie de sécurité Cloud Armor
- Déployer la liste d'adresses IP nommées Cloud Armor
- Créer un équilibreur de charge global
- Créer un groupe d'instances géré avec un exemple d'application de test
Prérequis
- Expérience des règles de sécurité et des équilibreurs de charge
2. Autoriser uniquement le trafic provenant de fournisseurs tiers autorisés
Un cas d'utilisation typique consiste à créer une liste d'autorisation contenant les adresses IP d'un partenaire tiers autorisé pour garantir que seul le trafic provenant de ce partenaire peut accéder à l'équilibreur de charge et aux backends.
Par exemple, les fournisseurs de 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 de 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 l'origine. Dans ce cas, l'utilisateur CDN peut souhaiter créer une stratégie de sécurité qui n'autorise que le trafic provenant de ce fournisseur de CDN spécifique.
Dans cet exemple, un fournisseur de 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é qui n'autorise que le trafic provenant de ces adresses IP. Par conséquent, deux points d'accès du fournisseur de 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é.
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 de CDN utilisent souvent des adresses IP bien connues que de nombreux utilisateurs de CDN doivent utiliser. Ces listes changent au fil du 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 de CDN au quotidien. Cela élimine le processus fastidieux et sujet aux erreurs consistant à gérer manuellement une longue liste d'adresses IP.
Fournisseurs de listes d'adresses IP
Les fournisseurs de listes d'adresses IP du tableau suivant sont compatibles avec Google Cloud Armor. Il s'agit de 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 récupérer les listes, puis les convertit en listes d'adresses IP nommées. Les listes sont appelées par les noms indiqués dans le tableau.
Vous pouvez également utiliser Cloud Shell pour obtenir la liste des listes d'adresses IP nommées préconfigurées
Se connecter à Cloud Shell et définir l'ID de votre projet
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
5. Préparation
Configuration de l'environnement d'auto-formation
- 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.)
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.
- 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 gratuite. 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 :
Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :
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.
- Toujours dans Compute Engine, cliquez sur "Instances de VM" dans le menu de gauche.
- Notez les instances qui commencent par us-east1-mig. Elles font partie des groupes d'instances gérés.
- Cliquez sur l'adresse IP externe d'une instance de us-east1-mig. Vous devriez voir l'adresse IP client (votre adresse IP) et le nom d'hôte (commence par us-east1-mig).
Configurer l'équilibreur de charge HTTP
- Dans la console Cloud, cliquez sur le menu de navigation ( ) > cliquez sur Services réseau > puis cliquez sur "Créer un équilibreur de charge".
- Sous "Équilibrage de charge HTTP(S)", cliquez sur "Démarrer la configuration".
- Sélectionnez "D'Internet vers mes VM", puis cliquez sur "Continuer".
- 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.
- Cliquez sur "Configuration du backend".
- Pour les services de backend et cliquez sur "Créer ou sélectionner des services de backend", sur les buckets backend, sur "Services de backend", puis sur "Créer un service de backend".
- Le type de backend est "Groupe d'instances"
- Indiquez les valeurs suivantes et conservez les valeurs par défaut des autres paramètres:
- Cliquez sur "OK".
- Dans "Vérification de l'état", sélectionnez "Créer une vérification d'état".
- Indiquez les valeurs suivantes et conservez les valeurs par défaut des autres paramètres:
- Cliquez sur "Enregistrer et continuer".
- Cliquez sur "Créer" pour créer le service de backend.
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.
- Cliquez sur "Configuration de l'interface".
- http-front-end
- Spécifiez les paramètres suivants et conservez les valeurs par défaut des autres paramètres ()
- Cliquez sur "OK".
8. Examiner et créer l'équilibreur de charge HTTP
- Cliquez sur "Vérifier et finaliser".
- Examinez les services de backend et l'interface.
- Cliquez sur "Créer".
- Attendez quelques minutes que l'équilibreur de charge soit créé.
- Cliquez sur le nom de l'équilibreur de charge (http-lb).
- Notez l'adresse IPv4 de l'équilibreur de charge (appelée http-lb) pour la tâche suivante.
9. Vérifier la réussite de l'accès non autorisé
Avant d'implémenter la règle d'adresse IP nommée, validez l'accès non autorisé à l'équilibreur de l'atelier et à l'application Web qui s'ensuit. 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é.
- Identifiez l'adresse IP de votre équilibreur de charge créée à l'étape précédente (http-lb), puis collez-la dans votre navigateur Web. Le résultat sera semblable à la capture d'écran ci-dessous.
REMARQUE: Cette étape prend 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 station de travail.
À partir de votre station 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 règle Cloud Amour pour la liste d'adresses IP nommées
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 de listes d'adresses IP nommées CDN disponibles.
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
Depuis Cloud Shell, configurez la liste d'adresses IP nommées en fonction de l'ensemble d'expressions disponibles sur 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 la stratégie de sécurité de l'autorité de certification
Appliquer la stratégie de sécurité de l'autorité de certification et patienter quelques minutes pour la propagation de la stratégie globale
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. Validation des adresses IP nommées
- Étant donné que la stratégie de sécurité est implémentée, l'accès à l'équilibreur de charge depuis votre station de travail n'est pas autorisé.
- Pour valider, ouvrez une fenêtre de terminal depuis votre poste de travail et exécutez une commande curl sur l'adresse IP de l'équilibreur de charge. La sortie de la curl renverra un message d'erreur "403" Erreur interdite, car votre station de travail n'est plus autorisée.
Depuis votre station 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
Étapes 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 de la liste d'adresses IP nommées de Cloud Armor
- Créer un équilibreur de charge global
- 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 la liste d'adresses IP nommées Cloud Armor
- Valider la règle Cloud Armor avec adresse IP nommée