1. Introdução
Políticas de firewall de rede
Os firewalls são os elementos básicos de um ambiente seguro na nuvem. Já mostramos as políticas de firewall no nível da organização e da pasta, sem alterar os firewalls da VPC. Nesta versão, vamos expandir a estrutura da política de firewall para o nível da VPC e fazer várias melhorias no suporte atual para oferecer um suporte unificado ao firewall em toda a hierarquia de recursos do Google Cloud e uma experiência de usuário consistente no gerenciamento do controle de políticas de firewall de forma segura, flexível e escalonável.
A política de firewall de rede atua como um contêiner para regras de firewall. As regras definidas em uma política de firewall de rede não são aplicadas em nenhum lugar até que a política seja associada a uma rede VPC. Cada rede VPC pode ter uma política de firewall de rede associada. As políticas de firewall de rede oferecem suporte a tags controladas pelo IAM (ou apenas tags) em regras de firewall, que substituem as tags de rede atuais e podem ser usadas para fornecer identidade à carga de trabalho.
O compartilhamento de uma política de firewall de rede entre redes e a integração com as tags gerenciadas pelo IAM simplificam muito a configuração e o gerenciamento de firewalls.
Com a introdução da política de firewall de rede, as políticas de firewall do Google Cloud agora consistem nos seguintes componentes:
- Política de firewall hierárquica
- Regras de firewall da VPC
- Política de firewall de rede ( global e regional)
As políticas de firewall hierárquicas são compatíveis com os nós da organização e da pasta na hierarquia de recursos, enquanto as regras de firewall da VPC e as políticas de firewall da rede são aplicadas no nível da VPC. Uma grande diferença entre as regras de firewall da VPC e as políticas de firewall de rede é que as regras de firewall da VPC podem ser aplicadas apenas a uma única rede VPC, enquanto as políticas de firewall de rede podem ser anexadas a uma única VPC ou grupo de VPCs, entre outros benefícios, como a atualização em lote.
Por fim, também temos as regras de firewall implícitas que vêm com todas as redes VPC:
- Uma regra de saída em que a ação é permitir, o destino é 0.0.0.0/0
- Uma regra de entrada com a ação negar, a origem é 0.0.0.0/0
Por padrão, a sequência de aplicação é mostrada no diagrama a seguir:
A ordem de aplicação entre as regras de firewall da VPC e a política de firewall de rede global pode ser trocada. Os clientes podem especificar a ordem de aplicação a qualquer momento com um comando gcloud.
Tags
As novas tags integradas às regras da política de firewall de rede são recursos de par de chave-valor definidos no nível da organização da hierarquia de recursos do Google Cloud. Essa tag contém um controle de acesso do IAM, como o nome indica, que especifica quem pode fazer o quê na tag. Com as permissões do IAM, por exemplo, é possível especificar quais principais podem atribuir valores a tags e quais podem anexar tags a recursos. Depois que uma tag é aplicada a um recurso, as regras de firewall de rede podem usá-la para permitir e negar o tráfego.
As tags aderem ao modelo de recursos de herança do Google Cloud, o que significa que as tags e os respectivos valores são transmitidos para baixo na hierarquia a partir dos recursos pais. Como resultado, as tags podem ser criadas em um lugar e usadas por outras pastas e projetos em toda a hierarquia de recursos. Acesse esta página para mais detalhes sobre tags e restrição de acesso.
As tags não devem ser confundidas com as tags de rede, que são strings que podem ser adicionadas a instâncias do Compute Engine. Elas são associadas à instância e desaparecem quando ela é desativada. As regras de firewall da VPC podem incluir tags de rede, mas, como não são consideradas recursos de nuvem, elas não estão sujeitas ao controle de acesso do IAM.
As tags e as tags governadas pelo IAM são usadas de forma intercambiável neste documento.
O que você vai criar
Este codelab tem duas partes: a primeira demonstra políticas de firewall de rede e tags usando uma única rede VPC, e a segunda mostra como usar tags em redes VPC pareadas, conforme o diagrama abaixo. Portanto, este codelab requer um único projeto e a capacidade de criar várias redes VPC.
O que você vai aprender
- Como criar uma política de firewall de rede
- Como criar e usar tags com a política de firewall de rede
- Como usar tags no peering de rede VPC
O que é necessário
- Projeto do Google Cloud
- Conhecimento sobre implantação de instâncias e configuração de componentes de rede
- Conhecimento sobre a configuração do firewall da VPC
2. Antes de começar
Criar/atualizar variáveis
Este codelab usa $variables para ajudar na implementação da configuração do gcloud no Cloud Shell.
No Cloud Shell, faça o seguinte:
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. Criar uma rede e uma sub-rede VPC
Rede VPC
Crie fwpolicy-vpc1:
gcloud compute networks create $prefix-vpc1 --subnet-mode=custom
Sub-redes
Crie as respectivas sub-redes na região selecionada:
gcloud compute networks subnets create $prefix-vpc1-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc1 --region=$region
Cloud NAT
Crie os Cloud Routers e gateways do 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. Criar instâncias
Crie uma regra de firewall que permita o tráfego SSH de entrada dos intervalos do IAP, caso ainda não tenha sido definido como parte da configuração do 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
Crie as instâncias do cliente e do servidor da 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 não há regras de firewall da VPC definidas (exceto a regra de permissão do SSH que deveria ter sido criada ao configurar o IAP conforme o início desta seção) e, por padrão, todo o tráfego de entrada é negado, as instâncias de cliente não podem acessar os respectivos servidores da Web. Para verificar se o tempo limite da solicitação será atingido, abra uma nova janela e inicie uma sessão SSH na instância fwpolicy-vpc1-client e tente fazer o curl do servidor da Web:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Saída esperada:
curl: (28) Connection timed out after 2001 milliseconds
Como opção, verifique se não há regras de firewall da VPC definidas para fwpolicy-vpc1 no Cloud Shell:
gcloud compute firewall-rules list --filter="network:$prefix-vpc1"
5. Política de firewall de rede global
Crie uma política de firewall de rede global:
gcloud compute network-firewall-policies create \ $prefix-example --description \ "firewall-policy-description" --global
Adicione uma regra que permita o tráfego da 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
Descreva a política de firewall de rede e verifique se a regra foi added
:
gcloud compute network-firewall-policies describe \ $prefix-example --global
Saída esperada (role para cima até o início da saída. Observe que as regras implícitas também são exibidas):
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 ...
Associe a política de firewall de rede a fwpolicy-vpc1:
gcloud compute network-firewall-policies associations create \ --firewall-policy $prefix-example \ --network $prefix-vpc1 \ --name $prefix-vpc1-association \ --global-firewall-policy
Valide se ela foi aplicada à rede fwpolicy-vpc1:
gcloud compute networks get-effective-firewalls $prefix-vpc1
Saída esperada (se houver políticas hierárquicas de firewall com precedência, as regras relevantes serão mostradas na parte de cima):
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
Valide se ele foi aplicado ao servidor da Web fwpolicy-vpc1:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
A saída esperada é semelhante ao comando anterior (firewalls fwpolicy-vpc1 ativas):
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
Retorne à sessão SSH do cliente vpc1 e tente fazer o curl novamente. O comando abaixo pressupõe que fwpolicy
foi usado como prefixo. Ajuste o comando curl
se um nome diferente tiver sido usado:
user@vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2 Page on vpc1-www in network vpc1 zone us-central1-a
No Cloud Shell, valide se a política de firewall de rede é aplicada a fwpolicy-vpc1:
gcloud compute network-firewall-policies describe \ $prefix-example --global
Saída esperada (role para cima até o início da saída):
--- associations: - attachmentTarget: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/fwpolicy-vpc1 name: fwpolicy-vpc1-association ...
6. Tags gerenciadas pelo IAM
Uma tag é um par de chave-valor que pode ser anexado a uma organização, pasta ou projeto. Consulte Como criar e gerenciar tags e as permissões necessárias para mais detalhes.
A função tagAdmin permite criar, atualizar e excluir tags. Um administrador da organização pode conceder esse papel. No Cloud Shell, atualize a política do IAM para adicionar a função tagAdmin ao usuário. Use a página referência de permissões para conferir quais permissões estão incluídas em cada papel predefinido.
gcloud organizations add-iam-policy-binding $org_id \ --member user:[user@example.com] --role roles/resourcemanager.tagAdmin
Execute o comando abaixo para verificar quais usuários têm a função resourcemanager.tagAdmin:
gcloud organizations get-iam-policy $org_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagAdmin
Crie uma nova chave de tag:
gcloud resource-manager tags keys create tags-vpc1 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc1
Saída esperada:
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'
Crie novos valores de 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
Valide se os valores das tags foram criados:
gcloud resource-manager tags values list \ --parent=$org_id/tags-vpc1
Saída esperada:
NAME SHORT_NAME DESCRIPTION tagValues/349564376683 web-servers tagValues/780363571446 web-clients
No Cloud Shell, descreva a regra de política de firewall de rede atual para confirmar que as tags não estão sendo usadas:
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
Saída esperada:
--- 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
No Cloud Shell, atualize a regra para permitir apenas o tráfego da chave de tag vpc1-tags/web-clients e instale a regra nas instâncias com a chave de 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
No Cloud Shell, descreva a regra de política de firewall de rede atual para confirmar que as tags foram aplicadas e estão sendo informadas como VIGENTES:
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
Saída esperada:
--- 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
No Cloud Shell, vamos verificar se a regra foi aplicada à vpc1:
gcloud compute networks get-effective-firewalls $prefix-vpc1
Saída esperada:
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
Verifique se, embora a política de firewall da rede ainda esteja associada à rede VPC, a regra que permite o tráfego da Web não é mais aplicada ao servidor da Web porque a tag não foi adicionada às instâncias:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Saída esperada (a regra de firewall com prioridade 500 não é mostrada):
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
Conceda o papel de usuário da tag à tag e ao usuário específicos. Use a página referência de permissões para conferir quais permissões estão incluídas em cada papel 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
Verifique se a função foi adicionada:
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
Saída esperada:
bindings: - members: - user:[user] role: roles/resourcemanager.tagUser ...
Aplique a tag à instância 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
Saída esperada:
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
Verifique as vinculações:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
Saída esperada:
namespacedTagKey: ORGANIZATION_ID/tags-vpc1 namespacedTagValue: ORGANIZATION_ID/tags-vpc1/web-servers tagKey: tagKeys/622132302133 tagValue: tagValues/349564376683
Verifique as regras de firewall eficazes novamente:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Saída esperada:
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
Volte para a guia da sessão SSH fwpolicy-vpc1-client e tente fazer o curl:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Conseguiu se conectar?
Para verificar isso, atualize a regra para remover os critérios de CIDR de origem no 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
Volte para a guia da sessão SSH fwpolicy-vpc1-client e tente novamente:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
A conexão deve expirar desta vez, já que a tag não foi adicionada a fwpolicy-vpc1-client. No Cloud Shell, adicione e tente novamente.
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
Volte para a guia da sessão SSH fwpolicy-vpc1-client e tente novamente.
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
7. Tags gerenciadas pelo IAM no peering de rede VPC
No Cloud Shell, crie uma VPC, uma sub-rede e um cliente e configure o peering de rede VPC entre as 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
Crie uma regra de firewall que permita o tráfego SSH de entrada dos intervalos do IAP, caso ainda não tenha sido definido como parte da configuração do 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
Embora as tags sejam objetos da organização, as chaves de tag são associadas a uma VPC específica e, portanto, não podem ser aplicadas a instâncias em redes diferentes. Portanto, é necessário criar uma nova chave e um valor de tag aplicáveis ao 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
Aplique a nova tag à instância 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
Se preferir, liste as vinculações 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
Saída esperada:
namespacedTagKey: ORGANIZATION_ID/tags-vpc2 namespacedTagValue: ORGANIZATION_ID/tags-vpc2/web-clients tagKey: tagKeys/916316350251 tagValue: tagValues/633150043992
No Cloud Shell, descreva a regra de política de firewall de rede atual para confirmar se as novas tags não estão sendo usadas:
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
Saída esperada:
--- 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
Atualize a regra de firewall para permitir as tags da rede VPC pareada:
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
Descreva a regra de firewall para garantir que ela foi aplicada e informada como VIGENTE:
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
Saída esperada:
--- 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
Encontre o IP de fwpolicy-vpc1-www usando o comando gcloud abaixo:
gcloud compute instances list --filter=vpc1-www
Conecte-se ao fwpolicy-vpc2-client usando SSH e tente fazer o curl do IP do fwpolicy-vpc1:
user@fwpolicy-vpc2-client$ curl [fwpolicy-vpc1-www_IP] --connect-timeout 2
Você poderá se conectar ao servidor fwpolicy-vpc1-www. Siga para a próxima seção para conferir as etapas de limpeza.
8. Etapas de limpeza
No Cloud Shell, remova as instâncias, o Cloud NAT e o 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
Remova a política de firewall de rede global e as 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
Siga as etapas abaixo se as funções "tagAdmin" e "tagUsers" tiverem sido alteradas:
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 fim, remova os peerings de rede VPC, as sub-redes e as redes 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. Parabéns!
Parabéns! Você configurou e validou uma política de firewall de rede global com a configuração de tags.