Como configurar a conectividade particular a serviços do GCP de uma rede VPC

Visão geral

O acesso privado do Google permite instâncias de VM do GCP sem um endereço IP externo acessem serviços e APIs públicos do Google.

Um perímetro de serviço do VPC Service Controls controla o acesso a APIs e serviços do Google. Para restringir o acesso privado do Google em um perímetro de serviço apenas a APIs e serviços do Google com suporte do VPC Service Controls, suas instâncias de VM precisam enviar solicitações para restricted.googleapis.com em vez de *.googleapis.com.

Embora o VPC Service Controls possa ser usado sem o VIP restrito, você não deve fazê-lo. Se o VIP restrito não for usado, os dados poderão ser exportados de um serviço com suporte para um sem suporte.

restricted.googleapis.com resolve para 199.36.153.4/30. Esse intervalo de endereços IP não é anunciado para a Internet.

$ host restricted.googleapis.com
restricted.googleapis.com has address 199.36.153.4
restricted.googleapis.com has address 199.36.153.5
restricted.googleapis.com has address 199.36.153.6
restricted.googleapis.com has address 199.36.153.7

No exemplo a seguir, o perímetro de serviço contém dois projetos: um com uma rede VPC autorizada e outro com o recurso protegido do Cloud Storage. Consultas a APIs e serviços do Google por instâncias de VM na rede VPC autorizada resolvem para restricted.googleapis.com e podem acessar o recurso protegido.

Acesso privado do Google com VPC Service Controls (clique para ampliar)
Acesso privado do Google com VPC Service Controls (clique para ampliar)

Segurança de rede VPC

Com o acesso privado do Google, as instâncias de VM usam endereços IP internos e não exigem endereços IP externos para alcançar recursos protegidos de APIs do Google. No entanto, é possível que as instâncias de VM tenham endereços IP externos ou atendam aos requisitos de acesso à Internet. Use um destes métodos para restringir o tráfego de saída das instâncias de VM na sua rede VPC:

  • Limite as rotas em que o próximo salto é o gateway de Internet padrão. Contanto que você tenha uma rota estática personalizada com o destino 199.36.153.4/30, é possível remover outras rotas com um próximo salto do gateway de Internet padrão. Por exemplo, é possível remover a rota padrão criada automaticamente (destino: 0.0.0.0/0, próximo salto: gateway de Internet padrão) para que as instâncias de VM com endereços IP externos em sua rede VPC não tenham acesso à Internet.

  • Crie regras de firewall para negar o tráfego de saída. Por padrão, a regra implícita permitir firewall de saída permite que instâncias de VM enviem tráfego para qualquer destino se uma rota aplicável existir. É possível criar uma regra de negação de saída para bloquear todo o tráfego de saída e criar regras de permissão de saída de prioridade mais alta para permitir tráfego para destinos selecionados em sua rede VPC e para o intervalo de endereços IP 199.36.153.4/30 (restricted.googleapis.com). Toda a comunicação com restricted.googleapis.com está na porta TCP 443.

Para mais informações sobre como trabalhar com rotas VPC ou regras de firewall, consulte Como usar rotas ou Como usar regras de firewall na documentação da VPC.

Como configurar o roteamento para restricted.googleapis.com para instâncias em uma rede VPC

Para permitir o acesso aos serviços gerenciados pelo Google com suporte do VPC Service Controls, crie uma rota personalizada limitada para o destino 199.36.153.4/30 com um próximo salto para o gateway de Internet padrão. Embora o próximo salto seja um gateway padrão da Internet, o tráfego enviado para 199.36.153.4/30 permanece dentro da rede do Google.

  • Adicione uma rota personalizada que permita o acesso apenas aos serviços gerenciados pelo Google protegidos pelo VPC Service Controls.

    gcloud compute routes create ROUTE_NAME \
      --network=NETWORK_NAME \
      --destination-range=199.36.153.4/30 \
      --next-hop-gateway=default-internet-gateway
    

    Em que:

    • ROUTE_NAME é um nome para a rota personalizada.

    • NETWORK_NAME é o nome da sua rede VPC.

Depois de adicionar a rota personalizada, configure o DNS de modo que o tráfego das instâncias de VM para a API e os serviços do Google vá para o intervalo restrito.

Como configurar o DNS

Para usar os endereços IP de APIs restritas do Google, configure seu servidor DNS para resolver *.googleapis.com como CNAME para restricted.googleapis.com. É possível usar zonas de DNS particular do Cloud DNS ou BIND personalizado.

