Como configurar a conectividade particular com as APIs e os serviços do Google

Neste documento, descrevemos como configurar a conectividade privada de hosts em uma rede VPC ou local para APIs e serviços do Google compatíveis com o VPC Service Controls.

Antes de ler este documento, recomendamos que você familiarize-se com os conceitos de Acesso privado do Google, especificações e configuração de rede. Veja exemplos de diagramas de topologia sobre como usar o Acesso privado do Google com o VPC Service Controls.

Antes de começar

  • Ative as APIs que você quer acessar na página de APIs e serviços do console do Google Cloud.
  • Verifique se você tem o papel necessário para criar ou atualizar sub-redes. Proprietários de projetos, editores e membros do IAM com o papel Administrador de rede podem criar ou atualizar sub-redes e atribuir endereços IP. Para mais informações sobre papéis, leia a documentação sobre os papéis do IAM.
  • Verifique se uma rede VPC está configurada para acesso privado do Google e acesso privado do Google para hosts locais. Redes VPC de modo automático e personalizado são compatíveis. Redes legadas não.
  • Verifique se as instâncias de VM em uma rede VPC têm um endereço IP particular (sem endereço IP público) e se estão em uma sub-rede com Acesso privado do Google ativado.
  • Para hosts locais, verifique se você tem um túnel do Cloud VPN existente ou uma conexão do Cloud Interconnect com sua rede VPC. Para aceitar hosts locais que tenham endereços IPv6, consulte suporte a IPv6.

Visão geral do procedimento

Para configurar a conectividade privada, conclua as seguintes tarefas:

  • Configure rotas para os intervalos de endereços IP restricted.googleapis.com. Para saber mais informações, consulte Configurar rotas.
  • Configure regras de firewall para permitir que o tráfego apropriado alcance os intervalos de endereços IP restricted.googleapis.com. Para mais informações, consulte Configurar regras de firewall.
  • Configure o DNS para que o tráfego para as APIs do Google seja resolvido nos intervalos de endereços IP restricted.googleapis.com. Para mais informações, consulte Configurar DNS.

Compatibilidade com IPv6 com restricted.googleapis.com

É possível acessar as APIs do Google usando o intervalo de endereços IPv6 do domínio restricted.googleapis.com: 2600:2d00:0002:1000::/64.

Considere configurar os endereços IPv6 se quiser usar o domínio restricted.googleapis.com e tiver clientes que usem endereços IPv6. Os clientes IPv6 que também têm endereços IPv4 configurados podem acessar as APIs e serviços do Google usando os endereços IPv4. Nem todos os serviços aceitam o tráfego de clientes IPv6.

Para permitir que clientes IPv6 no ambiente local acessem as APIs do Google usando restricted.googleapis.com, configure a conexão com a rede VPC compatível com IPv6. Para mais informações, consulte as seguintes páginas:

Os clientes locais podem enviar solicitações de qualquer endereço IPv6 GUA ou ULA, exceto para o intervalo ULA fda3:e722:ac3:cc00::/64, que é reservado para uso interno.

Para mais informações sobre o VIP restricted.googleapis.com, consulte Configurar o Acesso privado do Google.

Configurar rotas para restricted.googleapis.com

Embora o VPC Service Controls seja aplicado a serviços compatíveis e configurados independentemente do domínio usado, o restricted.googleapis.com fornece mitigação de risco adicional para exfiltração de dados. restricted.googleapis.com nega acesso a APIs e serviços do Google que não são compatíveis com o VPC Service Controls.

Para Acesso privado do Google e Acesso privado do Google para hosts locais, sua rede VPC precisa incluir uma rota para um destino restricted.googleapis.com que tenha o gateway de Internet padrão como próximo salto. Embora o próximo salto seja um gateway padrão da Internet, o tráfego enviado para restricted.googleapis.com permanece dentro da rede do Google.

Se sua rede VPC não tiver uma rota padrão em que próximo salto seja o gateway de Internet padrão, crie uma rota estática personalizada que tenha como destino restricted.googleapis.com e cujo próximo salto é o gateway padrão da Internet. Para evitar o acesso à Internet, é preciso remover outras rotas que têm o gateway de Internet padrão como próximo salto.

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

Como configurar uma rota estática personalizada em uma rede VPC

