1. Introdução
As listas de endereços IP nomeados do Google Cloud Armor permitem que você faça referência a listas de endereços IP e intervalos de IP que são mantidos por provedores terceirizados. É possível configurar listas de endereços IP nomeados em uma política de segurança. Não é necessário especificar cada endereço IP ou intervalo de IP manualmente.
O que você vai aprender
- Benefícios da lista de endereços IP nomeados do Cloud Armor
- Criar política de segurança do Cloud Armor
- Implantar a lista de endereços IP nomeados do Cloud Armor
- Criar balanceador de carga global
- Criar um grupo gerenciado de instâncias com um aplicativo de teste de amostra
O que é necessário
- Experiência com políticas de segurança e balanceadores de carga
2. Como permitir tráfego apenas de provedores de terceiros autorizados
Um caso de uso típico é criar uma lista de permissões contendo os endereços IP de um parceiro terceirizado permitido para garantir que apenas o tráfego proveniente desse parceiro possa acessar o balanceador de carga e os back-ends.
Por exemplo, os provedores de CDN precisam receber conteúdo dos servidores de origem em intervalos regulares para distribuí-los aos próprios caches. Uma parceria com o Google fornece uma conexão direta entre provedores de CDN e a borda de rede do Google. Os usuários da CDN no Google Cloud podem usar essa conexão direta durante pulls de origem. Nesse caso, o usuário da CDN pode querer criar uma política de segurança que permita apenas o tráfego proveniente desse provedor de CDN específico.
Neste exemplo, um provedor de CDN publica a lista de endereços IP 23.235.32.0/20, 43.249.72.0/22, ⋯. Um usuário da CDN configura uma regra de segurança que permite apenas o tráfego proveniente desses endereços IP. Como resultado, dois pontos de acesso do provedor de CDN são permitidos (23.235.32.10 e 43.249.72.10). Assim, o tráfego deles é permitido. O tráfego do ponto de acesso não autorizado 198.51.100.1 fica bloqueado.

Endereço IP nomeado do Google Cloud Armor
3. Como simplificar a configuração e o gerenciamento usando regras pré-configuradas
Os provedores de CDN geralmente usam endereços IP conhecidos e que muitos usuários de CDN precisam usar. Essas listas mudam com o tempo, à medida que os provedores adicionam, removem e atualizam os endereços IP.
O uso de uma lista de endereços IP nomeados em uma regra de política de segurança simplifica o processo de configuração e gerenciamento de endereços IP porque o Google Cloud Armor sincroniza automaticamente informações de provedores da CDN diariamente. Isso elimina o processo demorado e propenso a erros de manter uma grande lista de endereços IP manualmente.
Provedores de lista de endereços IP
Os provedores de lista de endereços IP na tabela a seguir são compatíveis com o Google Cloud Armor. Estes são provedores de CDN que firmaram parceria com o Google. Suas listas de endereços IP são publicadas por meio de URLs públicos individuais.
Esses parceiros fornecem listas separadas de endereços IPv4 e de endereços IPv6. O Google Cloud Armor usa os URLs fornecidos para buscar listas e, em seguida, as converte em listas de endereços IP nomeadas. Você fará referência às listas pelos nomes da tabela.

Como alternativa, use o Cloud Shell para acessar uma lista de listas de endereços IP nomeadas pré-configuradas.
Faça login no Cloud Shell e defina o projectid
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
No Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \
--filter="id:sourceiplist"
Isso retorna:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
4. Topologia do codelab

5. Configuração e requisitos
Configuração de ambiente autoguiada
- Faça login no console do Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.



Lembre-se do código do projeto, um nome exclusivo em todos os projetos do Google Cloud. O nome acima já foi escolhido e não servirá para você. Faremos referência a ele mais adiante neste codelab como PROJECT_ID.
- Em seguida, será necessário ativar o faturamento no Console do Cloud para usar os recursos do Google Cloud.
A execução deste codelab não será muito cara, se for o caso. Siga todas as instruções na seção "Limpeza", que orienta você sobre como encerrar recursos para não incorrer em cobranças além deste tutorial. Novos usuários do Google Cloud estão qualificados para o programa de US$300 de avaliação sem custos.
Inicie o Cloud Shell
Embora o Google Cloud e o Spanner possam ser operados remotamente do seu laptop, neste codelab usaremos o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.
No Console do GCP, clique no ícone do Cloud Shell na barra de ferramentas localizada no canto superior direito:

O provisionamento e a conexão com o ambiente levarão apenas alguns instantes para serem concluídos: Quando o processamento for concluído, você verá algo como:

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Todo o trabalho neste laboratório pode ser feito apenas com um navegador.
6. Criar rede VPC
Rede VPC
No Cloud Shell
gcloud compute networks create
named-list-vpc
--subnet-mode custom
Criar sub-rede
No Cloud Shell
gcloud compute networks subnets create named-ip-subnet \
--network
named-list-vpc
--range 10.0.0.0/24 --region us-east1
Criar regras de firewall
No Cloud Shell
gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16
Criar o balanceador de carga
Criar o modelo da instância
No Cloud Shell
gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any
Criar o grupo gerenciado de instâncias
No Cloud Shell
gcloud compute --project=$projectid instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b
7. Verificar os back-ends
Verifique se as instâncias de VM estão sendo criadas nas duas regiões e acesse os sites HTTP.
- Ainda no Compute Engine, clique em "Instâncias de VM" no menu à esquerda.
- Confira as instâncias que começam com us-east1-mig. Elas fazem parte dos grupos de instâncias gerenciadas.
- Clique no IP externo de uma instância de us-east1-mig. Você vai encontrar estas informações: IP do cliente (seu endereço IP), nome do host (começa com us-east1-mig)
Configurar o balanceador de carga HTTP
- No console do Cloud, clique em Menu de navegação (
) > Serviços de rede > Balanceamento de carga e, em seguida, clique em Criar balanceador de carga. - Em "Balanceamento de carga HTTP(S)", clique em "Iniciar configuração".

