Como configurar o Acesso privado do Google

Por padrão, quando uma VM do Compute Engine não tem um endereço IP externo atribuído à interface de rede dela, ela só pode enviar pacotes para outros destinos de endereço IP interno. Permita que essas VMs se conectem ao conjunto de endereços IP externos usados pelas APIs e serviços do Google. Para isso, ative o Acesso privado do Google na sub-rede usada pela interface de rede da VM.

O Acesso privado do Google também permite o acesso aos endereços IP externos usados pelo App Engine, incluindo serviços baseados em App Engine de terceiros.

Para visualizar as APIs e os serviços qualificados que podem ser usados com o Acesso privado do Google, consulte Serviços compatíveis na visão geral do Acesso privado do Google.

Consulte Opções de acesso privado para serviços para ver informações básicas sobre o Acesso privado do Google e outras opções de conectividade privada oferecidas pelo Google Cloud.

Especificações

O Acesso privado do Google é ativado por sub-rede, quando ela é criada ou editada após a criação.

Quando o Acesso privado do Google está ativado para uma sub-rede e os requisitos de rede para APIs e serviços do Google para a rede VPC são atendidos, o Google Cloud permite que as VMs com uma interface de rede na sub-rede ativada enviem pacotes das seguintes origens para endereços IP externos de APIs e serviços do Google:

  • O endereço IP interno principal da interface de rede de uma VM em uma sub-rede ativada, exceto se essa interface tiver um endereço externo atribuído

  • Um endereço IP interno de um intervalo de IP do alias da interface de rede da VM em uma sub-rede ativada

Uma VM com um endereço IP externo atribuído à interface de rede não precisa do Acesso privado do Google para se conectar às APIs e serviços do Google. Ele pode se conectar a APIs e serviços do Google, desde que a interface de rede com um endereço IP externo associado esteja em uma rede VPC que atenda aos requisitos de rede.

Requisitos de rede

O Acesso privado do Google tem os requisitos a seguir:

  • Como o Acesso privado do Google é ativado por sub-rede, você precisa usar uma rede VPC. As redes legadas não são compatíveis porque não são compatíveis com sub-redes.

  • O Acesso privado do Google não ativa nenhuma API automaticamente. É necessário ativar as APIs do Google separadamente na página de APIs e serviços do Console do Google Cloud.

  • Se você usa os nomes de domínio private.googleapis.com ou restricted.googleapis.com, é necessário criar registros DNS para direcionar o tráfego para os endereços IP associados a esses domínios. Consulte Configuração de rede para orientações.

  • Sua rede precisa ter rotas apropriadas para os intervalos de IP de destino usados pelas APIs e serviços do Google. Essas rotas precisam usar o próximo salto de gateway de Internet padrão. Se você usa os nomes de domínio private.googleapis.com ou restricted.googleapis.com, é necessário apenas uma rota por domínio. Caso contrário, você precisará criar várias rotas. Consulte Opções de roteamento para mais detalhes.

  • Os firewalls de saída precisam permitir o tráfego para os intervalos de endereços IP usados pelas APIs e serviços do Google. A regra de firewall de saída implícita atende a esse requisito. Para outras maneiras de atender ao requisito de firewall, consulte Configuração de firewall.

Permissões

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 saber mais informações sobre papéis, leia a documentação sobre os papéis do IAM.

Logging

O Cloud Logging captura todas as solicitações de API feitas de instâncias de VM em sub-redes com Acesso privado do Google ativado. As entradas de registro identificam a origem da solicitação de API como um endereço IP interno da instância de chamada.

É possível configurar para que relatórios de uso diário e de acúmulo mensal sejam entregues em um bucket do Cloud Storage. Consulte a página Como ver relatórios de uso para mais detalhes.

Configuração de rede

Esta seção descreve os requisitos básicos de rede que você precisa atender para qualquer VM na rede VPC (usando o Acesso privado do Google ou com um endereço IP externo) para acessar APIs e serviços do Google.

Primeiro, é preciso escolher o domínio em que você acessa os serviços e APIs do Google.

Intervalos de domínios e endereços IP Serviços compatíveis Exemplo de uso
Domínios padrão

Todos os nomes de domínio para APIs e serviços do Google exceto para private.googleapis.com e restricted.googleapis.com.

