1. Introducción
Políticas de firewall de red
Los firewalls son los componentes básicos para un entorno de nube seguro. Anteriormente, presentamos las políticas de firewall a nivel de la organización y de la carpeta, sin modificar los firewalls de VPC. En esta versión, expandiremos la estructura de la política de firewall hasta el nivel de VPC y realizaremos varias mejoras en la compatibilidad actual con la política de firewall para proporcionar una compatibilidad unificada con el firewall en toda la jerarquía de recursos de Google Cloud y una experiencia del usuario coherente en la administración de su control de políticas de firewall de una manera segura, flexible y escalable.
La política de firewall de red funciona como un contenedor para las reglas de firewall. Las reglas definidas en una política de firewall de red no se aplican en ningún lugar hasta que la política se asocia con una red de VPC. Cada red de VPC puede tener una política de firewall de red asociada. Estas políticas admiten etiquetas controladas por IAM (o solo etiquetas de políticas) en las reglas de firewall, que reemplazan las etiquetas de red actuales y se pueden usar para proporcionar identidad a la carga de trabajo.
Compartir una política de firewall de red en varias redes y la integración con etiquetas controladas por IAM simplifica en gran medida la configuración y administración de firewalls.
Con la introducción de la política de firewall de red, las políticas de firewall de Google Cloud ahora constan de los siguientes componentes:
- Política de firewall jerárquica
- Reglas de firewall de VPC
- Política de firewall de red ( global y regional)
Las políticas de firewall jerárquicas se admiten en los nodos de la organización y de la carpeta dentro de la jerarquía de recursos, mientras que las reglas de firewall de VPC y las políticas de firewall de red se aplican a nivel de VPC. Una gran diferencia entre las reglas de firewall de VPC y las políticas de firewall de red es que las primeras solo se pueden aplicar a una sola red de VPC, mientras que las políticas se pueden adjuntar a una sola VPC o a un grupo de VPC, entre otros beneficios como la actualización por lotes.
Por último, también tenemos las reglas de firewall implícitas que vienen con cada red de VPC:
- Una regla de salida con acción de permitir, con destino 0.0.0.0/0
- Una regla de entrada cuya acción es denegar, el origen es 0.0.0.0/0
De forma predeterminada, la secuencia de aplicación se muestra en el siguiente diagrama:

Ten en cuenta que se puede intercambiar el orden de aplicación entre las reglas de firewall de VPC y la política de firewall de red global. Los clientes pueden especificar el orden de aplicación en cualquier momento con un comando de gcloud.
Etiquetas
Las nuevas etiquetas integradas en las reglas de políticas de firewall de red son recursos de pares clave-valor definidos en el nivel de organización de la jerarquía de recursos de Google Cloud. Una etiqueta de este tipo contiene un control de acceso de IAM que especifica quién puede hacer qué en la etiqueta. Por ejemplo, los permisos de IAM permiten especificar qué cuentas principales pueden asignar valores a las etiquetas y cuáles pueden adjuntar etiquetas a los recursos. Una vez que se aplica una etiqueta de política a un recurso, las reglas de firewall de red pueden usarla para permitir y denegar el tráfico.
Las etiquetas de política se adhieren al modelo de recursos de herencia de Google Cloud, lo que significa que las etiquetas y sus valores se transmiten a través de la jerarquía desde sus elementos superiores. Como resultado, las etiquetas pueden crearse en un lugar y usarse en otras carpetas y proyectos en toda la jerarquía de recursos. Visita esta página para obtener más detalles sobre las etiquetas y la restricción de acceso.
Las etiquetas no se deben confundir con las etiquetas de red. Estas últimas son cadenas que se pueden agregar a las instancias de Compute Engine. Se asocian con la instancia y desaparecen cuando se retira. Las reglas de firewall de VPC pueden incluir etiquetas de red, pero como no se consideran recursos de la nube, no están sujetas al control de acceso de IAM.
Ten en cuenta que las etiquetas y las etiquetas controladas por IAM se usan indistintamente en este documento.
Qué compilarás
Este codelab tiene dos partes: la primera muestra las políticas de firewall de red y las etiquetas con una sola red de VPC, y la segunda muestra cómo usar etiquetas en redes de VPC con intercambio de tráfico según el diagrama que se muestra a continuación. Por lo tanto, este codelab requiere un solo proyecto y la capacidad de crear varias redes de VPC.

