1. Introduction
Stratégies de pare-feu réseau
Les pare-feu sont les composants de base d'un environnement cloud sécurisé. Nous avons vu précédemment comment les stratégies de pare-feu s'appliquent à l'échelle de l'organisation et des dossiers, sans modifier les pare-feu VPC. Dans cette version, nous allons étendre la structure des règles de pare-feu au niveau du VPC et apporter plusieurs améliorations à la prise en charge actuelle des règles de pare-feu afin de fournir une prise en charge unifiée des pare-feu dans la hiérarchie des ressources de Google Cloud et une expérience utilisateur cohérente dans la gestion du contrôle des règles de pare-feu de manière sécurisée, flexible et évolutive.
La stratégie de pare-feu réseau sert de conteneur pour les règles de pare-feu. Les règles définies dans une stratégie de pare-feu réseau ne sont appliquées nulle part tant que la stratégie n'est pas associée à un réseau VPC. Chaque réseau VPC peut avoir une stratégie de pare-feu réseau associée. Les stratégies de pare-feu réseau acceptent les tags gérés par IAM (ou simplement des tags) dans les règles de pare-feu, qui remplacent les tags réseau actuels et peuvent être utilisés pour fournir une identité à la charge de travail.
Le partage d'une stratégie de pare-feu réseau entre les réseaux et l'intégration avec les tags gérés par IAM simplifient grandement la configuration et la gestion des pare-feu.
Avec l'introduction de la stratégie de pare-feu réseau, les stratégies de pare-feu de Google Cloud se composent désormais des composants suivants:
- Stratégie de pare-feu hiérarchique
- Règles de pare-feu VPC
- Stratégie de pare-feu réseau ( mondiale et régionale)
Les stratégies de pare-feu hiérarchiques sont prises en charge au niveau des nœuds d'organisation et de dossier de la hiérarchie des ressources, tandis que les règles de pare-feu VPC et les stratégies de pare-feu réseau sont appliquées au niveau du VPC. Les règles de pare-feu VPC et les stratégies de pare-feu réseau présentent une grande différence : les règles de pare-feu VPC ne peuvent être appliquées qu'à un seul réseau VPC, tandis que les stratégies de pare-feu réseau peuvent être associées à un seul VPC ou à un groupe de VPC, entre autres avantages comme la mise à jour par lot.
Enfin, nous avons également les règles de pare-feu implicites qui accompagnent chaque réseau VPC:
- Une règle de sortie dont l'action est "allow" et dont la destination est 0.0.0.0/0
- Une règle d'entrée dont l'action est "deny", dont la source est 0.0.0.0/0
Par défaut, la séquence d'application est illustrée dans le schéma suivant:
Notez que l'ordre d'application entre les règles de pare-feu VPC et la stratégie de pare-feu réseau mondiale peut être inversé. Les clients peuvent spécifier l'ordre d'application à tout moment à l'aide d'une commande gcloud.
Tags
Les nouveaux tags intégrés aux règles des stratégies de pare-feu réseau sont des ressources de paires clé-valeur définies au niveau de l'organisation de la hiérarchie des ressources Google Cloud. Comme son nom l'indique, un tel tag contient un contrôle des accès IAM qui spécifie qui peut faire quoi sur le tag. Les autorisations IAM, par exemple, permettent de spécifier les comptes principaux qui peuvent attribuer des valeurs aux tags et quels comptes principaux peuvent associer des tags aux ressources. Une fois qu'un tag a été appliqué à une ressource, les règles de pare-feu réseau peuvent l'utiliser pour autoriser et refuser le trafic.
Les tags respectent le modèle de ressource d'héritage de Google Cloud, ce qui signifie que les tags et leurs valeurs sont transmis à la hiérarchie par leurs parents. Par conséquent, les tags peuvent être créés à un seul et même endroit, puis utilisés par d'autres dossiers et projets dans toute la hiérarchie des ressources. Pour en savoir plus sur les tags et les restrictions d'accès, consultez cette page.
Les tags ne doivent pas être confondus avec les tags réseau, qui sont des chaînes pouvant être ajoutées aux instances Compute Engine. Ils sont associés à l'instance et disparaissent lorsqu'elle est mise hors service. Les règles de pare-feu VPC peuvent inclure des tags réseau, mais comme ils ne sont pas considérés comme des ressources cloud, ils ne sont pas soumis au contrôle d'accès IAM.
Notez que les termes "tags" et "tags gérés par IAM" sont utilisés de manière interchangeable dans ce document.
Objectifs de l'atelier
Cet atelier de programmation se compose de deux parties : la première présente les stratégies de pare-feu réseau et les tags à l'aide d'un seul réseau VPC, et la seconde explique comment utiliser des tags sur des réseaux VPC appairés, comme illustré dans le schéma ci-dessous. Par conséquent, cet atelier de programmation nécessite un seul projet et la possibilité de créer plusieurs réseaux VPC.
Points abordés
- Créer une stratégie de pare-feu réseau
- Créer et utiliser des tags avec une stratégie de pare-feu réseau
- Utiliser des tags avec l'appairage de réseaux VPC
Prérequis
- Projet Google Cloud
- Connaissances du déploiement d'instances et de la configuration des composants réseau
- Connaissances de la configuration des pare-feu VPC
2. Avant de commencer
Créer/Mettre à jour des variables
Cet atelier de programmation utilise des $variables pour faciliter l'implémentation de la configuration gcloud dans Cloud Shell.
Dans Cloud Shell, procédez comme suit:
gcloud config set project [project-id] export project_id=`gcloud config list --format="value(core.project)"` export org_id=[org] export region=us-central1 export zone=us-central1-a export prefix=fwpolicy
3. Créer un réseau et un sous-réseau VPC
Réseau VPC
Créez fwpolicy-vpc1 :
gcloud compute networks create $prefix-vpc1 --subnet-mode=custom
Sous-réseaux
Créez les sous-réseaux correspondants dans la région sélectionnée:
gcloud compute networks subnets create $prefix-vpc1-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc1 --region=$region
Cloud NAT
Créez les routeurs Cloud et les passerelles Cloud NAT pour fwpolicy-pc1:
gcloud compute routers create $prefix-vpc1-cr \ --region=$region --network=$prefix-vpc1 gcloud compute routers nats create $prefix-vpc1-cloudnat \ --router=$prefix-vpc1-cr --router-region=$region \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
4. Créer des instances
Créez une règle de pare-feu autorisant le trafic SSH entrant à partir des plages d'IAP si elle n'a pas encore été définie lors de la configuration de l'IAP:
gcloud compute firewall-rules create allow-ssh-ingress-from-iap-vpc1 \ --direction=INGRESS \ --action=allow \ --network=$prefix-vpc1 \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
Créez les instances client et serveur Web fwpolicy-vpc1:
gcloud compute instances create $prefix-vpc1-www \ --subnet=$prefix-vpc1-subnet --no-address --zone $zone \ --metadata startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl # Read VM network configuration: md_vm="http://169.254.169.254/computeMetadata/v1/instance/" vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )" filter="{print \$NF}" vm_network="$(curl $md_vm/network-interfaces/0/network \ -H "Metadata-Flavor:Google" | awk -F/ "${filter}")" vm_zone="$(curl $md_vm/zone \ -H "Metadata-Flavor:Google" | awk -F/ "${filter}")" # Apache configuration: echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \ tee /var/www/html/index.html systemctl restart apache2' gcloud compute instances create $prefix-vpc1-client \ --subnet=$prefix-vpc1-subnet --no-address --zone $zone
Aucune règle de pare-feu VPC n'étant définie (à l'exception de la règle d'autorisation de SSH qui aurait dû être créée lors de la configuration de l'IAP au début de cette section), et par défaut, tout trafic entrant étant refusé, les instances clientes ne pourront pas accéder aux serveurs Web respectifs. Pour vérifier que la requête expire, ouvrez une nouvelle fenêtre et lancez une session SSH sur l'instance fwpolicy-vpc1-client, puis essayez d'exécuter curl sur le serveur Web:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Résultat attendu :
curl: (28) Connection timed out after 2001 milliseconds
Vous pouvez également vérifier qu'aucune règle de pare-feu VPC n'est définie pour fwpolicy-vpc1 via Cloud Shell:
gcloud compute firewall-rules list --filter="network:$prefix-vpc1"
5. Stratégie de pare-feu de réseau mondial
Créez une stratégie de pare-feu réseau au niveau mondial:
gcloud compute network-firewall-policies create \ $prefix-example --description \ "firewall-policy-description" --global
Ajoutez une règle autorisant le trafic Web:
gcloud compute network-firewall-policies rules create 500 \ --action allow \ --description "allow-web" \ --layer4-configs tcp:80,tcp:443 \ --firewall-policy $prefix-example \ --src-ip-ranges 10.0.0.0/16 \ --global-firewall-policy --enable-logging
Décrivez la stratégie de pare-feu réseau et vérifiez que la règle a bien été added
:
gcloud compute network-firewall-policies describe \ $prefix-example --global
Résultat attendu (faites défiler la page vers le haut jusqu'au début de la sortie. Notez que les règles implicites s'affichent également):
creationTimestamp: '2022-09-23T12:46:53.677-07:00' description: "firewall-policy-description" fingerprint: Np1Rup09Amc= id: '7021772628738421698' kind: compute#firewallPolicy name: fwpolicy-example ruleTupleCount: 13 rules: - action: allow description: allow-web direction: INGRESS disabled: false enableLogging: true kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcIpRanges: - 10.0.0.0/16 priority: 500 ruleTupleCount: 5 ...
Associez la stratégie de pare-feu réseau à fwpolicy-vpc1:
gcloud compute network-firewall-policies associations create \ --firewall-policy $prefix-example \ --network $prefix-vpc1 \ --name $prefix-vpc1-association \ --global-firewall-policy
Vérifiez qu'elle a bien été appliquée au réseau fwpolicy-vpc1:
gcloud compute networks get-effective-firewalls $prefix-vpc1
Résultat attendu (notez que si des stratégies de pare-feu hiérarchiques ont la priorité, les règles pertinentes s'affichent en haut):
TYPE FIREWALL_POLICY_NAME PRIORITY ACTION DIRECTION IP_RANGES network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
Vérifiez qu'il a également été appliqué au serveur Web fwpolicy-vpc1:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Le résultat attendu est semblable à celui de la commande précédente (pare-feu efficaces fwpolicy-vpc1):
TYPE FIREWALL_POLICY_NAME PRIORITY ACTION DIRECTION IP_RANGES network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
Revenez à la session SSH vpc1-client et réessayez de curl (notez que la commande ci-dessous suppose que fwpolicy
a été utilisé comme préfixe. Veuillez ajuster la commande curl
en conséquence si un autre nom a été utilisé à la place):
user@vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2 Page on vpc1-www in network vpc1 zone us-central1-a
Dans Cloud Shell, vérifiez que la stratégie de pare-feu réseau est appliquée à fwpolicy-vpc1:
gcloud compute network-firewall-policies describe \ $prefix-example --global
Résultat attendu (faites défiler la page vers le haut jusqu'au début de la sortie):
--- associations: - attachmentTarget: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/fwpolicy-vpc1 name: fwpolicy-vpc1-association ...
6. Tags gérés par IAM
Un tag est une paire clé-valeur pouvant être associée à une organisation, un dossier ou un projet. Pour en savoir plus, consultez Créer et gérer des tags et les autorisations requises.
Le rôle tagAdmin vous permet de créer des tags, de les mettre à jour et de les supprimer. Un administrateur de l'organisation peut attribuer ce rôle. Dans Cloud Shell, modifiez la stratégie IAM pour ajouter le rôle tagAdmin à votre utilisateur. Consultez la page Documentation de référence sur les autorisations pour connaître les autorisations incluses dans chaque rôle prédéfini.
gcloud organizations add-iam-policy-binding $org_id \ --member user:[user@example.com] --role roles/resourcemanager.tagAdmin
Exécutez la commande ci-dessous pour vérifier quels utilisateurs disposent du rôle resourcemanager.tagAdmin:
gcloud organizations get-iam-policy $org_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagAdmin
Créez une clé de balise:
gcloud resource-manager tags keys create tags-vpc1 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc1
Résultat attendu :
Waiting for TagKey [tags-vpc1] to be created...done. createTime: '2022-09-23T20:49:01.162228Z' etag: PwvmFuHO4wK1y6c5Ut2n5w== name: tagKeys/622132302133 namespacedName: ORGANIZATION_ID/tags-vpc1 parent: organizations/ORGANIZATION_ID purpose: GCE_FIREWALL purposeData: network: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/6749205358365096383 shortName: tags-vpc1 updateTime: '2022-09-23T20:49:03.873776Z'
Créez des valeurs de balise:
gcloud resource-manager tags values create web-servers \ --parent=$org_id/tags-vpc1 gcloud resource-manager tags values create web-clients \ --parent=$org_id/tags-vpc1
Vérifiez que les valeurs des balises ont bien été créées:
gcloud resource-manager tags values list \ --parent=$org_id/tags-vpc1
Résultat attendu :
NAME SHORT_NAME DESCRIPTION tagValues/349564376683 web-servers tagValues/780363571446 web-clients
Dans Cloud Shell, décrivez la règle de stratégie de pare-feu réseau existante pour vérifier qu'aucune balise n'est utilisée:
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
Résultat attendu :
--- action: allow description: allow-web direction: INGRESS disabled: false enableLogging: true kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcIpRanges: - 10.0.0.0/16 priority: 500 ruleTupleCount: 5
Dans Cloud Shell, modifiez la règle pour n'autoriser que le trafic provenant de la clé de balise vpc1-tags/web-clients, puis installez la règle sur les instances avec la clé de balise vpc1-tags/web-servers.
gcloud compute network-firewall-policies rules update 500 \ --firewall-policy $prefix-example \ --src-secure-tags $org_id/tags-vpc1/web-clients \ --target-secure-tags $org_id/tags-vpc1/web-servers \ --global-firewall-policy
Dans Cloud Shell, décrivez la règle de stratégie de pare-feu réseau existante pour vérifier que les tags ont bien été appliqués et sont signalés comme EFFICACES:
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
Résultat attendu :
--- action: allow description: allow-web direction: INGRESS disabled: false enableLogging: false kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcIpRanges: - 10.0.0.0/16 srcSecureTags: - name: tagValues/479619031616 state: EFFECTIVE priority: 500 ruleTupleCount: 7 targetSecureTags: - name: tagValues/230424970229 state: EFFECTIVE
Dans Cloud Shell, vérifions que la règle a été appliquée à vpc1:
gcloud compute networks get-effective-firewalls $prefix-vpc1
Résultat attendu :
network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
Vérifiez que, même si la stratégie de pare-feu réseau est toujours associée au réseau VPC, la règle qui autorise le trafic Web n'est plus appliquée au serveur Web, car la balise n'a pas été ajoutée aux instances:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Résultat attendu (notez que la règle de pare-feu de priorité 500 n'est pas affichée):
network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
Attribuez le rôle "Utilisateur de tags" à la balise et à l'utilisateur spécifiques. Consultez la page Documentation de référence sur les autorisations pour connaître les autorisations incluses dans chaque rôle prédéfini.
gcloud resource-manager tags keys add-iam-policy-binding \ $org_id/tags-vpc1 \ --member user:[email] --role roles/resourcemanager.tagUser gcloud projects add-iam-policy-binding $project_id \ --member user:[email] --role roles/resourcemanager.tagUser
Vérifiez que le rôle a bien été ajouté:
gcloud resource-manager tags keys get-iam-policy $org_id/tags-vpc1 gcloud projects get-iam-policy $project_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagUser
Résultat attendu :
bindings: - members: - user:[user] role: roles/resourcemanager.tagUser ...
Appliquez la balise à l'instance fwpolicy-vpc1-www:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc1/web-servers \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
Résultat attendu :
Waiting for TagBinding for parent [//compute.googleapis.com/projects/PROJECT_ID/zones/us-central1-a/instances/38369703403698502] and tag value [tagValues/34 9564376683] to be created with [operations/rctb.us-central1-a.6144808968019372877]...done. done: true metadata: '@type': type.googleapis.com/google.cloud.resourcemanager.v3.CreateTagBindingMetadata name: operations/rctb.us-central1-a.6144808968019372877 response: '@type': type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding name: tagBindings/%2F%2Fcompute.googleapis.com%2Fprojects%2FPROJECT_NUMBER%2Fzones%2Fus-central1-a%2Finstances%2F38369703403698502/tagValues/349564376683 parent: //compute.googleapis.com/projects/PROJECT_NUMBER/zones/us-central1-a/instances/38369703403698502 tagValue: tagValues/349564376683
Vérifiez les liaisons:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
Résultat attendu :
namespacedTagKey: ORGANIZATION_ID/tags-vpc1 namespacedTagValue: ORGANIZATION_ID/tags-vpc1/web-servers tagKey: tagKeys/622132302133 tagValue: tagValues/349564376683
Vérifiez à nouveau les règles de pare-feu efficaces:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Résultat attendu :
network-firewall-policy fwpolicy-example 490 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
Revenez à l'onglet de la session SSH fwpolicy-vpc1-client et essayez de curl:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Avez-vous réussi à vous connecter ?
Pour vérifier cela, modifiez la règle afin de supprimer les critères CIDR source via Cloud Shell.
gcloud compute network-firewall-policies rules update 500 \ --firewall-policy $prefix-example \ --src-ip-ranges "" \ --global-firewall-policy gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy action: allow description: allow-web direction: INGRESS disabled: false enableLogging: false kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcSecureTags: - name: tagValues/479619031616 state: EFFECTIVE priority: 490 ruleTupleCount: 7 targetSecureTags: - name: tagValues/230424970229 state: EFFECTIVE
Revenez à l'onglet de la session SSH fwpolicy-vpc1-client et réessayez:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
La connexion devrait expirer cette fois, car le tag n'a pas été ajouté à fwpolicy-vpc1-client. Ajoutez-le dans Cloud Shell, puis réessayez.
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc1/web-clients \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-client
Revenez à l'onglet de la session SSH fwpolicy-vpc1-client et réessayez. Vous devriez maintenant réussir.
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
7. Tags gérés par IAM via l'appairage de réseaux VPC
Dans Cloud Shell, créez un VPC, un sous-réseau et un client, puis configurez l'appairage de réseaux VPC entre les réseaux:
gcloud compute networks create $prefix-vpc2 --subnet-mode=custom gcloud compute networks subnets create $prefix-vpc2-subnet \ --range=10.0.1.0/24 --network=$prefix-vpc2 --region=$region gcloud compute instances create $prefix-vpc2-client \ --subnet=$prefix-vpc2-subnet --no-address --zone $zone gcloud compute networks peerings create vpc1-to-vpc2 \ --network=$prefix-vpc1 \ --peer-project $project_id \ --peer-network $prefix-vpc2 gcloud compute networks peerings create vpc2-to-vpc1 \ --network=$prefix-vpc2 \ --peer-project $project_id \ --peer-network $prefix-vpc1
Créez une règle de pare-feu autorisant le trafic SSH entrant à partir des plages d'IAP si elle n'a pas encore été définie lors de la configuration de l'IAP:
gcloud compute firewall-rules create allow-ssh-ingress-from-iap-vpc2 \ --direction=INGRESS \ --action=allow \ --network=$prefix-vpc2 \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
Même si les tags sont des objets au niveau de l'organisation, les clés de tag sont associées à un VPC spécifique et ne peuvent donc pas être appliquées aux instances de différents réseaux. Vous devez donc créer une clé et une valeur de tag applicables à vpc2:
gcloud resource-manager tags keys create tags-vpc2 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc2 gcloud resource-manager tags values create web-clients \ --parent=$org_id/tags-vpc2
Appliquez la nouvelle balise à l'instance fwpolicy-vpc2-client:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc2/web-clients \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc2-client
Vous pouvez également lister les liaisons de fwpolicy-vpc2-client:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc2-client
Résultat attendu :
namespacedTagKey: ORGANIZATION_ID/tags-vpc2 namespacedTagValue: ORGANIZATION_ID/tags-vpc2/web-clients tagKey: tagKeys/916316350251 tagValue: tagValues/633150043992
Dans Cloud Shell, décrivez la règle de stratégie de pare-feu réseau existante pour vérifier que les nouveaux tags ne sont pas utilisés:
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
Résultat attendu :
--- action: allow description: allow-web direction: INGRESS disabled: false enableLogging: true kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcSecureTags: - name: tagValues/479619031616 state: EFFECTIVE priority: 500 ruleTupleCount: 6 targetSecureTags: - name: tagValues/230424970229 state: EFFECTIVE
Mettez à jour la règle de pare-feu existante pour autoriser les tags du réseau VPC appairé:
gcloud compute network-firewall-policies rules update 500 \ --firewall-policy $prefix-example \ --src-secure-tags $org_id/tags-vpc1/web-clients,$org_id/tags-vpc2/web-clients \ --global-firewall-policy
Décrivez la règle de pare-feu pour vous assurer qu'elle a bien été appliquée et qu'elle est signalée comme EFFICACE:
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
Résultat attendu :
--- action: allow description: allow-web direction: INGRESS disabled: false enableLogging: false kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcSecureTags: - name: tagValues/479619031616 state: EFFECTIVE - name: tagValues/633150043992 state: EFFECTIVE priority: 500 ruleTupleCount: 7 targetSecureTags: - name: tagValues/230424970229 state: EFFECTIVE
Découvrez l'adresse IP de fwpolicy-vpc1-www à l'aide de la commande gcloud ci-dessous:
gcloud compute instances list --filter=vpc1-www
Connectez-vous à fwpolicy-vpc2-client via SSH et essayez d'exécuter curl sur l'adresse IP de fwpolicy-vpc1:
user@fwpolicy-vpc2-client$ curl [fwpolicy-vpc1-www_IP] --connect-timeout 2
Vous devriez pouvoir vous connecter au serveur fwpolicy-vpc1-www. Passez à la section suivante pour connaître la procédure de nettoyage.
8. Procédure de nettoyage
Dans Cloud Shell, supprimez les instances, Cloud NAT et Cloud Router:
gcloud -q compute instances delete $prefix-vpc2-client --zone=$zone gcloud -q compute instances delete $prefix-vpc1-client --zone=$zone gcloud -q compute instances delete $prefix-vpc1-www --zone=$zone gcloud -q compute routers nats delete $prefix-vpc1-cloudnat \ --router=$prefix-vpc1-cr --router-region=$region gcloud -q compute routers delete $prefix-vpc1-cr --region=$region
Supprimez la stratégie de pare-feu réseau globale et les tags:
gcloud -q resource-manager tags values delete \ $org_id/tags-vpc2/web-clients gcloud -q resource-manager tags keys delete $org_id/tags-vpc2 gcloud -q resource-manager tags values delete \ $org_id/tags-vpc1/web-servers gcloud -q resource-manager tags values delete \ $org_id/tags-vpc1/web-clients gcloud -q resource-manager tags keys delete $org_id/tags-vpc1 gcloud -q compute network-firewall-policies associations delete \ --firewall-policy $prefix-example \ --name $prefix-vpc1-association \ --global-firewall-policy gcloud -q compute network-firewall-policies delete \ $prefix-example --global gcloud -q compute firewall-rules delete allow-ssh-ingress-from-iap-vpc1 gcloud -q compute firewall-rules delete allow-ssh-ingress-from-iap-vpc2
Suivez les étapes ci-dessous si les rôles tagAdmin et tagUsers ont été modifiés:
gcloud organizations remove-iam-policy-binding $org_id \ --member user:[email] --role roles/resourcemanager.tagAdmin gcloud organizations remove-iam-policy-binding $org_id \ --member user:[email] --role roles/resourcemanager.tagUser
Enfin, supprimez les appairages de réseaux VPC, les sous-réseaux et les réseaux VPC:
gcloud -q compute networks peerings delete vpc1-to-vpc2 \ --network $prefix-vpc1 gcloud -q compute networks peerings delete vpc2-to-vpc1 \ --network $prefix-vpc2 gcloud -q compute networks subnets delete $prefix-vpc1-subnet \ --region $region gcloud -q compute networks subnets delete $prefix-vpc2-subnet \ --region $region gcloud -q compute networks delete $prefix-vpc1 gcloud -q compute networks delete $prefix-vpc2
9. Félicitations !
Félicitations, vous avez correctement configuré et validé une stratégie de pare-feu réseau au niveau mondial avec la configuration des tags.