Configure a conetividade privada às APIs e aos serviços Google

Este documento descreve como configurar a conetividade privada a partir de anfitriões numa rede da VPC ou numa rede no local para APIs e serviços Google que os VPC Service Controls suportam.

Antes de ler este documento, recomendamos que se familiarize com os conceitos, as especificações e a configuração de rede do acesso privado da Google. Veja diagramas de topologia de exemplo sobre a utilização do acesso privado à Google com os VPC Service Controls.

Antes de começar

  • Ative as APIs às quais quer aceder através da página APIs e serviços na Google Cloud consola.
  • Certifique-se de que tem a função necessária para criar ou atualizar sub-redes. Os proprietários e os editores do projeto, bem como os principais da IAM com a função de administrador de rede, podem criar ou atualizar sub-redes e atribuir endereços IP. Para mais informações sobre as funções, leia a documentação sobre as funções de IAM.
  • Verifique se está configurada uma rede VPC para o acesso privado à Google e o acesso privado à Google para anfitriões no local. As redes VPC de modo automático e personalizado são suportadas. As redes antigas não são suportadas.
  • Certifique-se de que as instâncias de VM numa rede VPC têm um endereço IP privado (sem endereço IP público) e estão numa sub-rede com o acesso privado à Google ativado.
  • Para anfitriões no local, certifique-se de que tem um túnel Cloud VPN existente ou uma ligação Cloud Interconnect à sua rede VPC. Para suportar anfitriões no local com endereços IPv6, consulte o artigo Suporte de IPv6.

Vista geral do procedimento

Para configurar a conetividade privada, conclua as seguintes tarefas:

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

Suporte de IPv6 para restricted.googleapis.com

Pode aceder às APIs Google através do intervalo de endereços IPv6 para o 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 usam endereços IPv6. Os clientes IPv6 que também tenham endereços IPv4 configurados podem aceder às APIs e aos serviços Google através dos endereços IPv4. Nem todos os serviços aceitam tráfego de clientes IPv6.

Para permitir que os clientes IPv6 no seu ambiente no local acedam às APIs Google através de restricted.googleapis.com, tem de configurar a ligação à sua rede VPC para suportar IPv6. Para mais informações, consulte as seguintes páginas:

Os clientes nas instalações podem enviar pedidos a partir de quaisquer endereços GUA ou ULA IPv6, exceto o intervalo ULAfda3:e722:ac3:cc00::/64, que está reservado para utilização interna.

Para mais informações sobre o restricted.googleapis.comVIP, consulte o artigo Configure o acesso privado da Google.

Conetividade direta a APIs e serviços

Algumas APIs e serviços Google suportam a conetividade direta a partir de instâncias de máquinas virtuais (VM) do Compute Engine, ignorando os front-ends da Google (GFEs), o que oferece um melhor desempenho.

Para estabelecer a conetividade direta, é necessário que as suas rotas e regras de firewall permitam que o tráfego IPv4 alcance 34.126.0.0/18 e o tráfego IPv6 alcance 2001:4860:8040::/42. Estes endereços IP, que são um subconjunto do domínio restricted.googleapis.com, suportam o VPC Service Controls. Além disso, não é necessário criar registos de DNS para estes endereços.

Tenha em atenção que a conetividade direta só está disponível a partir de Google Cloud recursos e não é suportada a partir de anfitriões no local.

Configure rotas para restricted.googleapis.com

Embora os VPC Service Controls sejam aplicados aos serviços compatíveis e configurados, independentemente do domínio que usar, o restricted.googleapis.com oferece uma mitigação de riscos adicional para a exfiltração de dados. restricted.googleapis.com Nega o acesso a APIs e serviços Google que não são suportados pelos VPC Service Controls.

Tanto para o acesso privado à Google como para o acesso privado à Google para anfitriões no local, a sua rede VPC tem de incluir uma rota para os intervalos de endereços IP cujo próximo salto é o gateway de Internet predefinido.restricted.googleapis.com Embora o próximo salto seja um gateway de Internet predefinido, o tráfego enviado para restricted.googleapis.com permanece na rede da Google.