Qué aprenderás
- Cómo crear una política de firewall de red
- Cómo crear y usar etiquetas con la política de firewall de red
- Cómo usar etiquetas en el intercambio de tráfico entre redes de VPC
Requisitos
- Proyecto de Google Cloud
- Conocimiento sobre la implementación de instancias y la configuración de componentes de red
- Conocimiento de la configuración del firewall de VPC
2. Antes de comenzar
Crea o actualiza variables
Este codelab usa $variables para ayudar a la implementación de la configuración de gcloud en Cloud Shell.
Dentro de Cloud Shell, haz lo siguiente:
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 una red y subred de VPC
Red de VPC
Crea fwpolicy-vpc1:
gcloud compute networks create $prefix-vpc1 --subnet-mode=custom
Subredes
Crea las subredes respectivas en la región seleccionada:
gcloud compute networks subnets create $prefix-vpc1-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc1 --region=$region
Cloud NAT
Crea los Cloud Routers y las puertas de enlace de Cloud NAT para 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. Crea instancias
Crea una regla de firewall que permita el tráfico SSH de entrada desde los rangos de IAP en caso de que aún no se haya definido como parte de la configuración de 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 las instancias de cliente y servidor 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
Como no hay reglas de firewall de VPC definidas (aparte de la regla de SSH de permiso que se debería haber creado cuando se configuró IAP según el comienzo de esta sección) y, de forma predeterminada, se deniega todo el tráfico de entrada, las instancias de cliente no podrán acceder a los servidores web respectivos. Para verificar que la solicitud agotará el tiempo de espera, abre una ventana nueva y, luego, inicia una sesión SSH en la instancia fwpolicy-vpc1-client y trata de hacer curl en el servidor web:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Resultado esperado:
curl: (28) Connection timed out after 2001 milliseconds
De manera opcional, verifica que no haya reglas de firewall de VPC definidas para fwpolicy-vpc1 a través de Cloud Shell:
gcloud compute firewall-rules list --filter="network:$prefix-vpc1"
5. Política de firewall de red global
Crea una política de firewall de red global:
gcloud compute network-firewall-policies create \ $prefix-example --description \ "firewall-policy-description" --global
Agrega una regla que permita el tráfico 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
Describe la política de firewall de red y verifica que la regla se haya added correctamente:
gcloud compute network-firewall-policies describe \
$prefix-example --global
Resultado esperado (desplázate hacia arriba hasta el comienzo del resultado; ten en cuenta que también se muestran las reglas implícitas):
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
...
Asocia la política de firewall de red a fwpolicy-vpc1:
gcloud compute network-firewall-policies associations create \
--firewall-policy $prefix-example \
--network $prefix-vpc1 \
--name $prefix-vpc1-association \
--global-firewall-policy
Valida que se haya aplicado correctamente a la red fwpolicy-vpc1:
gcloud compute networks get-effective-firewalls $prefix-vpc1
Resultado esperado (ten en cuenta que, si hay políticas de firewall jerárquicas que tienen prioridad, las reglas pertinentes se mostrarán en la parte superior):
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
Valida que también se haya aplicado correctamente al servidor web fwpolicy-vpc1:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
El resultado esperado es similar al comando anterior (firewalls efectivos de 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
Vuelve a la sesión SSH de vpc1-client y trata de hacer curl de nuevo (ten en cuenta que el siguiente comando supone que se usó fwpolicy como prefijo; ajusta el comando curl en consecuencia si se usó un nombre diferente):
user@vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2 Page on vpc1-www in network vpc1 zone us-central1-a
Desde Cloud Shell, valida que la política de firewall de red se aplique a fwpolicy-vpc1:
gcloud compute network-firewall-policies describe \ $prefix-example --global
Resultado esperado (desplázate hacia arriba hasta el comienzo del resultado):
--- associations: - attachmentTarget: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/fwpolicy-vpc1 name: fwpolicy-vpc1-association ...
6. Etiquetas administradas por IAM
Una etiqueta es un par clave-valor que se puede adjuntar a una organización, una carpeta o un proyecto. Consulta Crea y administra etiquetas y los permisos necesarios para obtener más detalles.
El rol tagAdmin te permite crear etiquetas nuevas, actualizar y borrar etiquetas existentes. Un administrador de la organización puede otorgar este rol. Desde Cloud Shell, actualiza la política de IAM para agregar el rol tagAdmin a tu usuario. Usa la página de referencia de permisos para ver qué permisos se incluyen en cada rol predefinido.
gcloud organizations add-iam-policy-binding $org_id \ --member user:[user@example.com] --role roles/resourcemanager.tagAdmin
Ejecuta el siguiente comando para verificar qué usuarios tienen el rol resourcemanager.tagAdmin:
gcloud organizations get-iam-policy $org_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagAdmin
Crea una clave de etiqueta nueva:
gcloud resource-manager tags keys create tags-vpc1 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc1
Resultado esperado:
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 valores de etiqueta nuevos:
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
Valida que los valores de las etiquetas se hayan creado correctamente:
gcloud resource-manager tags values list \ --parent=$org_id/tags-vpc1
Resultado esperado:
NAME SHORT_NAME DESCRIPTION tagValues/349564376683 web-servers tagValues/780363571446 web-clients
Desde Cloud Shell, describe la regla de política de firewall de red existente para confirmar que no se usan etiquetas:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
Resultado esperado:
---
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
Desde Cloud Shell, actualiza la regla para permitir solo el tráfico de la clave de etiqueta vpc1-tags/web-clients y, luego, instala la regla en instancias con la clave de etiqueta 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
Desde Cloud Shell, describe la regla de política de firewall de red existente para confirmar que las etiquetas se aplicaron correctamente y se informan como EFFECTIVE:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
Resultado esperado:
---
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
Desde Cloud Shell, verifiquemos que la regla se haya aplicado a vpc1:
gcloud compute networks get-effective-firewalls $prefix-vpc1
Resultado esperado:
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 que, aunque la política de firewall de red aún esté asociada a la red de VPC, la regla que permite el tráfico web ya no se aplique al servidor web, ya que no se agregó la etiqueta a las instancias:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Resultado esperado (ten en cuenta que no se muestra la regla de firewall con prioridad 500):
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
Otorga el rol de usuario de etiquetas a la etiqueta y el usuario específicos. Usa la página de referencia de permisos para ver qué permisos se incluyen en cada rol predefinido.
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 que el rol se haya agregado correctamente:
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
Resultado esperado:
bindings: - members: - user:[user] role: roles/resourcemanager.tagUser ...
Aplica la etiqueta a la instancia 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
Resultado esperado:
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 las vinculaciones:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
Resultado esperado:
namespacedTagKey: ORGANIZATION_ID/tags-vpc1 namespacedTagValue: ORGANIZATION_ID/tags-vpc1/web-servers tagKey: tagKeys/622132302133 tagValue: tagValues/349564376683
Vuelve a verificar las reglas de firewall efectivas:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Resultado esperado:
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
Vuelve a la pestaña de la sesión SSH de fwpolicy-vpc1-client y trata de hacer curl:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
¿Pudiste conectarte?
Para verificarlo, actualiza la regla para quitar los criterios de CIDR de origen a través de 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
Vuelve a la pestaña de la sesión SSH de fwpolicy-vpc1-client y vuelve a intentarlo:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Esta vez, la conexión debería agotar el tiempo de espera, ya que no se agregó la etiqueta a fwpolicy-vpc1-client. Desde Cloud Shell, agrégala y vuelve a intentarlo.
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
Vuelve a la pestaña de la sesión SSH de fwpolicy-vpc1-client y vuelve a intentarlo, lo que ahora debería tener éxito.
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
7. Etiquetas controladas por IAM en el intercambio de tráfico entre redes de VPC
Desde Cloud Shell, crea una VPC, una subred y un cliente nuevos, y configura el intercambio de tráfico entre redes de VPC entre las redes:
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 regla de firewall que permita el tráfico SSH de entrada desde los rangos de IAP en caso de que aún no se haya definido como parte de la configuración de 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
Aunque las etiquetas son objetos de toda la organización, las claves de etiqueta se asocian con una VPC específica y, por lo tanto, no se pueden aplicar a instancias en diferentes redes. Por lo tanto, es necesario crear una clave y un valor de etiqueta nuevos aplicables 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
Aplica la etiqueta nueva a la instancia 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
De manera opcional, enumera las vinculaciones 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
Resultado esperado:
namespacedTagKey: ORGANIZATION_ID/tags-vpc2 namespacedTagValue: ORGANIZATION_ID/tags-vpc2/web-clients tagKey: tagKeys/916316350251 tagValue: tagValues/633150043992
Desde Cloud Shell, describe la regla de política de firewall de red existente para confirmar que no se usan las etiquetas nuevas:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
Resultado esperado:
---
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
Actualiza la regla de firewall existente para permitir las etiquetas de la red de VPC con intercambio de tráfico:
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
Describe la regla de firewall para asegurarte de que se haya aplicado correctamente y se informe como EFFECTIVE:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
Resultado esperado:
---
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
Descubre la IP de fwpolicy-vpc1-www con el siguiente comando de gcloud:
gcloud compute instances list --filter=vpc1-www
Conéctate a fwpolicy-vpc2-client a través de SSH y trata de hacer curl en la IP de fwpolicy-vpc1:
user@fwpolicy-vpc2-client$ curl [fwpolicy-vpc1-www_IP] --connect-timeout 2
Deberías poder conectarte al servidor fwpolicy-vpc1-www. Continúa con la siguiente sección para conocer los pasos de limpieza.
8. Pasos para realizar la limpieza
Desde Cloud Shell, quita las instancias, Cloud NAT y 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
Quita la política de firewall de red global y las etiquetas:
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
Realiza los siguientes pasos si se cambiaron los roles tagAdmin y tagUsers:
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
Por último, quita los intercambios de tráfico entre redes de VPC, las subredes y las redes de 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. ¡Felicitaciones!
Felicitaciones, configuraste y validaste correctamente una política de firewall de red global con la configuración de etiquetas.