Vários intervalos de endereços IP: é possível determinar um conjunto de intervalos de IP que contenha os possíveis endereços usados pelos domínios padrão consultando os endereços IP de domínios padrão
Permite o acesso da API à maioria das APIs e serviços do Google, independentemente de serem compatíveis com o VPC Service Controls. Inclui acesso da API ao Google Maps, Google Ads, Google Cloud Platform e à maioria das APIs do Google que têm nomes terminados em googleapis.com. Não é compatível com aplicativos da Web do Google Workspace. Os domínios padrão são usados quando você não configura registros DNS para private.googleapis.com e restricted.googleapis.com
private.googleapis.com

199.36.153.8/30
Permite o acesso da API à maioria das APIs e serviços do Google, independentemente de serem compatíveis com o VPC Service Controls. Inclui acesso da API ao Google Ads, Google Cloud Platform e à maioria das outras APIs Google, incluindo as listas abaixo. Não é compatível com aplicativos da Web do Google Workspace.

Nomes de domínio que terminam com:
  • googleapis.com
  • googleadapis.com
  • ltsapis.goog
  • gcr.io
  • gstatic.com
  • appspot.com
  • cloudfunctions.net
  • pki.goog
  • cloudproxy.app
  • run.app
  • datafusion.googleusercontent.com
  • datafusion.cloud.google.com
Nomes de host/domínio correspondentes:
  • packages.cloud.google.com
  • gcr.io
  • appengine.google.com
  • pki.goog
Use private.googleapis.com para acessar APIs e serviços do Google usando um conjunto de endereços IP somente roteáveis do Google Cloud. Escolha private.googleapis.com nestas circunstâncias:
  • Você não usa o VPC Service Controls.
  • Você usa o VPC Service Controls, mas também precisa acessar APIs e serviços do Google que não são compatíveis com o VPC Service Controls.
restricted.googleapis.com

199.36.153.4/30
Permite o acesso da API a APIs e serviços do Google compatíveis com o VPC Service Controls.

Bloqueia o acesso a APIs e serviços do Google que não são compatíveis com o VPC Service Controls. Não é compatível com aplicativos da Web do Google Workspace ou com APIs do Google Workspace.
Use restricted.googleapis.com para acessar APIs e serviços do Google usando um conjunto de endereços IP roteáveis somente no Google Cloud. Escolha restricted.googleapis.com quando você precisar de acesso a APIs e serviços do Google compatíveis com o VPC Service Controls. O restricted.googleapis.com não permite acesso a APIs e serviços do Google que não são compatíveis com o VPC Service Controls.

Configuração do DNS

Se você escolher private.googleapis.com ou restricted.googleapis.com, precisará configurar o DNS para que as VMs na rede VPC resolvam solicitações para *.googleapis.com:

  1. Crie uma zona do DNS particular para googleapis.com. Considere criar uma zona particular do Cloud DNS para essa finalidade.
  2. Na zona googleapis.com, crie um dos seguintes registros A, dependendo do domínio escolhido:

    • Um registro A para private.googleapis.com que aponta para os seguintes endereços IP: 199.36.153.8, 199.36.153.9, 199.36.153.10, 199.36.153.11
    • Um registro A para restricted.googleapis.com que aponta para os seguintes endereços IP: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7

    Se você estiver usando o Cloud DNS, adicione os registros à zona particular googleapis.com.

  3. Na zona googleapis.com, crie um registro CNAME para *.googleapis.com que aponte para qualquer registro A criado na etapa anterior.

Algumas APIs e serviços do Google são fornecidos usando nomes de domínio adicionais, incluindo *.gcr.io, *.gstatic.com e pki.goog. Consulte a tabela de intervalos de endereços IP e domínios em requisitos de rede para determinar se os serviços do domínio adicional podem ser acessados usando private.googleapis.com ou restricted.googleapis.com. Em seguida, para cada um dos domínios adicionais:

  1. Crie uma zona do DNS para o domínio adicional (por exemplo, gcr.io). Se você estiver usando o Cloud DNS, verifique se essa zona está localizada no mesmo projeto que a zona particular googleapis.com.
  2. Nesta zona do DNS:
    • Crie um registro A para o próprio nome de domínio (zona). Por exemplo, gcr.io. Aponte esse registro A para os mesmos quatro endereços IP para o nome de domínio personalizado escolhido (private.googleapis.com ou restricted.googleapis.com).
    • Crie um registro CNAME para todos os possíveis nomes de host do domínio usando um asterisco e um ponto seguido pelo nome do domínio (zona). Por exemplo, *.gcr.io. Aponte este registro CNAME para o registro A na mesma zona. Por exemplo, aponte *.gcr.io para gcr.io.

