1. Introduzione
Policy del firewall di rete
I firewall sono i componenti di base per un ambiente cloud sicuro. In precedenza, abbiamo introdotto i criteri firewall a livello di organizzazione e di cartella, lasciando invariati i firewall VPC. In questa versione, espanderemo la struttura dei criteri firewall fino al livello VPC e apporteremo diversi miglioramenti al supporto attuale dei criteri firewall per fornire un supporto firewall unificato nella gerarchia delle risorse di Google Cloud e un'esperienza utente coerente nella gestione del controllo dei criteri firewall in modo sicuro, flessibile e scalabile.
La policy firewall di rete funge da contenitore per le regole firewall. Le regole definite in una policy firewall di rete non vengono applicate da nessuna parte finché la policy non viene associata a una rete VPC. A ogni rete VPC può essere associato un criterio firewall di rete. Le policy firewall di rete supportano i tag gestiti da IAM (o semplicemente tag) nelle regole firewall, che sostituiscono i tag di rete attuali e possono essere utilizzati per fornire un'identità al workload.
La condivisione di un criterio firewall di rete tra più reti e l'integrazione con i tag gestiti da IAM semplificano notevolmente la configurazione e la gestione dei firewall.
Con l'introduzione del criterio firewall di rete, i criteri firewall di Google Cloud ora sono costituiti dai seguenti componenti:
- Policy firewall gerarchica
- Regole firewall VPC
- Policy firewall di rete ( globale e regionale)
I criteri firewall gerarchici sono supportati nei nodi dell'organizzazione e delle cartelle all'interno della gerarchia delle risorse, mentre le regole firewall VPC e i criteri firewall di rete vengono applicati a livello di VPC. Una grande differenza tra le regole firewall VPC e le policy firewall di rete è che le regole firewall VPC possono essere applicate solo a una singola rete VPC, mentre le policy firewall di rete possono essere associate a un singolo VPC o a un gruppo di VPC, tra gli altri vantaggi come l'aggiornamento batch.
Infine, abbiamo anche le regole firewall implicite incluse in ogni rete VPC:
- Una regola in uscita la cui azione è consentita e la cui destinazione è 0.0.0.0/0.
- Una regola di traffico in entrata la cui azione è deny, la cui origine è 0.0.0.0/0
Per impostazione predefinita, la sequenza di applicazione è mostrata nel seguente diagramma:

Tieni presente che l'ordine di applicazione tra le regole firewall VPC e i criteri firewall di rete globali può essere invertito. I clienti possono specificare l'ordine di applicazione in qualsiasi momento con un comando gcloud.
Tag
I nuovi tag integrati nelle regole dei criteri firewall di rete sono risorse di coppie chiave-valore definite a livello di organizzazione della gerarchia di risorse Google Cloud. Come suggerisce il nome, questo tag contiene un controllo dell'accesso IAM che specifica chi può fare cosa sul tag. Le autorizzazioni IAM, ad esempio, consentono di specificare quali entità possono assegnare valori ai tag e quali entità possono associare i tag alle risorse. Una volta applicato un tag a una risorsa, le regole firewall di rete possono utilizzarlo per consentire e negare il traffico.
I tag rispettano il modello di risorse di ereditarietà di Google Cloud, il che significa che i tag e i relativi valori vengono trasmessi nella gerarchia dagli elementi padre. Di conseguenza, i tag possono essere creati in un'unica posizione e poi utilizzati da altre cartelle e progetti in tutta la gerarchia delle risorse. Visita questa pagina per ulteriori dettagli su tag e limitazione dell'accesso.
I tag non devono essere confusi con i tag di rete, che sono stringhe che possono essere aggiunte alle istanze Compute Engine; sono associati all'istanza e scompaiono quando l'istanza viene ritirata. Le regole firewall VPC possono includere tag di rete, ma poiché non sono considerate risorse cloud, non sono soggette al controllo dell'accesso IAM.
Tieni presente che in questo documento i tag e i tag gestiti da IAM vengono utilizzati in modo intercambiabile.
Cosa creerai
Questo codelab è suddiviso in due parti: la prima mostra le policy firewall di rete e i tag utilizzando una singola rete VPC, mentre la seconda mostra come utilizzare i tag nelle reti VPC con peering come illustrato nel diagramma seguente. Pertanto, questo codelab richiede un singolo progetto e la possibilità di creare più reti VPC.