Adicione uma rota estática personalizada para ativar o acesso aos serviços gerenciados pelo Google compatíveis com o VPC Service Controls.

  • 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
    

    Substitua:

    • ROUTE_NAME: um nome para a rota personalizada.
    • NETWORK_NAME: o nome da sua rede VPC.

Divulgação da rota restrita aos hosts em uma rede local

Se você usa o Acesso privado do Google para hosts locais, configure as rotas para que o tráfego da API do Google seja encaminhado por meio da sua conexão do Cloud VPN ou do Cloud Interconnect. Para anunciar os intervalos de endereços VIP restritos na sua rede local, use as divulgações de rotas personalizadas do Cloud Router. Os intervalos de endereços VIP restritos só podem ser acessados por hosts locais que podem acessar sua rede VPC usando endereços IP particulares.

É possível adicionar essa divulgação de rota personalizada a um Cloud Router (para todas as sessões do BGP no roteador) ou selecionar uma sessão do BGP (para um único túnel do Cloud VPN ou anexo da VLAN).

As rotas IPv6 são anunciadas apenas nas sessões do BGP em que IPv6 está ativado.

Para criar uma divulgação de rota personalizada para o intervalo restrito de todas as sessões do BGP em um Cloud Router existente, siga estas etapas:

Console

  1. No console do Google Cloud, acesse a página do Cloud Routers.

    Acesse o Cloud Routers

  2. Selecione o roteador do Cloud a ser atualizado.

  3. Na página de detalhes do Cloud Router, selecione Editar.

  4. Expanda a seção Rotas divulgadas.

  5. Em Rotas, selecione Criar rotas personalizadas.

  6. Para continuar anunciando as sub-redes disponíveis para o Cloud Router, selecione Anunciar todas as sub-redes visíveis para o Cloud Router. A ativação dessa opção imita o comportamento padrão do Cloud Router.

  7. Para adicionar uma rota anunciada, selecione Adicionar rota personalizada.

  8. Configure a divulgação de rota.

    • Origem: selecione Intervalo de IP personalizado.
    • Intervalo de endereços IP:
      • Para conectividade IPv4: 199.36.153.4/30
      • Para conectividade IPv6: 2600:2d00:0002:1000::/64
    • Descrição: adicione uma descrição de Restricted Google APIs IPs.
  9. Depois de adicionar as rotas, selecione Salvar.

gcloud

Execute o comando update usando a sinalização --set-advertisement-ranges ou --add-advertisement-ranges para especificar os intervalos de IP personalizados:

  • Para definir intervalos de IP personalizados, use a sinalização --set-advertisement-ranges. Todas as divulgações personalizadas existentes serão substituídas. O exemplo a seguir atualiza o Cloud Router my-router para divulgar todas as sub-redes e os intervalos de endereços IP restricted.googleapis.com.

    gcloud compute routers update my-router \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges RANGES
    

    Substitua RANGES pelos intervalos que você quer usar:

    • Para conectividade IPv4: 199.36.153.4/30
    • Para conectividade IPv6: 2600:2d00:0002:1000::/64
    • Para conectividade IPv4 e IPv6: 199.36.153.4/30,2600:2d00:0002:1000::/64

  • Para anexar intervalos de IP personalizados a uma divulgação atual, use a sinalização --add-advertisement-ranges. Ela exige que o modo de divulgação do Cloud Router já esteja configurado como custom. No exemplo a seguir, adicionamos os intervalos de endereços IP restricted.googleapis.com às divulgações do Cloud Router:

    gcloud compute routers update my-router \
        --add-advertisement-ranges RANGES
    

    Substitua RANGES pelos intervalos que você quer usar:

    • Para conectividade IPv4: 199.36.153.4/30
    • Para conectividade IPv6: 2600:2d00:0002:1000::/64
    • Para conectividade IPv4 e IPv6: 199.36.153.4/30,2600:2d00:0002:1000::/64

Para criar uma divulgação de rota personalizada para o intervalo restrito em uma sessão do BGP específica de um Cloud Router existente, siga estas etapas:

Console

  1. No console do Google Cloud, acesse a página do Cloud Routers.

    Acesse o Cloud Routers

  2. Selecione o roteador do Cloud Router que contém a sessão do BGP a ser atualizada.

  3. Na página de detalhes do Cloud Router, selecione a sessão do BGP a ser atualizada.

  4. Na página de detalhes da sessão do BGP, selecione Editar.

  5. Em Rotas, selecione Criar rotas personalizadas.

  6. Selecione Anunciar todas as sub-redes visíveis para o Cloud Router para continuar divulgando as sub-redes disponíveis para o Cloud Router. A ativação dessa opção imita o comportamento padrão do Cloud Router.

  7. Selecione Adicionar rota personalizada para adicionar uma rota anunciada.

  8. Configure a divulgação de rota.

    • Origem: selecione Intervalo de IP personalizado para especificar um intervalo de IP personalizado.
    • Intervalo de endereços IP:
      • Para conectividade IPv4: 199.36.153.4/30
      • Para conectividade IPv6: 2600:2d00:0002:1000::/64
    • Descrição: adicione uma descrição de Restricted Google APIs IPs.
  9. Quando terminar de adicionar as rotas, selecione Salvar.

gcloud

Execute o comando update-bgp-peer, usando a sinalização --set-advertisement-ranges ou --add-advertisement-ranges para especificar os intervalos de IP personalizados.

  • Para definir intervalos de IP personalizados, use a sinalização --set-advertisement-ranges. Todas as divulgações personalizadas existentes serão substituídas.

    Se você estiver adicionando intervalos personalizados IPv6 e o tráfego IPv6 estiver desativado para a sessão do BGP, será possível ativá-lo com o flag --enable-ipv6.

    O exemplo abaixo atualiza a sessão my-bgp-session do BGP no my-router do Cloud Router para divulgar todas as sub-redes e o intervalo de IP personalizado:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges RANGES
    

    Substitua RANGES pelos intervalos que você quer usar:

    • Para conectividade IPv4: 199.36.153.4/30
    • Para conectividade IPv6: 2600:2d00:0002:1000::/64
    • Para conectividade IPv4 e IPv6: 199.36.153.4/30,2600:2d00:0002:1000::/64

  • Para anexar intervalos de IP personalizados aos atuais, use a sinalização --add-advertisement-ranges. Ela exige que o modo de divulgação do Cloud Router já esteja configurado como custom.

    Se você estiver adicionando intervalos personalizados IPv6 e o tráfego IPv6 estiver desativado para a sessão do BGP, será possível ativá-lo com o flag --enable-ipv6.

    O exemplo a seguir adiciona os intervalos de endereços VIP restritos às divulgações do Cloud Router:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --add-advertisement-ranges RANGES
    

    Substitua RANGES pelos intervalos que você quer usar:

    • Para conectividade IPv4: 199.36.153.4/30
    • Para conectividade IPv6: 2600:2d00:0002:1000::/64
    • Para conectividade IPv4 e IPv6: 199.36.153.4/30,2600:2d00:0002:1000::/64

    Para saber mais, consulte Divulgações de rota personalizadas.

Configurar regras de firewall

Para o Acesso privado do Google, as instâncias de VM usam endereços IP internos e não exigem endereços IP externos para acessar recursos protegidos da API do Google. No entanto, é possível que as instâncias de VM tenham endereços IP externos ou atendam aos requisitos de acesso à Internet. Além das rotas personalizadas, é possível restringir o tráfego de saída de instâncias de VM na sua rede VPC criando 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 primeiro criar uma regra de negação de saída para bloquear todo o tráfego de saída. Em seguida, crie regras de saída de prioridade mais alta que permitem o tráfego para destinos selecionados na sua rede VPC e para o intervalo de endereços IP restricted.googleapis.com. Toda a comunicação com restricted.googleapis.com é feita na porta TCP 443.

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

Configure as regras de firewall locais para permitir que o tráfego dos hosts locais alcance os intervalos de endereços IP restricted.googleapis.com.

Configura o DNS

Para uso geral do VPC Service Controls, recomendamos que você use as políticas de resposta do Cloud DNS para configurar o DNS para suas redes VPC. Ao usar o Cloud DNS, não é preciso criar uma zona particular gerenciada para configurar o DNS. Uma política de resposta usa o comportamento passthru para permitir que nomes, como www.googleapis.com, sejam permitidos depois do nome do caractere curinga no exemplo *.googleapis.com. Para mais informações, consulte Como gerenciar políticas e regras de resposta.