As zonas DNS particulares permitem que as instâncias de VM que estão sendo executadas no GCP tenham uma resolução de DNS personalizada do Cloud DNS. As zonas DNS privadas não são compatíveis com a substituição parcial. É preciso modificar todas as APIs para que as solicitações sejam enviadas ao IP virtual (VIP na sigla em inglês) de restricted.googleapis.com. Como resultado, as APIs sem suporte não estão acessíveis nas redes com essa configuração. Para mais informações, consulte Como gerenciar zonas.

Não é possível usar o BIND personalizado e o VIP restricted.googleapis.com no Cloud Dataflow porque a resolução DNS do Cloud Dataflow não pode ser personalizada.

Como configurar o DNS com o Cloud DNS

É possível usar o Cloud DNS para ativar a resolução de DNS para o acesso privado do Google. Se você estiver usando a VPC compartilhada, consulte Zonas particulares e VPC compartilhada na documentação do Cloud DNS.

  1. Crie uma zona particular gerenciada para sua rede VPC.

    gcloud beta dns managed-zones create ZONE_NAME \
      --visibility=private \
      --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \
      --description=DESCRIPTION \
      --dns-name=googleapis.com
    
    • ZONE_NAME é um nome para a zona que você está criando. Por exemplo, vpc. Esse nome será usado em cada uma das etapas a seguir.

    • PROJECT_ID é o código do projeto que hospeda sua rede VPC.

    • NETWORK_NAME é o nome da sua rede VPC.

    • DESCRIPTION é uma descrição opcional, legível por humanos, da zona gerenciada.

  2. Inicie uma transação.

    gcloud dns record-sets transaction start --zone=ZONE_NAME
    

    Em que:

    • ZONE_NAME é o nome da zona que você criou na primeira etapa.
  3. Adicione registros de DNS.

    gcloud dns record-sets transaction add --name=*.googleapis.com. \
        --type=CNAME restricted.googleapis.com. \
        --zone=ZONE_NAME \
        --ttl=300
    

    Em que:

    • ZONE_NAME é o nome da zona que você criou na primeira etapa.
    gcloud dns record-sets transaction add --name=restricted.googleapis.com. \
        --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
        --zone=ZONE_NAME \
        --ttl=300
    

    Em que:

    • ZONE_NAME é o nome da zona que você criou na primeira etapa.
  4. Execute a transação.

    gcloud dns record-sets transaction execute --zone=ZONE_NAME
    

    Em que:

    • ZONE_NAME é o nome da zona que você criou na primeira etapa.

Como configurar o DNS com o BIND

Se você usar o BIND para resolução de DNS, poderá configurá-lo para resolver solicitações da API Google para as APIs restritas do Google. Este é um exemplo de configuração do BIND que usa as zonas de política de resposta (RPZ) para conseguir esse comportamento:

  1. Adicione as seguintes linhas ao /etc/bind/named.conf:

    include "/etc/bind/named.conf.options";
    include "/etc/bind/named.conf.local";
    
  2. Adicione as seguintes linhas ao /etc/bind/named.conf.options:

    options {
      directory "/var/cache/bind";
    
      dnssec-validation no;
    
      auth-nxdomain no;    # conform to RFC 1035
      listen-on-v6 { any; };
      listen-on { any; };
      response-policy { zone "googleapis.zone"; };
      allow-query { any;};
    };
    
  3. Adicione as seguintes linhas ao /etc/bind/named.conf.local:

    include "/etc/bind/named.conf.default-zones";

    zone "googleapis.zone" { type master; file "/etc/bind/db.googleapis.zone"; allow-query {none;}; };

  4. Adicione as seguintes linhas ao /etc/bind/db.googleapis.zone:

    $TTL 1H
    @                       SOA LOCALHOST. noreply.localhost(1 1h 15m 30d 2h)
                            NS  LOCALHOST.

    *.googleapis.com CNAME restricted.googleapis.com. restricted.googleapis.com CNAME rpz-passthru.

As VMs da rede VPC protegidas pelo VPC Service Controls agora têm acesso aos serviços do Google.

Como configurar a conectividade particular do local usando VPN ou Cloud Interconnect

Consulte Como configurar o acesso privado do Google para hosts locais para instruções sobre como configurar o acesso privado do Google para hosts em sua rede local.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

VPC Service Controls