Cosa imparerai a fare
- Come creare una policy firewall di rete
- Come creare e utilizzare i tag con la policy firewall di rete
- Come utilizzare i tag tramite il peering di rete VPC
Che cosa ti serve
- Progetto Google Cloud
- Conoscenza del deployment delle istanze e della configurazione dei componenti di rete
- Conoscenza della configurazione del firewall VPC
2. Prima di iniziare
Creare/aggiornare le variabili
Questo codelab utilizza le variabili $per facilitare l'implementazione della configurazione gcloud in Cloud Shell.
In Cloud Shell, esegui le seguenti operazioni:
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. Crea rete VPC e subnet
Rete VPC
Crea fwpolicy-vpc1:
gcloud compute networks create $prefix-vpc1 --subnet-mode=custom
Subnet
Crea le rispettive subnet nella regione selezionata:
gcloud compute networks subnets create $prefix-vpc1-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc1 --region=$region
Cloud NAT
Crea i router Cloud e i gateway Cloud NAT per 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. Creare istanze
Crea una regola firewall che consenta il traffico SSH in entrata dagli intervalli IAP nel caso in cui non sia ancora stato definito nell'ambito della configurazione di 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
Crea le istanze client e server 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
Poiché non sono definite regole firewall VPC (a parte la regola per consentire SSH che avrebbe dovuto essere creata durante la configurazione di IAP come indicato all'inizio di questa sezione) e per impostazione predefinita tutto il traffico in entrata viene negato, le istanze client non potranno accedere ai rispettivi web server. Per verificare che la richiesta andrà in timeout, apri una nuova finestra e avvia una sessione SSH all'istanza fwpolicy-vpc1-client e prova a eseguire il comando curl sul server web:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Output previsto:
curl: (28) Connection timed out after 2001 milliseconds
(Facoltativo) Verifica che non siano definite regole firewall VPC per fwpolicy-vpc1 tramite Cloud Shell:
gcloud compute firewall-rules list --filter="network:$prefix-vpc1"
5. Policy firewall di rete globale
Crea una policy del firewall di rete globale:
gcloud compute network-firewall-policies create \ $prefix-example --description \ "firewall-policy-description" --global
Aggiungi una regola che consenta il traffico 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
Descrivi la policy firewall di rete e verifica che la regola sia stata added correttamente:
gcloud compute network-firewall-policies describe \
$prefix-example --global
Output previsto (scorri verso l'alto fino all'inizio dell'output; tieni presente che vengono visualizzate anche le regole implicite):
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
...
Associa la policy firewall di rete a fwpolicy-vpc1:
gcloud compute network-firewall-policies associations create \
--firewall-policy $prefix-example \
--network $prefix-vpc1 \
--name $prefix-vpc1-association \
--global-firewall-policy
Verifica che sia stata applicata correttamente alla rete fwpolicy-vpc1:
gcloud compute networks get-effective-firewalls $prefix-vpc1
Output previsto (tieni presente che se sono presenti policy firewall gerarchiche che hanno la precedenza, le regole pertinenti verranno visualizzate in alto):
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
Verifica che sia stata applicata correttamente anche al server web fwpolicy-vpc1:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
L'output previsto è simile a quello del comando precedente (fwpolicy-vpc1 firewall effettivi):
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
Torna alla sessione SSH vpc1-client e prova di nuovo a utilizzare curl (tieni presente che il comando riportato di seguito presuppone che sia stato utilizzato fwpolicy come prefisso; modifica il comando curl di conseguenza se è stato utilizzato un nome diverso):
user@vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2 Page on vpc1-www in network vpc1 zone us-central1-a
Da Cloud Shell, verifica che la policy firewall di rete sia applicata a fwpolicy-vpc1:
gcloud compute network-firewall-policies describe \ $prefix-example --global
Output previsto (scorri verso l'alto fino all'inizio dell'output):
--- associations: - attachmentTarget: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/fwpolicy-vpc1 name: fwpolicy-vpc1-association ...
6. Tag regolati da IAM
Un tag è una coppia chiave-valore che può essere collegata a un'organizzazione, una cartella o un progetto. Per ulteriori dettagli, consulta le sezioni Creazione e gestione dei tag e Autorizzazioni richieste.
Il ruolo tagAdmin consente di creare nuovi tag, aggiornare ed eliminare quelli esistenti. Un amministratore dell'organizzazione può concedere questo ruolo. Da Cloud Shell, aggiorna il criterio IAM per aggiungere il ruolo tagAdmin al tuo utente. Utilizza la pagina Riferimento alle autorizzazioni per vedere quali autorizzazioni sono incluse in ogni ruolo predefinito.
gcloud organizations add-iam-policy-binding $org_id \ --member user:[user@example.com] --role roles/resourcemanager.tagAdmin
Esegui il comando riportato di seguito per verificare quali utenti dispongono del ruolo resourcemanager.tagAdmin:
gcloud organizations get-iam-policy $org_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagAdmin
Crea una nuova chiave tag:
gcloud resource-manager tags keys create tags-vpc1 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc1
Output previsto:
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'
Crea nuovi valori dei tag:
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
Verifica che i valori dei tag siano stati creati correttamente:
gcloud resource-manager tags values list \ --parent=$org_id/tags-vpc1
Output previsto:
NAME SHORT_NAME DESCRIPTION tagValues/349564376683 web-servers tagValues/780363571446 web-clients
Da Cloud Shell, descrivi la regola del firewall di rete esistente per verificare che i tag non vengano utilizzati:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
Output previsto:
---
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
Da Cloud Shell, aggiorna la regola in modo da consentire solo il traffico dalla chiave tag vpc1-tags/web-clients e installa la regola sulle istanze con la chiave tag 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
Da Cloud Shell, descrivi la regola dei criteri firewall di rete esistente per verificare che i tag siano stati applicati correttamente e siano segnalati come EFFETTIVI:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
Output previsto:
---
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
Da Cloud Shell, verifichiamo che la regola sia stata applicata a vpc1:
gcloud compute networks get-effective-firewalls $prefix-vpc1
Output previsto:
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
Verifica che, anche se la policy firewall di rete è ancora associata alla rete VPC, la regola che consente il traffico web non venga più applicata al web server, perché il tag non è stato aggiunto alle istanze:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Output previsto (tieni presente che la regola firewall con priorità 500 non viene visualizzata):
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
Concedi il ruolo Utente tag al tag e all'utente specifici. Utilizza la pagina Riferimento alle autorizzazioni per vedere quali autorizzazioni sono incluse in ogni ruolo predefinito.
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
Verifica che il ruolo sia stato aggiunto correttamente:
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
Output previsto:
bindings: - members: - user:[user] role: roles/resourcemanager.tagUser ...
Applica il tag all'istanza 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
Output previsto:
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
Verifica le associazioni:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
Output previsto:
namespacedTagKey: ORGANIZATION_ID/tags-vpc1 namespacedTagValue: ORGANIZATION_ID/tags-vpc1/web-servers tagKey: tagKeys/622132302133 tagValue: tagValues/349564376683
Verifica di nuovo le regole firewall effettive:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Output previsto:
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
Torna alla scheda della sessione SSH fwpolicy-vpc1-client e prova a eseguire curl:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Sei riuscito a connetterti?
Per verificarlo, aggiorna la regola per rimuovere i criteri CIDR di origine tramite 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
Torna alla scheda della sessione SSH fwpolicy-vpc1-client e riprova:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Questa volta la connessione dovrebbe scadere, poiché il tag non è stato aggiunto a fwpolicy-vpc1-client. Aggiungilo da Cloud Shell e riprova.
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
Torna alla scheda della sessione SSH fwpolicy-vpc1-client e riprova. Ora l'operazione dovrebbe riuscire.
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
7. Tag regolati da IAM tramite il peering di rete VPC
Da Cloud Shell, crea un nuovo VPC, una nuova subnet e un nuovo client e configura il peering di rete VPC tra le reti:
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
Crea una regola firewall che consenta il traffico SSH in entrata dagli intervalli IAP nel caso in cui non sia ancora stato definito nell'ambito della configurazione di 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
Anche se i tag sono oggetti a livello di organizzazione, le chiavi tag sono associate a un VPC specifico e pertanto non possono essere applicate a istanze in reti diverse. Pertanto, è necessario creare una nuova chiave e un nuovo valore del tag applicabili a 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
Applica il nuovo tag all'istanza 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
(Facoltativo) Elenca i binding di 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
Output previsto:
namespacedTagKey: ORGANIZATION_ID/tags-vpc2 namespacedTagValue: ORGANIZATION_ID/tags-vpc2/web-clients tagKey: tagKeys/916316350251 tagValue: tagValues/633150043992
Da Cloud Shell, descrivi la regola della policy del firewall di rete esistente per verificare che i nuovi tag non vengano utilizzati:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
Output previsto:
---
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
Aggiorna la regola firewall esistente per consentire i tag della rete VPC sottoposta a peering:
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
Descrivi la regola firewall per assicurarti che sia stata applicata correttamente e che sia segnalata come EFFICACE:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
Output previsto:
---
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
Scopri l'IP di fwpolicy-vpc1-www tramite il comando gcloud riportato di seguito:
gcloud compute instances list --filter=vpc1-www
Connettiti a fwpolicy-vpc2-client tramite SSH e prova a eseguire il comando curl sull'IP di fwpolicy-vpc1:
user@fwpolicy-vpc2-client$ curl [fwpolicy-vpc1-www_IP] --connect-timeout 2
Dovresti essere in grado di connetterti al server fwpolicy-vpc1-www. Vai alla sezione successiva per i passaggi di pulizia.
8. Procedura di pulizia
Da Cloud Shell, rimuovi le istanze, Cloud NAT e 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
Rimuovi il criterio firewall di rete globale e i tag:
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
Esegui i passaggi riportati di seguito se i ruoli tagAdmin e tagUsers sono stati modificati:
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
Infine, rimuovi i peering di rete VPC, le subnet e le reti 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. Complimenti!
Congratulazioni, hai configurato e convalidato correttamente una policy del firewall di rete globale con la configurazione dei tag.