Também é possível usar zonas particulares gerenciadas para suas redes VPC. As zonas DNS particulares do Cloud DNS permitem hospedar uma zona de DNS acessível em redes VPC autorizadas. Para configurar o encaminhamento de determinados servidores de nomes locais, use os intervalos de endereços IP restricted.googleapis.com. Em seguida, crie uma zona particular para googleapis.com com um registro A de DNS que mapeie restricted.googleapis.com e registros CNAME apropriados para cada nome *.googleapis.com. Para mais informações, consulte Como gerenciar zonas.

Para acesso local, é possível configurar uma política de encaminhamento de entrada do Cloud DNS para permitir que servidores de nomes locais consultem uma zona particular gerenciada do Cloud DNS ou um servidor de nomes local, como um que use BIND:

Configurar DNS com o Cloud DNS

Para ativar a resolução DNS para instâncias de VM na sua rede VPC, use um Cloud DNS ou os hosts em uma rede local ou ambos. Se você estiver usando a VPC compartilhada, consulte Zonas particulares e VPC compartilhada na documentação do Cloud DNS. Além disso, se você estiver usando a VPC compartilhada, verifique se o projeto host da rede VPC compartilhada está incluído no mesmo perímetro de serviço dos projetos que se conectam à rede.

É possível configurar o DNS com o Cloud DNS usando políticas de resposta ou zonas particulares.

Configurar o Cloud DNS usando políticas de resposta

As seções a seguir descrevem dois métodos para configurar o Cloud DNS usando políticas de resposta:

  • Direcionando nomes de host específicos para os endereços IP restricted.googleapis.com
  • Direcionando todos os nomes de host, com exceções, para os endereços IP restricted.googleapis.com

Direcionar nomes específicos para endereços VIP restritos

É possível configurar uma política de resposta que tenha dados CNAME locais de cada zona para converter solicitações de APIs do Google para APIs restritas do Google. Os nomes não especificados continuarão sendo resolvidos usando o DNS regular.

Por exemplo, é possível criar uma política de resposta para pubsub.googleapis.com, que tem dados CNAME locais de uma zona, para converter solicitações da API do Google para restricted.googleapis.com. Enquanto isso, www.googleapis.com, que não foi especificado, continua sendo resolvido com o DNS regular.

No exemplo de configuração a seguir, você cria uma política e a aplica a uma rede VPC específica.

gcloud

  1. Para criar uma política de resposta, execute o comando gcloud dns response-policies create:

    gcloud dns response-policies create RESPONSE_POLICY_NAME \
        --networks=NETWORK \
        --description=DESCRIPTION
    

    Substitua:

    • RESPONSE_POLICY_NAME: o nome ou ID da política de resposta que você quer criar, como myresponsepolicy.
    • NETWORK: uma lista separada por vírgulas com os nomes de rede para associar à política de resposta, como network1,network2.
    • DESCRIPTION: uma descrição da política de resposta, como My new response policy.
  2. Se você estiver usando apenas o intervalo de endereços IPv4 para restricted.googleapis.com, adicione uma regra à política que contenha um conjunto de registros para o intervalo de endereços IPv4.

    Comando gcloud dns response-policies rules create:

    gcloud dns response-policies rules create RESPONSE_POLICY_RULE_NAME \
        --response-policy=RESPONSE_POLICY_NAME \
        --dns-name=DNS_NAME. \
        --local-data=name="DNS_NAME.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
    

    Substitua:

    • RESPONSE_POLICY_RULE_NAME: um nome para a regra da política de resposta que você quer criar, como myresponsepolicyrule.
    • RESPONSE_POLICY_NAME: o nome da política de resposta, como myresponsepolicy.
    • DNS_NAME: o nome do DNS para o qual você está criando a regra, como pubsub.googleapis.com.; observe o ponto final
  3. Se você estiver usando os intervalos de endereços IPv4 e IPv6 para restricted.googleapis.com, adicione uma regra à política que contenha conjuntos de registros para os intervalos de endereços IPv4 e IPv6.

    gcloud dns response-policies rules create RESPONSE_POLICY_RULE_NAME \
        --response-policy=RESPONSE_POLICY_NAME \
        --dns-name=DNS_NAME. \
        --local-data=name="DNS_NAME.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7" \
        --local-data=name="DNS_NAME.",type="AAAA",ttl=300,rrdatas="2600:2d00:0002:1000::"
    