- Selecione "Da Internet para minhas VMs" e clique em "Continuar".
- Defina o nome como http-lb.
Configure o back-end
Os serviços de back-end direcionam o tráfego de entrada para um ou mais back-ends anexados. Cada back-end é composto por um grupo de instâncias e metadados com capacidade adicional de serviço.
- Clique em "Configuração de back-end".
- Em "Serviços e buckets de back-end", clique em "Criar ou selecionar serviços e buckets de back-end", depois em "Serviços de back-end" e em "Criar um serviço de back-end".
- O tipo de back-end é "Grupo de instâncias"
- Defina os seguintes valores e mantenha os demais como padrão:

- Clique em "Concluído".
- Em "Verificação de integridade", selecione "Criar uma verificação de integridade".

- Defina os seguintes valores e mantenha os demais como padrão:

- Defina os seguintes valores e mantenha os demais como padrão:
- Clique em "Salvar e continuar".
- Clique em "Criar" para criar o serviço de back-end.

Configure o front-end
As regras de host e caminho determinam como o tráfego será direcionado. Por exemplo, você pode direcionar tráfego de vídeo para um back-end e tráfego estático para outro back-end. No entanto, você não definirá as regras de host e caminho neste laboratório.
- Clique em "Configuração de front-end".
- http-front-end
- Especifique o seguinte e mantenha os outros valores como padrão

- Clique em "Concluído".
8. Analise e crie o balanceador de carga HTTP
- Clique em "Revisar e finalizar".

- Confira os serviços de back-end e front-end.

- Clique em "Criar".
- Aguarde alguns minutos para que o balanceador de carga seja criado.
- Clique no nome do balanceador de carga (http-lb).
- Anote o endereço IPv4 do balanceador de carga para a próxima tarefa, chamado de http-lb.
9. Validar o sucesso de um acesso não autorizado
Antes de implementar a política de endereço IP nomeado, valide o acesso não autorizado bem-sucedido ao balanceador de laboratório e ao aplicativo da Web subsequente. Depois que a política de endereço IP nomeado é implementada, o acesso ao aplicativo da Web fica limitado ao conjunto de expressões provisionado.
- Identifique o endereço IP do balanceador de carga criado na etapa anterior (http-lb) e cole no navegador da Web. A saída será semelhante à captura de tela abaixo.
OBSERVAÇÃO: essa etapa vai levar vários minutos. Depois que a página da Web for gerada, o IP do cliente será do Google Front End, não do IP da sua estação de trabalho.

Na estação de trabalho, faça uma validação semelhante à indicada abaixo.
bash-3.2$ curl <load-balancer-IP>
10. Exemplo de saída
bash-3.2$ curl <load-balancer-ip> <h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b
11. Configurar lista de IP nomeada
Criar uma nova política do Cloud Armor para lista de IP nomeada
No Cloud Shell
gcloud compute --project=$projectid security-policies create ca-policy
No Cloud Shell
gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*
Identifique os endereços disponíveis das listas de IPs nomeados da CDN.
No Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \
--filter="id:sourceiplist"
Isso retorna:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
No Cloud Shell, configure a lista de endereços IP nomeados com base no conjunto de expressões disponíveis da CDN.
gcloud beta compute security-policies rules create 600 \
--security-policy ca-policy \
--expression "evaluatePreconfiguredExpr('expression_set')" \
--action "allow"
Exemplo usando o Cloudflare
gcloud beta compute security-policies rules create 600 \
--security-policy ca-policy \
--expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \
--action "allow"
12. Aplicar a política de segurança da AC
Aplique a política de segurança da AC e aguarde alguns minutos para a propagação da política global.
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. Validação de endereço IP nomeado
- Como a política de segurança está implementada, o acesso ao balanceador de carga da sua estação de trabalho não é autorizado.
- Para validar, abra uma janela de terminal na estação de trabalho e execute um curl no endereço IP do balanceador de carga. A saída do curl vai gerar um erro "403" Forbidden, já que sua estação de trabalho não está mais autorizada.
Na sua estação de trabalho
bash-3.2$ curl <load-balancer-IP> <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
Etapas de limpeza
gcloud -q compute backend-services update http-backend --security-policy "" --global gcloud -q compute --project=$projectid security-policies delete ca-policy gcloud -q compute forwarding-rules delete http-front-end --global gcloud -q compute target-http-proxies delete http-lb-target-proxy gcloud -q compute url-maps delete http-lb gcloud -q compute backend-services delete http-backend --global gcloud -q compute health-checks delete http-health-check gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template gcloud -q compute --project=$projectid firewall-rules delete default-allow-http gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check gcloud -q compute networks subnets delete named-ip-subnet --region us-east1 gcloud -q compute networks delete named-list-vpc
14. Parabéns!
Parabéns por concluir o codelab.
O que vimos
- Benefícios da lista de endereços IP nomeados do Cloud Armor
- Criar balanceador de carga global
- Criar um grupo gerenciado de instâncias com um aplicativo de teste de amostra
- Criar política de segurança do Cloud Armor
- Implantar a lista de endereços IP nomeados do Cloud Armor
- Validar a política de IP nomeado do Cloud Armor