Opções de roteamento

A rede VPC precisa ter rotas apropriadas com os próximos saltos que são o gateway de Internet padrão. O Google Cloud não é compatível com o tráfego de roteamento para APIs e serviços do Google por meio de outras instâncias de VM ou próximos saltos personalizados. Embora sejam chamados de gateway de Internet padrão, os pacotes enviados das VMs na sua rede VPC para APIs e serviços do Google permanecem na rede do Google.

  • Se você selecionar os domínios padrão, suas instâncias de VM se conectarão a APIs e serviços do Google usando um subconjunto de endereços IP externos do Google. Esses endereços IP são roteados publicamente, mas o caminho de uma VM em uma rede VPC para esses endereços permanece na rede do Google.

  • O Google não divulga rotas na Internet para nenhum dos endereços IP usados pelos domínios private.googleapis.com ou restricted.googleapis.com. Consequentemente, esses domínios só podem ser acessados por VMs em uma rede VPC ou sistemas locais conectados a uma rede VPC.

Se sua rede VPC contém uma rota padrão em que próximo salto é o gateway de Internet padrão, é possível usar essa rota para acessar APIs e serviços do Google em qualquer domínio, sem precisar criar rotas personalizadas. Consulte Roteamento com uma rota padrão para ver detalhes.

Se você tiver substituído a rota padrão por uma rota estática personalizada com um destino de 0.0.0.0/0 e um próximo salto que não seja o gateway de Internet padrão, será possível atender aos requisitos de roteamento para APIs e serviços do Google usando o roteamento personalizado. Considere o roteamento personalizado nestas situações:

  • Quando você tiver uma rota estática personalizada com o destino 0.0.0.0/0 e o próximo salto como um túnel do Cloud VPN, um balanceador de carga TCP/UDP interno ou outra instância de VM.
  • Quando você usar um Cloud Router para aceitar uma rota dinâmica personalizada com um destino de 0.0.0.0/0.

Como rotear com uma rota padrão

Cada rede VPC contém uma rota padrão quando é criada. O próximo salto dessa rota é o gateway de Internet padrão e fornece um caminho para os domínios padrão, private.googleapis.com e restricted.googleapis.com.

Para verificar a configuração de uma rota padrão em uma determinada rede, siga estas instruções.

Console

  1. Acesse a página "Rotas" no Console do Google Cloud.
    Acessar a página "Rotas"
  2. Filtre a lista de rotas para mostrar apenas as rotas para a rede que você precisa inspecionar.
  3. Procure uma rota que tenha o destino 0.0.0.0/0 em que o próximo salto seja gateway de Internet padrão.

gcloud

Use o seguinte comando gcloud, substituindo NETWORK_NAME pelo nome da rede a ser inspecionada:

gcloud compute routes list \
    --filter="default-internet-gateway NETWORK_NAME"

Se você precisar criar uma rota padrão de substituição, consulte Como adicionar uma rota estática.

Roteamento personalizado

Como alternativa a uma rota padrão, é possível usar rotas estáticas personalizadas, cada uma com um destino mais específico e cada uma usando o próximo salto de gateway de Internet padrão. O número de rotas necessárias e os endereços IP de destino delas dependem do domínio escolhido.

Para verificar a configuração de rotas personalizadas para APIs e serviços do Google em uma determinada rede, siga estas instruções.

Console

  1. Acesse a página "Rotas" no Console do Google Cloud.
    Acessar a página "Rotas"
  2. Use o campo de texto Filtrar tabela para filtrar a lista de rotas usando os critérios a seguir, substituindo NETWORK_NAME pelo nome da sua rede VPC.
    • Rede: NETWORK_NAME
    • Tipo do próximo salto: default internet gateway
  3. Observe a coluna Intervalo de IP de destino de cada rota. Se você escolheu os domínios padrão, verifique se há várias rotas estáticas personalizadas, uma para cada intervalo de endereços IP usado pelo domínio padrão. Se você escolheu private.googleapis.com ou restricted.googleapis.com, procure o intervalo de IP desse domínio.

gcloud