API

  1. Criar uma política de resposta por URL:

    {
      kind: "dns#responsePolicy",
      response_policy_name: RESPONSE_POLICY_NAME,
      description: RESPONSE_POLICY_DESCRIPTION,
      networks: [
        {
          network_url: URL_TO_NETWORK;
        }
      ]
    }
    

    Substitua:

    • RESPONSE_POLICY_NAME: um nome para a política de resposta.
    • RESPONSE_POLICY_DESCRIPTION: uma descrição da política de resposta.
    • URL_TO_NETWORK: o URL para o qual você está criando a política de resposta.

  2. Se você estiver usando apenas o intervalo de endereços IPv4 para restricted.googleapis.com, adicione uma regra à política que contenha um conjunto de registros para o intervalo de endereços IPv4.

    {
      kind: "dns#responsePolicyRules",
      rule_name: RULE_NAME,
      dns_name: DNS_NAME,
      local_data: [
        {
          name: "DNS_NAME.",
          type: "A",
          ttl: 300,
          rrdata: ["199.36.153.4", "199.36.153.5", "199.36.153.6", "199.36.153.7"]
        }
      ]
    }
    

    Substitua:

    • RULE_NAME: um nome para a regra que você está criando, como pubsub.
    • DNS_NAME: o nome do DNS para o qual você está criando a regra, como pubsub.googleapis.com.; observe o ponto final
  3. Se você estiver usando os intervalos de endereços IPv4 e IPv6 para restricted.googleapis.com, adicione uma regra à política que contenha conjuntos de registros para os intervalos de endereços IPv4 e IPv6.

    {
      kind: "dns#responsePolicyRules",
      rule_name: RULE_NAME,
      dns_name: DNS_NAME,
      local_data: [
        {
          name: "DNS_NAME.",
          type: "A",
          ttl: 300,
          rrdata: [""199.36.153.4", "199.36.153.5", "199.36.153.6", "199.36.153.7""]
        }
      ],
      local_data: [
        {
          name: "DNS_NAME.",
          type: "AAAA",
          ttl: 300,
          rrdata: ["2600:2d00:0002:1000::"]
        }
      ]
    }
    

    Substitua:

    • RULE_NAME: um nome para a regra que você está criando, como pubsub.
    • DNS_NAME: o nome do DNS para o qual você está criando a regra, como pubsub.googleapis.com.; observe o ponto final

Direcionar todos os nomes, exceto alguns, para endereços VIP restritos

É possível definir regras para ignorar algumas respostas DNS de uma regra de política que abranja um domínio inteiro ou um bloco de endereços IP grande. Esse conceito é chamado de comportamento de passthru. Ao usar o comportamento de passthru, você pode permitir que os nomes que não são compatíveis com os controles de serviço sejam permitidos depois do nome do caractere curinga.

Por exemplo, você pode deixar www.googleapis.com ser permitido depois do nome de caractere curinga no exemplo *.googleapis.com. A correspondência exata para www prevalece sobre o caractere curinga *.

No exemplo de configuração a seguir, você cria uma política com um nome especificado e a aplica a uma rede VPC específica. A regra permite que www.googleapis.com ignore o caractere curinga *.googleapis.com.

gcloud

  1. Para criar uma política de resposta, execute o comando gcloud dns response-policies create:

    gcloud dns response-policies create RESPONSE_POLICY_NAME \
        --networks=NETWORK \
        --description=DESCRIPTION
    

    Substitua:

    • RESPONSE_POLICY_NAME: o nome ou ID da política de resposta que você quer criar, como myresponsepolicy.
    • NETWORK: uma lista separada por vírgulas com os nomes de rede para associar à política de resposta, como network1,network2.
    • DESCRIPTION: uma descrição da política de resposta, como My new response policy.
  2. Se você quiser adicionar uma regra para ignorar a política, execute o comando gcloud dns response-policies rules create e defina a sinalização --behavior como bypassResponsePolicy:

    gcloud dns response-policies rules create RESPONSE_POLICY_RULE_NAME \
        --response-policy=RESPONSE_POLICY_NAME \
        --dns-name=DNS_NAME \
        --behavior=bypassResponsePolicy
    

    Substitua:

    • RESPONSE_POLICY_RULE_NAME: um nome para a regra da política de resposta que você quer criar, como myresponsepolicyrule.
    • RESPONSE_POLICY_NAME: o nome da política de resposta, como myresponsepolicy.
    • DNS_NAME: o DNS ou nome de domínio, como www.googleapis.com.