Se a sua rede VPC não tiver uma rota predefinida cujo próximo salto seja o gateway de Internet predefinido, pode criar uma rota estática personalizada cujo destino seja o intervalo de endereços IP restricted.googleapis.com e cujo próximo salto seja o gateway de Internet predefinido. Para impedir o acesso à Internet, tem de remover outros trajetos cujo próximo salto seja a gateway de Internet predefinida.

Para mais informações sobre como trabalhar com rotas de VPC, consulte o artigo Usar rotas na documentação da VPC.

Configure rotas estáticas personalizadas numa rede VPC

Adicione rotas estáticas personalizadas para permitir o acesso a serviços geridos pela Google suportados pelos VPC Service Controls.

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

Substitua o seguinte:

  • ROUTE_NAME: um nome para o trajeto personalizado
  • NETWORK_NAME: o nome da sua rede VPC
  • DESTINATION_RANGE: o intervalo de destino para a rota
    • Para encaminhar o tráfego para o VIP restricted.googleapis.com, use os seguintes intervalos:
      • Para tráfego IPv4: 199.36.153.4/30
      • Para tráfego IPv6: 2600:2d00:0002:1000::/64
    • Para encaminhar tráfego para APIs que permitam a conetividade direta, use os seguintes intervalos:
      • Para tráfego IPv4: 34.126.0.0/18
      • Para tráfego IPv6: 2001:4860:8040::/42

Anuncie o trajeto restrito aos anfitriões numa rede no local

Se estiver a usar o acesso privado à Google para anfitriões no local, configure rotas para que o tráfego da API Google seja encaminhado através da sua ligação Cloud VPN ou Cloud Interconnect. Para anunciar os intervalos de endereços VIP restritos à sua rede no local, use o modo de anúncio personalizado do Cloud Router. Os intervalos de endereços VIP restritos só são acessíveis a anfitriões no local que podem alcançar a sua rede VPC através de endereços IP privados.

Pode adicionar esta rota anunciada personalizada a um Cloud Router (para todas as sessões BGP no router) ou a uma sessão BGP selecionada (para um único túnel do Cloud VPN ou anexo de VLAN).

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

Para criar uma rota anunciada personalizada para o intervalo restrito para todas as sessões BGP num Cloud Router existente, siga estes passos:

Consola

  1. Na Google Cloud consola, aceda à página Routers na nuvem.

    Aceder aos Cloud Routers

  2. Selecione o Cloud Router a atualizar.

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

  4. Expanda a secção Rotas anunciadas.

  5. Para Trajetos, selecione Criar trajetos personalizados.

  6. Para continuar a anunciar as sub-redes disponíveis para o Cloud Router, selecione Anunciar todas as sub-redes visíveis para o Cloud Router. A ativação desta opção imita o comportamento predefinido do router na nuvem.

  7. Para adicionar um trajeto anunciado, selecione Adicionar trajeto personalizado .

  8. Configure o anúncio de rota.

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

gcloud

Execute o comando update, usando o indicador --set-advertisement-ranges ou --add-advertisement-ranges para especificar os intervalos de IP personalizados:

  • Para definir intervalos de IPs personalizados, use a flag --set-advertisement-ranges. Todos os encaminhamentos anunciados personalizados existentes são substituídos. O exemplo seguinte atualiza o my-router Cloud Router para anunciar 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 quer usar:

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

  • Para anexar intervalos de IPs personalizados a um anúncio existente, use a flag --add-advertisement-ranges. Tenha em atenção que este sinalizador requer que o modo de anúncio do Cloud Router já esteja definido como custom. O exemplo seguinte adiciona os intervalos de restricted.googleapis.comendereços IP aos anúncios do Cloud Router:

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

    Substitua RANGES pelos intervalos que quer usar:

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

Para criar uma rota anunciada personalizada para o intervalo restrito numa sessão de BGP específica de um Cloud Router existente, siga estes passos:

Consola

  1. Na Google Cloud consola, aceda à página Routers na nuvem.

    Aceder aos Cloud Routers

  2. Selecione o Cloud Router que contém a sessão BGP a atualizar.

  3. Na página de detalhes do Cloud Router, selecione a sessão BGP que quer atualizar.

  4. Na página Detalhes da sessão BGP, selecione Editar.

  5. Para Trajetos, selecione Criar trajetos personalizados.

  6. Selecione Anunciar todas as sub-redes visíveis para o Cloud Router para continuar a anunciar as sub-redes disponíveis para o Cloud Router. A ativação desta opção imita o comportamento predefinido do router na nuvem.

  7. Selecione Adicionar trajeto personalizado para adicionar um trajeto anunciado.

  8. Configure o anúncio de rota.

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

gcloud

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

  • Para definir intervalos de IPs personalizados, use a flag --set-advertisement-ranges. Todos os encaminhamentos anunciados personalizados existentes são substituídos.

    Se estiver a adicionar intervalos personalizados IPv6 e o tráfego IPv6 estiver desativado para a sessão BGP, pode ativá-lo com a flag --enable-ipv6.

    O exemplo seguinte atualiza a sessão de my-bgp-sessionBGP no my-routerCloud Router para anunciar 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 quer usar:

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

  • Para acrescentar intervalos de IPs personalizados aos existentes, use a flag --add-advertisement-ranges. Tenha em atenção que este sinalizador requer que o modo de anúncio do Cloud Router já esteja definido como custom.

    Se estiver a adicionar intervalos personalizados IPv6 e o tráfego IPv6 estiver desativado para a sessão BGP, pode ativá-lo com a flag --enable-ipv6.

    O exemplo seguinte adiciona os intervalos de endereços VIP restritos aos anúncios 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 quer usar:

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

    Para mais informações acerca do modo de publicidade personalizado, consulte o artigo Rotas anunciadas personalizadas.

Configure regras de firewall

Para o acesso privado à Google, as instâncias de VM usam endereços IP internos e não requerem endereços IP externos para alcançar recursos de API Google protegidos. No entanto, é possível que as instâncias de VM tenham endereços IP externos ou, de outra forma, cumpram os requisitos de acesso à Internet. Além das rotas anunciadas personalizadas, pode restringir o tráfego de saída das instâncias de VM na sua rede da VPC criando regras de firewall para recusar o tráfego de saída.

Por predefinição, a regra de firewall de saída permitida implícita permite que as instâncias de VM enviem tráfego para qualquer destino se existir uma rota aplicável. Primeiro, pode criar uma regra de negação de saída para bloquear todo o tráfego de saída. Em seguida, pode criar regras de saída de prioridade mais elevada que permitam o tráfego para destinos selecionados na sua rede VPC e para os intervalos de endereços IP restricted.googleapis.com. Toda a comunicação com restricted.googleapis.com é feita através da porta TCP 443.

Para permitir que o tráfego de Google Cloud alcance os restricted.googleapis.com VIPs, adicione regras de firewall para os seguintes destinos:

  • Para tráfego IPv4: 199.36.153.4/30
  • Para tráfego IPv6: 2600:2d00:0002:1000::/64

Para permitir que o tráfego de Google Cloud alcance APIs e serviços que permitem conetividade direta, adicione regras de firewall para os seguintes destinos:

  • Para tráfego IPv4: 34.126.0.0/18
  • Para tráfego IPv6: 2001:4860:8040::/42

Para mais informações sobre como trabalhar com regras de firewall da VPC, consulte o artigo Use regras de firewall da VPC na documentação da firewall de nova geração da Google Cloud.

Configure as regras da firewall no local para permitir que o tráfego dos seus anfitriões no local alcance os intervalos de endereços IP restricted.googleapis.com.

  • Para tráfego IPv4: 199.36.153.4/30
  • Para tráfego IPv6: 2600:2d00:0002:1000::/64

A conetividade direta às APIs e aos serviços Google não é suportada a partir de redes no local.

Configure o DNS

Pode usar zonas privadas geridas para as suas redes VPC. As zonas DNS privadas do Cloud DNS permitem-lhe alojar uma zona DNS acessível a partir de redes VPC autorizadas. Para configurar o encaminhamento a partir de determinados servidores de nomes no local, pode usar os restricted.googleapis.com intervalos de endereços IP. Em seguida, pode criar uma zona privada para googleapis.com com um registo A de DNS que mapeie restricted.googleapis.com e os registos CNAME adequados para cada nome *.googleapis.com. Para mais informações, consulte o artigo Gerir zonas.

Para o acesso no local, pode configurar uma política de encaminhamento de entrada do Cloud DNS para permitir que os servidores de nomes no local consultem uma zona privada gerida do Cloud DNS. Também pode configurar um servidor de nomes no local, como um que use o BIND:

Configure o DNS com o Cloud DNS

Para ativar a resolução de DNS para instâncias de VM na sua rede VPC, anfitriões numa rede no local ou ambos, use o Cloud DNS. Se estiver a usar a VPC partilhada, consulte o artigo Zonas privadas e VPC partilhada na documentação do Cloud DNS. Além disso, se estiver a usar a VPC partilhada, recomendamos que inclua o projeto anfitrião da rede VPC partilhada no mesmo perímetro de serviço que os projetos que se ligam à rede.

Configure o Cloud DNS através de zonas privadas

Pode usar zonas privadas para configurar o Cloud DNS:

  1. Crie uma zona privada gerida para a 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 o seguinte:

    • ZONE_NAME: um nome para a zona que está a criar. Por exemplo, vpc. Este nome é usado em cada um dos passos seguintes.
    • PROJECT_ID: o ID do projeto que aloja a sua rede VPC.
    • NETWORK_NAME: o nome da sua rede VPC.
    • DESCRIPTION: uma descrição opcional e legível da zona gerida.
  2. Inicie uma transação.

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

    Substitua ZONE_NAME pelo nome da zona que criou no primeiro passo.

  3. Adicione registos 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 criou no primeiro passo.

    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 criou no primeiro passo.

    Se estiver a configurar os endereços IPv6 para restricted.googleapis.com, também crie o seguinte conjunto de registos:

    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 criou no primeiro passo.

  5. Opcional. Para permitir que os anfitriões no local alcancem o VIP restrito, conclua os seguintes passos:

    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 aos sistemas nas redes no local.

      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 o seguinte:

      • POLICY_NAME: um nome para a política que está a criar. Por exemplo, apipolicy.
      • PROJECT_ID: o ID do projeto que aloja a sua rede VPC.
      • NETWORK_NAME: o nome da sua rede VPC.
      • DESCRIPTION: uma descrição opcional e legível da zona gerida.
    2. Na sua rede no local, direcione o DNS no 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)'

Configure o DNS com o BIND

Se usar o BIND para a resolução de DNS, pode configurá-lo para resolver pedidos de APIs Google para as APIs Google restritas. Use a seguinte configuração BIND de exemplo, que usa zonas de políticas de resposta (RPZ) para alcançar este comportamento:

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

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

Configure o DNS em casos especiais

Quando precisar de configurar o DNS em casos especiais, tenha em atenção o seguinte:

  • O BIND personalizado não é suportado quando usa o Dataflow. Para personalizar a resolução de DNS quando usar o Dataflow com os VPC Service Controls, use zonas privadas do Cloud DNS, em vez de usar servidores BIND personalizados. Para usar a sua própria resolução de DNS nas instalações, considere usar umGoogle Cloud método de encaminhamento de DNS.
  • Também pode ter de configurar o DNS para gcr.io se, por exemplo, estiver a usar o Google Kubernetes Engine (GKE). Para mais informações, consulte o artigo Configurar o Container Registry para clusters privados do GKE.