Use o seguinte comando gcloud, substituindo NETWORK_NAME pelo nome da rede a ser inspecionada:

gcloud compute routes list \
    --filter="default-internet-gateway NETWORK_NAME"

As rotas são listadas no formato de tabela, a menos que você personalize o comando com a sinalização --format. Procure na coluna DEST_RANGE o destino de cada rota. Se você escolheu os domínios padrão, verifique se há várias rotas estáticas personalizadas, uma para cada intervalo de endereços IP usado pelo domínio padrão. Se você escolheu private.googleapis.com ou restricted.googleapis.com, procure o intervalo de IP desse domínio.

Se precisar criar rotas, consulte Como adicionar uma rota estática.

Configuração do firewall

A configuração do firewall da rede VPC precisa permitir o acesso de VMs aos endereços IP usados pelas APIs e serviços do Google. A regra allow egress implícita atende a esse requisito.

Em algumas configurações de firewall, é preciso criar regras de permissão de saída específicas. Por exemplo, suponha que você criou uma regra de negação de saída que bloqueia o tráfego para todos os destinos (0.0.0.0). Nesse caso, você precisa criar uma regra de firewall de permissão de saída com prioridade maior do que a regra de negação de saída para cada intervalo de endereços IP usado pelo domínio escolhido para APIs e serviços do Google.

Para criar regras de firewall, consulte Como criar regras de firewall. É possível limitar as VMs às quais as regras de firewall se aplicam ao definir o destino de cada regra de permissão de saída.

Endereços IP para domínios padrão

Siga estas etapas para determinar os intervalos de endereços IP usados pelos domínios padrão, como *.googleapis.com e *.gcr.io.

  • O Google publica a lista completa de intervalos de IP que divulga na Internet em goog.json.
  • O Google também publica uma lista de intervalos de endereços IP externos globais e regionais que podem ser usados pelo cliente do Google Cloud no cloud.json.

Os endereços IP usados pelos domínios padrão para APIs e serviços do Google se encaixam na lista de intervalos calculados removendo todos os intervalos em cloud.json daqueles em goog.json. O exemplo a seguir mostra como conseguir esse intervalo usando Python.

Python

É possível usar o script Python a seguir para criar uma lista de intervalos de endereços IP que incluem aqueles usados pelos domínios padrão para APIs e serviços do Google.

No macOS, esse script requer o ambiente de execução do Python 3 configurado da seguinte maneira:

  • Instale a versão atual do ambiente de execução do Python 3 para macOS.
  • Execute o Install Certificates.command incluído na pasta Python na pasta Aplicativos para instalar uma lista de certificados raiz confiáveis (cert.pem) para uso no ambiente de execução do Python. Substitua VERSION pela versão do Python instalada (como 3.8):
    sudo "/Applications/Python VERSION/Install Certificates.command"
  • Instale o módulo netaddr executando:
    sudo pip3 install netaddr
#!/usr/bin/env python3

import json
import netaddr
import urllib.request

goog_url="https://www.gstatic.com/ipranges/goog.json"
cloud_url="https://www.gstatic.com/ipranges/cloud.json"

def read_url(url):
   try:
      s = urllib.request.urlopen(url).read()
      return json.loads(s)
   except urllib.error.HTTPError:
      print("Invalid HTTP response from %s" % url)
      return {}
   except json.decoder.JSONDecodeError:
      print("Could not parse HTTP response from %s" % url)
      return {}

def main():
   goog_json=read_url(goog_url)
   cloud_json=read_url(cloud_url)

   if goog_json and cloud_json:
      print("{} published: {}".format(goog_url,goog_json.get('creationTime')))
      print("{} published: {}".format(cloud_url,cloud_json.get('creationTime')))
      goog_cidrs = netaddr.IPSet()
      for e in goog_json['prefixes']:
         if e.get('ipv4Prefix'):
            goog_cidrs.add(e.get('ipv4Prefix'))
      cloud_cidrs = netaddr.IPSet()
      for e in cloud_json['prefixes']:
         if e.get('ipv4Prefix'):
            cloud_cidrs.add(e.get('ipv4Prefix'))
      print("IP ranges for Google APIs and services default domains:")
      for i in goog_cidrs.difference(cloud_cidrs).iter_cidrs():
         print(i)

if __name__=='__main__':
   main()

Configuração do Acesso privado do Google

É possível ativar o Acesso privado do Google depois de atender aos requisitos de rede na sua rede VPC.

Como ativar o Acesso privado do Google

Siga estas etapas para ativar o Acesso privado do Google:

Console

  1. Acesse a página Redes VPC no Console do Google Cloud.
    Acessar a página "Redes VPC"
  2. Clique no nome da rede que contém a sub-rede para a qual você precisa ativar o Acesso privado do Google.
  3. Para uma sub-rede existente:
    1. Clique no nome da sub-rede. A página Detalhes da sub-rede é exibida.
    2. Clique em Editar.
    3. Na seção Acesso privado do Google, selecione Ativado.
    4. Clique em Salvar.
  4. Para uma sub-rede nova:
    1. Clique em Adicionar sub-rede.
    2. Especifique o Nome e a Região da nova sub-rede.
    3. Especifique o Intervalo de endereços IP da sub-rede. Esse intervalo não pode sobrepor nenhuma sub-rede na rede VPC atual ou em qualquer rede conectada por peering de rede VPC ou VPN.
    4. Faça outras seleções para que a nova sub-rede atenda às suas necessidades. Por exemplo, talvez seja necessário criar intervalos de IP de sub-rede secundários ou ativar registros de fluxo de VPC.
    5. Selecione Ativado na seção Acesso privado do Google.
    6. Clique em Adicionar.

gcloud

Para uma sub-rede atual:

  1. Determine o nome e a região da sub-rede. Para listar as sub-redes de uma rede específica, use o seguinte comando:

    gcloud compute networks subnets list --filter=NETWORK_NAME
    
  2. Execute o seguinte comando para ativar o Acesso privado do Google:

    gcloud compute networks subnets update SUBNET_NAME \
    --region=REGION \
    --enable-private-ip-google-access
    
  3. Execute o comando a seguir para verificar se o Acesso privado do Google está ativado:

    gcloud compute networks subnets describe SUBNET_NAME \
    --region=REGION \
    --format="get(privateIpGoogleAccess)"
    

Em todos os comandos acima, substitua os seguintes valores por valores válidos:

  • SUBNET_NAME: o nome da sub-rede
  • REGION: a região da sub-rede
  • NETWORK_NAME: o nome da rede VPC que contém a sub-rede

Ao criar uma nova sub-rede, use a sinalização --enable-private-ip-google-access para ativar o Acesso privado do Google:

gcloud compute networks subnets create SUBNET_NAME \
    --region=REGION \
    --network=NETWORK_NAME \
    --range=PRIMARY_IP_RANGE \
    --enable-private-ip-google-access

Substitua o seguinte por valores válidos:

  • SUBNET_NAME: o nome da sub-rede
  • REGION: a região da sub-rede
  • NETWORK_NAME: o nome da rede VPC que contém a sub-rede
  • PRIMARY_IP_RANGE: o intervalo de endereços IP principal da sub-rede

Como desativar o Acesso privado do Google

Siga estas etapas para desativar o Acesso privado do Google para uma sub-rede:

Console

  1. Acesse a página Redes VPC no Console do Google Cloud.
    Acessar a página "Redes VPC"
  2. Clique no nome da rede que contém a sub-rede para a qual você precisa desativar o Acesso privado do Google.
  3. Clique no nome de uma sub-rede atual. A página Detalhes da sub-rede é exibida.
  4. Clique em Editar.
  5. Na seção Acesso privado do Google, selecione Desativado.
  6. Clique em Salvar.

gcloud

  1. Determine o nome e a região da sub-rede. Para listar as sub-redes de uma rede específica, use o seguinte comando:

    gcloud compute networks subnets list \
        --filter=NETWORK_NAME
    
  2. Execute o seguinte comando para desativar o Acesso privado do Google:

    gcloud compute networks subnets update SUBNET_NAME \
        --region=REGION \
        --no-enable-private-ip-google-access
    
  3. Execute o seguinte comando para verificar se o Acesso privado do Google está desativado:

    gcloud compute networks subnets describe SUBNET_NAME \
        --region=REGION \
        --format="get(privateIpGoogleAccess)"
    

Em todos os comandos acima, substitua os seguintes valores por valores válidos:

  • SUBNET_NAME: o nome da sub-rede
  • REGION: a região da sub-rede
  • NETWORK_NAME: o nome da rede VPC que contém a sub-rede

A seguir