API

  1. Criar uma política de resposta:

    {
      kind: "dns#responsePolicy",
      response_policy_name: RESPONSE_POLICY_NAME,
      description: RESPONSE_POLICY_DESCRIPTION,
      networks: [
        {
          network_url: URL_TO_NETWORK;
        }
      ]
    }
    

    Substitua:

    • RESPONSE_POLICY_NAME: um nome para a política de resposta, como my-response-policy.
    • RESPONSE_POLICY_DESCRIPTION: uma descrição da política de resposta, como my response policy.
    • URL_TO_NETWORK: o URL para o qual você está criando a política de resposta.
  2. Adicionar uma regra à política:

    {
      kind: "dns#responsePolicyRules",
      rule_name: RULE_NAME,
      dns_name: DNS_NAME,
      local_data: [
        {
          name: "*.googleapis.com.",
          type: "A",
          ttl: 300,
          rrdata: ["restricted.googleapis.com."]
        }
      ]
    }
    {
      kind: "dns#responsePolicyRules",
      rule_name: "www-passthru",
      dns_name: "www.googleapis.com.",
      behavior: BYPASS_RESPONSE_POLICY
    }
    

    Substitua:

    • RULE_NAME: um nome para a regra que você está criando, como googleapis.
    • DNS_NAME: o nome do DNS curinga para o qual você está criando a regra, como *.googleapis.com.. Observe o ponto no final.

Configurar o Cloud DNS usando zonas particulares

Para configurar o Cloud DNS quando não for possível usar políticas de resposta, use zonas particulares.

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

    gcloud 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
    

    Substitua:

    • ZONE_NAME: um nome para a zona que você está criando. Por exemplo, vpc. Esse nome é usado em todas as etapas a seguir.
    • PROJECT_ID: o ID do projeto que hospeda a 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
    

    Substitua ZONE_NAME pelo 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
    

    Substitua ZONE_NAME pelo 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
    

    Substitua ZONE_NAME pelo nome da zona que você criou na primeira etapa.

    Se você estiver configurando os endereços IPv6 para restricted.googleapis.com, crie também o seguinte conjunto de registros:

    gcloud dns record-sets transaction add --name=restricted.googleapis.com. \
        --type=AAAA 2600:2d00:0002:1000:: \
        --zone=ZONE_NAME \
        --ttl=300
    
  4. Execute a transação.

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

    Substitua ZONE_NAME pelo nome da zona que você criou na primeira etapa.

  5. Opcional. Para permitir que os hosts locais acessem o VIP restrito, conclua as seguintes etapas:

    1. Crie uma política de DNS e ative o encaminhamento de DNS de entrada para disponibilizar externamente os serviços de resolução de nomes da rede VPC para sistemas em redes locais:

      gcloud dns policies create POLICY_NAME \
       --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \
       --enable-inbound-forwarding \
       --description=DESCRIPTION
      

      Substitua:

      • POLICY_NAME: um nome para a política que você está criando. Por exemplo, apipolicy.
      • PROJECT_ID: o ID do projeto que hospeda a rede VPC.
      • NETWORK_NAME: o nome da rede VPC.
      • DESCRIPTION: uma descrição opcional, legível por humanos, da zona gerenciada.
    2. Na sua rede local, ajuste seu DNS local para o endereço IP do encaminhador do Cloud DNS. Para encontrar o endereço IP do encaminhador, use o comando compute addresses list:

      gcloud compute addresses list --filter='name ~ ^dns-forwarding.*' \
       --format='csv[no-heading](address, subnetwork)'
      

Configurar DNS com o BIND

Se você usa o BIND para resolução de DNS, é possível configurá-lo para resolver solicitações de API do Google para as APIs restritas do Google. Use o exemplo de configuração BIND a seguir, que usa as zonas de política de resposta (RPZ, na sigla em inglês) para atingir esse comportamento:

  1. Adicione as linhas abaixo a /etc/bind/named.conf:

    include "/etc/bind/named.conf.options";
    include "/etc/bind/named.conf.local";
    
  2. Adicione as linhas abaixo a /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 linhas abaixo a /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 linhas abaixo a /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.

Configurar o DNS em casos especiais

Quando for necessário configurar o DNS em casos especiais, tenha em mente o seguinte: