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é. 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é.

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 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.

7e9c09a008e04656.png

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

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 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 :

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. Notez les instances qui commencent par us-east1-mig. Elles font partie des 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 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) > cliquez sur Services réseau > 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 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".
  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. Dans "Vérification de l'état", sélectionnez "Créer une vérification d'é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 de l'interface".
  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. Examinez les services de backend et l'interface.

30b06910bf7fae29.png

  1. Cliquez sur "Créer".
  2. Attendez quelques 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 (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é.

  1. 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.

f93410e9568f1f32.png

À 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

  1. É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é.
  2. 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