gem-netsec-cloud-armor

Activer Google Cloud Shell
Google Cloud Shell est une machine virtuelle qui contient des outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud.
Google Cloud Shell offre un accès en ligne de commande à vos ressources GCP.
-
Dans la console GCP, dans la barre d'outils située en haut à droite, cliquez sur le bouton Ouvrir Cloud Shell.

-
Cliquez sur Continue (Continuez):

Il faut quelques instants pour mettre en service et se connecter à l'environnement. Lorsque vous êtes connecté, vous êtes déjà authentifié et le projet est défini sur votre PROJECT_ID. Par exemple:

gcloud est l'outil de ligne de commande associé à Google Cloud Platform. Pré-installé sur Cloud Shell, il est également compatible avec la saisie semi-automatique via la touche de tabulation.
Vous pouvez répertorier les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
Résultat :
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
Pour répertorier les ID de projet, exécutez la commande suivante :
gcloud config list project
Résultat :
[core]
project = <ID_Projet>
Exemple de résultat :
[core]
project = qwiklabs-gcp-44776a13dea667a6
Présentation
Dans cet atelier, vous allez explorer les fonctionnalités de géoblocage de Cloud Armor. Vous allez créer une stratégie de sécurité Cloud Armor et implémenter des règles pour refuser et autoriser le trafic en fonction de l'emplacement géographique afin d'observer le comportement de Cloud Armor. Cet atelier vous permet de vous familiariser avec la sécurisation de vos applications Google Cloud à l'aide de Cloud Armor.
Tâche 1 : Configuration initiale
Dans cette tâche, vous allez configurer l'environnement, y compris en activant les API nécessaires et en créant un service de backend.
-
Définissez l'ID du projet.
gcloud config set project {{{ project_0.project_id | "PROJECT_ID" }}}
Remarque :
Cette commande définit votre projet actif. Toutes les commandes "gcloud" suivantes seront exécutées dans ce projet.
-
Définissez votre région par défaut sur .
gcloud config set compute/region {{{ project_0.default_region | "REGION" }}}
Remarque :
Cette commande définit la région de calcul par défaut. Les ressources seront créées dans cette région.
-
Définissez la zone par défaut sur .
gcloud config set compute/zone {{{ project_0.default_zone | "ZONE" }}}
Remarque :
Cette commande définit la zone de calcul par défaut. Les ressources seront créées dans cette zone de la région spécifiée.
-
Activez les API nécessaires.
gcloud services enable compute.googleapis.com container.googleapis.com iap.googleapis.com
Remarque :
Cette commande active les API Compute Engine, Kubernetes Engine et Identity-Aware Proxy, qui sont nécessaires pour cet atelier.
Tâche 2 : Créer le réseau et le sous-réseau VPC
Créez un réseau VPC nommé test-vpc avec les sous-réseaux test-subnet-us et test-subnet-eu. Ce VPC hébergera les instances utilisées pour les tests.
-
Créez le réseau VPC test-vpc.
gcloud compute networks create test-vpc --subnet-mode=custom
Remarque :
Cette commande crée un réseau VPC avec le mode de sous-réseau personnalisé, ce qui offre une flexibilité dans la définition des sous-réseaux.
-
Créez un sous-réseau test-subnet-us dans le réseau test-vpc de la région spécifiée. Utilisez la plage d'adresses IP 10.10.10.0/24.
gcloud compute networks subnets create test-subnet-us --network=test-vpc --region={{{ project_0.default_region | "REGION" }}} --range=10.10.10.0/24
Remarque :
Cette commande crée un sous-réseau dans le réseau VPC spécifié avec la plage d'adresses IP "10.10.10.0/24".
-
Créez un sous-réseau test-subnet-eu dans le réseau test-vpc de la région europe-west1. Utilisez la plage d'adresses IP 10.20.20.0/24.
gcloud compute networks subnets create test-subnet-eu \
--network=test-vpc \
--region=europe-west1 \
--range=10.20.20.0/24
Remarque :
Cette commande crée un sous-réseau dans le réseau VPC spécifié avec la plage d'adresses IP "10.20.20.0/24".
-
Ajoutez une règle de pare-feu pour l'accès IAP.
gcloud compute firewall-rules create allow-iap-ssh \
--direction=INGRESS \
--priority=1000 \
--network=test-vpc \
--action=ALLOW \
--rules=tcp:22 \
--source-ranges=35.235.240.0/20 \
--target-tags=iap-gce
Remarque :
Cette commande crée une règle de pare-feu pour autoriser l'accès IAP aux instances portant le tag "iap-gce".
-
Créez une règle de pare-feu pour autoriser le trafic HTTP vers le backend.
gcloud compute firewall-rules create allow-http \
--direction=INGRESS \
--priority=1500 \
--network=test-vpc \
--allow=tcp:80,tcp:443 \
--source-ranges=0.0.0.0/0 \
--target-tags=http-server,https-server
Remarque :
Cette commande crée une règle de pare-feu qui autorise le trafic HTTP et HTTPS provenant de n'importe quelle source vers les instances dotées des tags "http-server" et "https-server".
Tâche 3 : Implémenter un service de backend avec des vérifications d'état
Dans cette tâche, vous allez implémenter des vérifications d'état et créer un service de backend.
-
Créez une vérification d'état.
gcloud compute health-checks create http health-check-http \
--port=80
Remarque :
Cette commande crée une vérification d'état HTTP sur le port 80.
-
Créez un service de backend.
gcloud compute backend-services create backend-service \
--health-checks=health-check-http \
--global
Remarque :
Cette commande crée un service de backend mondial à l'aide de la vérification d'état créée à l'étape précédente.
Tâche 4 : Créer le modèle d'instance et le groupe d'instances géré
Commencez par créer un modèle d'instance, qui servira de plan pour vos VM. Créez ensuite un groupe d'instances géré (MIG) à l'aide de ce modèle. Le MIG gérera automatiquement les VM, en fournissant des fonctionnalités d'autoréparation et d'autoscaling.
-
Créez un modèle d'instance.
gcloud compute instance-templates create backend-template \
--machine-type=e2-medium \
--image-family=debian-11 \
--image-project=debian-cloud \
--subnet=test-subnet-us \
--tags=http-server,https-server,iap-gce \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install -y apache2 php libapache2-mod-php
a2ensite default-ssl
a2enmod ssl
systemctl restart apache2
rm /var/www/html/index.html
echo "
Chaîne de requête :
" > /var/www/html/index.php
systemctl restart apache2'
Remarque :
Cette commande crée un modèle d'instance qui définit la configuration des VM de backend.
-
Créez un groupe d'instances géré.
gcloud compute instance-groups managed create backend-mig \
--base-instance-name=backend-vm \
--size=2 \
--template=backend-template \
--zone={{{ project_0.default_zone | "ZONE" }}}
Remarque :
Cette commande crée un groupe d'instances géré (MIG) avec une taille initiale de deux VM.
-
Ajoutez le groupe d'instances géré au service de backend.
gcloud compute backend-services add-backend backend-service \
--instance-group=backend-mig \
--instance-group-zone={{{ project_0.default_zone | "ZONE" }}} \
--global
Remarque :
Cette commande ajoute le groupe d'instances géré en tant que backend au service "backend-service".
-
Créez une vérification d'état.
gcloud compute health-checks create http http-health-check \
--request-path=/
Remarque :
Cette commande crée une vérification d'état qui envoie des requêtes au chemin racine ("/").
-
Ajoutez la vérification d'état au service de backend.
gcloud compute backend-services update backend-service \
--health-checks=http-health-check \
--global
Remarque :
Cette commande associe la vérification d'état au service "backend-service".
Tâche 5 : Créer la configuration de l'interface
C'est avec la configuration de l'interface que vos utilisateurs interagiront. Un mappage d'URL, un proxy, une adresse IP mondiale et une règle de transfert vont donc être nécessaires.
-
Créez un mappage d'URL.
gcloud compute url-maps create url-map \
--default-service=backend-service
Remarque :
Cette commande crée un mappage d'URL qui achemine tout le trafic vers le service "backend-service".
-
Créez un proxy HTTP global.
gcloud compute target-http-proxies create http-proxy \
--url-map=url-map
Remarque :
Cette commande crée un proxy HTTP mondial à l'aide du mappage d'URL créé à l'étape précédente.
-
Créez une adresse IP statique mondiale.
gcloud compute addresses create global-ip-address --global
Remarque :
Cette commande crée une adresse IP statique accessible à l'échelle mondiale.
-
Créez une règle de transfert mondiale.
gcloud compute forwarding-rules create http-forwarding-rule \
--address=$(gcloud compute addresses describe global-ip-address \
--global --format='value(address)') \
--global \
--target-http-proxy=http-proxy \
--ports=80
Remarque :
Cette commande crée une règle de transfert mondiale pour diriger le trafic vers le proxy HTTP à l'aide de l'adresse IP créée.
Tâche 6 : Implémenter le géoblocage avec Cloud Armor
Vous allez maintenant créer une stratégie de sécurité Cloud Armor pour refuser le trafic provenant d'une région spécifique. Les règles Cloud Armor sont traitées par ordre de priorité croissant, la règle évaluée en premier correspondant au numéro de priorité le plus faible.
-
Créez une stratégie de sécurité Cloud Armor.
gcloud compute security-policies create "geoblocking-policy" \
--description="Blocks traffic from specific countries"
Remarque :
Cette commande crée une stratégie de sécurité Cloud Armor nommée "geoblocking-policy".
-
Ajoutez une règle pour autoriser le trafic provenant des États-Unis.
gcloud compute security-policies rules create 1000 \
--security-policy="geoblocking-policy" \
--description="Allow traffic from US" \
--expression="origin.region_code == 'US'" \
--action=allow
Remarque :
Cette commande crée une règle qui autorise le trafic provenant des États-Unis.
Le numéro de priorité de cette règle est élevé (1000), ce qui signifie qu'elle est évaluée après les règles de refus.
Il est recommandé d'autoriser explicitement le trafic provenant des régions que vous souhaitez desservir, mais pour le géoblocage, ce n'est pas strictement nécessaire, sauf si vous implémentez une stratégie de type "tout refuser, autoriser certains".
La priorité est essentielle pour déterminer la position de la règle dans la stratégie.
-
Ajoutez une règle pour refuser le trafic provenant de Belgique (BE).
gcloud compute security-policies rules create 10 \
--security-policy="geoblocking-policy" \
--description="Deny traffic from Belgium" \
--expression="origin.region_code == 'BE'" \
--action=deny-403
Remarque :
Cette commande bloque le trafic provenant de Belgique avant que les règles d'autorisation ne soient prises en compte.
L'action "deny-403" renvoie une erreur HTTP 403 (accès refusé).
L'expression "origin.region_code" correspond au trafic provenant de Belgique.
-
Associez la stratégie de sécurité au service de backend.
gcloud compute backend-services update backend-service \
--security-policy="geoblocking-policy" \
--global
Remarque :
Cette commande associe la stratégie de sécurité au service de backend, ce qui applique les règles de la stratégie à tout le trafic dirigé vers le service de backend.
Tâche 7 : Tester le géoblocage à l'aide de ressources régionales
Vous allez maintenant tester la stratégie de sécurité Cloud Armor pour évaluer le géoblocage depuis plusieurs emplacements.
-
Créez une instance Compute Engine nommée test-vm-us dans le sous-réseau test-subnet-us.
gcloud compute instances create test-vm-us \
--subnet=test-subnet-us \
--machine-type=e2-medium \
--tags=iap-gce \
--zone={{{ project_0.default_zone | "ZONE" }}}
Remarque :
Cette commande crée une instance Compute Engine dans le sous-réseau spécifié.
-
Créez une instance Compute Engine nommée test-vm-europe dans le sous-réseau test-subnet-eu.
gcloud compute instances create test-vm-europe \
--subnet=test-subnet-eu \
--machine-type=e2-medium \
--tags=iap-gce \
--zone=europe-west1-b
Remarque :
Cette commande crée une instance Compute Engine dans le sous-réseau spécifié.
-
Récupérez l'adresse IP du service de backend.
BACKEND_IP=$(gcloud compute addresses describe global-ip-address --global --format='value(address)') && echo $BACKEND_IP
Remarque :
Cette commande récupère l'adresse IP associée au service de backend, qui sera utilisée pour tester le géoblocage.
-
Au cours des étapes suivantes, vous verrez peut-être une invite SSH semblable à celle ci-dessous.
Do you want to continue (Y/n)? Y
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Remarque :
La communication SSH initiale vous alertera d'une nouvelle connexion à l'hôte et vous demandera si vous souhaitez saisir une phrase secrète. Pour cet atelier, aucune phrase secrète n'est requise. Appuyez donc sur la touche Entrée pour confirmer.
-
Testez la règle de refus à partir d'une instance GCE située aux États-Unis.
gcloud compute ssh test-vm-us \
--zone={{{ project_0.default_zone | "ZONE" }}} \
--tunnel-through-iap \
--command "curl -v $BACKEND_IP"
Remarque :
Cette commande se connecte à l'instance américaine via SSH et utilise "curl" pour tester la stratégie de géoblocage. Une réponse "200 OK" indique que la requête provient des États-Unis.
RÉSULTAT ATTENDU
GET / HTTP/1.1
Host: 34.144.245.10
User-Agent: curl/7.88.1
Accept: */*
HTTP/1.1 200 OK
Date: Wed, 06 Aug 2025 04:02:08 GMT
Server: Apache/2.4.62 (Debian)
Content-Length: 65
Content-Type: text/html; charset=UTF-8
Via: 1.1 google
-
Testez la règle de refus à partir d'une instance GCE européenne.
gcloud compute ssh test-vm-europe \
--zone=europe-west1-b \
--tunnel-through-iap \
--command "curl -v $BACKEND_IP"
Remarque :
Cette commande se connecte à l'instance européenne via SSH et utilise "curl" pour tester la stratégie de géoblocage. Une erreur 403 (Accès interdit) est attendue.
RÉSULTAT ATTENDU
GET / HTTP/1.1
Host: 34.144.245.10
User-Agent: curl/7.88.1
Accept: */*
HTTP/1.1 403 Forbidden
Content-Length: 134
Content-Type: text/html; charset=UTF-8
Date: Wed, 06 Aug 2025 04:02:36 GMT
Félicitations !
Vous avez configuré Cloud Armor pour implémenter le géoblocage. Vous avez appris à créer et à appliquer des stratégies de sécurité, et à définir des règles basées sur l'origine géographique. Cet atelier vous donne les bases pour sécuriser vos applications Google Cloud avec Cloud Armor.
Autres ressources
Dernière mise à jour du manuel : 6 août 2025
Dernier test de l'atelier : 6 août 2025