1. Introdução
As listas de endereços IP nomeados do Google Cloud Armor permitem referenciar listas de endereços IP e intervalos de IP mantidos por provedores terceirizados. É possível configurar listas de endereços IP nomeadas em uma política de segurança. Você não precisa especificar manualmente cada endereço IP ou intervalo de IP individualmente.
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
- Implante a lista de endereços IP nomeados do Cloud Armor
- Criar balanceador de carga global
- Criar um grupo gerenciado de instâncias com o aplicativo de teste de exemplo
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 com 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 proporciona uma conexão direta entre provedores de CDN e a borda da 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 sua 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 só permite o tráfego proveniente desses endereços IP. Como resultado, são permitidos dois pontos de acesso do provedor de CDN (23.235.32.10 e 43.249.72.10) e, portanto, o tráfego deles. O tráfego do ponto de acesso não autorizado 198.51.100.1 está bloqueado.
Endereço IP nomeado do Google Cloud Armor
3. 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 nomeadas 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 as informações dos provedores de CDN no dia a dia. 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 têm parceria com o Google. As listas de endereços IP deles 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 as converte em listas de endereços IP nomeadas. Você faz referência às listas pelos nomes na tabela.
Se preferir, use o Cloud Shell para receber uma lista de listas de endereços IP nomeados pré-configuradas.
Faça login no cloudshell e defina seu 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 custo financeiro.
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
Crie 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 delas.
- Ainda no Compute Engine, clique em "Instâncias de VM" no menu à esquerda
- Observe as instâncias que começam com us-east1-mig. Essas instâncias fazem parte dos grupos gerenciados de instâncias.
- Clique no IP externo de uma instância em us-east1-mig. Você verá o IP do cliente (seu endereço IP) e o nome do host (começa com us-east1-mig).
Configure o balanceador de carga HTTP
- No Console do Cloud, clique no menu de navegação ( ) > clique em Serviços de rede > "Balanceamento de carga" e, em seguida, "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.
- Para serviços de back-end e em buckets de back-end, clique em "Criar ou selecionar serviços de back-end" 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 estes valores e mantenha os demais como padrão:
- Clique em "Concluído".
- Em "Verificação de integridade", selecione "Criar verificação de integridade".
- Defina estes 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 não altere os outros valores:
- Clique em "Concluído".
8. Analise e crie o balanceador de carga HTTP
- Clique em Analisar e finalizar.
- Revise os serviços de back-end e o front-end.
- Clique em "Criar".
- Aguarde alguns minutos até 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. Valide o acesso não autorizado bem-sucedido
Antes de implementar a política de endereço IP nomeado, valide o acesso não autorizado bem-sucedido ao balanceador do laboratório e ao aplicativo da Web seguinte. Depois que a política de endereço IP nomeada for implementada, o acesso ao aplicativo da Web será limitado ao conjunto de expressões provisionadas.
- 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 conforme a captura de tela abaixo.
OBSERVAÇÃO: esta etapa levará alguns 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 sua 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 IPs nomeados
Criar uma nova política do Cloud Amour para lista de IPs nomeados
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 IP nomeadas 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 de uso do Cloudflare
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \ --action "allow"
12. Aplicar política de segurança de AC
Aplique a política de segurança da AC e aguarde alguns minutos pela 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 foi implementada, o acesso ao balanceador de carga pela estação de trabalho não é autorizado.
- Para fazer a validação, abra uma janela do terminal na estação de trabalho e execute um curl para o endereço IP do balanceador de carga. A saída de curl vai gerar um "403" Erro proibido porque sua estação de trabalho não está autorizada.
Na 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 o aplicativo de teste de exemplo
- Criar política de segurança do Cloud Armor
- Implante a lista de endereços IP nomeados do Cloud Armor
- Validar a política de IP nomeado do Cloud Armor