Lista de IPs nomeados do Cloud Armor

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.

27243e72ee25ee16.png

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.

7e9c09a008e04656.png

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

68a800f9adbf4570.png

5. Configuração e requisitos

Configuração de ambiente autoguiada

  1. 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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.

  1. 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:

bce75f34b2c53987.png

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:

f6ef2b5f13479f3a.png

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.

  1. Ainda no Compute Engine, clique em "Instâncias de VM" no menu à esquerda.
  2. Confira as instâncias que começam com us-east1-mig. Elas fazem parte dos grupos de instâncias gerenciadas.
  3. 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

  1. No console do Cloud, clique em Menu de navegação ( mainmenu.png) > Serviços de rede > Balanceamento de carga e, em seguida, clique em Criar balanceador de carga.
  2. Em "Balanceamento de carga HTTP(S)", clique em "Iniciar configuração".

start_config.png

  1. Selecione "Da Internet para minhas VMs" e clique em "Continuar".
  2. 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.

  1. Clique em "Configuração de back-end".
  2. 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".
  3. O tipo de back-end é "Grupo de instâncias"
  4. Defina os seguintes valores e mantenha os demais como padrão: 18bf7a852f0759ee.png
  5. Clique em "Concluído".
  6. Em "Verificação de integridade", selecione "Criar uma verificação de integridade". health_check.png
    1. Defina os seguintes valores e mantenha os demais como padrão: d2f85af1e988532b.png
  7. Clique em "Salvar e continuar".
  8. Clique em "Criar" para criar o serviço de back-end.

b00c217bf592f0.png

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.

  1. Clique em "Configuração de front-end".
  2. http-front-end
  3. Especifique o seguinte e mantenha os outros valores como padrão 51ae16211e72142f.png
  4. Clique em "Concluído".

8. Analise e crie o balanceador de carga HTTP

  1. Clique em "Revisar e finalizar".

8efe5b462a80071d.png

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

30b06910bf7fae29.png

  1. Clique em "Criar".
  2. Aguarde alguns minutos para que o balanceador de carga seja criado.
  3. Clique no nome do balanceador de carga (http-lb).
  4. 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.

  1. 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.

f93410e9568f1f32.png

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

  1. Como a política de segurança está implementada, o acesso ao balanceador de carga da sua estação de trabalho não é autorizado.
  2. 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