Aceda a APIs a partir de VMs com endereços IP externos

Uma instância de máquina virtual (VM) com um endereço IP externo atribuído à respetiva interface de rede pode estabelecer ligação às APIs e aos serviços Google se os requisitos de rede descritos nesta página forem cumpridos. Embora a ligação seja feita a partir do endereço IP externo da VM, o tráfego permanece dentro da rede Trusted Cloud e não é enviado através da Internet pública.

Requisitos de rede

Tem de cumprir os seguintes requisitos para aceder às APIs e aos serviços Google a partir de uma VM com um endereço IP externo:

  • Se necessário, ative a API para os serviços aos quais quer aceder:

    • Se estiver a aceder a um ponto final de serviço da API Google, tem de ativar a API para esse serviço.

      Por exemplo, para criar um contentor do Cloud Storage através do ponto final do serviço da API storage.s3nsapis.fr ou de uma biblioteca de cliente, tem de ativar a API Cloud Storage.

    • Se estiver a aceder a outros tipos de recursos, pode não ter de ativar APIs.

      Por exemplo, para aceder a um contentor do Cloud Storage noutro projeto através do respetivo storage.s3nsapis.fr URL, não precisa de ativar a API Cloud Storage.

  • Se quiser estabelecer ligação às APIs e aos serviços Google através do IPv6, tem de cumprir estes dois requisitos:

  • Consoante a configuração escolhida, pode ter de atualizar as entradas DNS, os trajetos e as regras da firewall. Para mais informações, consulte o artigo Resumo das opções de configuração.

Resumo das opções de configuração

A tabela seguinte resume as diferentes formas de configurar o acesso privado à Google. Para obter informações de configuração mais detalhadas, consulte o artigo Configuração de rede.

Opção de domínio Configuração de DNS Configuração do encaminhamento Configuração da firewall
Domínios predefinidos Acede às APIs e aos serviços Google através dos respetivos endereços IP públicos, pelo que não é necessária nenhuma configuração de DNS especial.

Certifique-se de que a sua rede VPC pode encaminhar tráfego para os intervalos de endereços IP que são usados pelas APIs e serviços Google.

  • Configuração básica: confirme que tem encaminhamentos predefinidos com o próximo salto default-internet-gateway e um intervalo de destino de 0.0.0.0/0 (para tráfego IPv4) e ::/0 (para tráfego IPv6, se necessário). Crie esses trajetos se estiverem em falta.
  • Configuração personalizada: crie rotas para os intervalos de endereços IP usados pelas APIs e pelos serviços Google.

Certifique-se de que as suas regras de firewall permitem a saída para os intervalos de endereços IP usados pelas APIs e serviços Google.

A regra de firewall de saída de permissão predefinida permite este tráfego, se não existir uma regra de prioridade superior que o bloqueie.

private.googleapis.com

Configure registos de DNS numa zona DNS privada para enviar pedidos para os seguintes endereços IP:

Para tráfego IPv4:

  • 199.36.153.8/30

Para tráfego IPv6:

  • 2600:2d00:0002:2000::/64

Certifique-se de que a sua rede VPC tem rotas para os seguintes intervalos de IP:

Para tráfego IPv4:

  • 199.36.153.8/30
  • 34.126.0.0/18

Para tráfego IPv6:

  • 2600:2d00:0002:2000::/64
  • 2001:4860:8040::/42

Certifique-se de que as suas regras de firewall permitem a saída para os seguintes intervalos de IPs:

Para tráfego IPv4:

  • 199.36.153.8/30
  • 34.126.0.0/18

Para tráfego IPv6:

  • 2600:2d00:0002:2000::/64
  • 2001:4860:8040::/42
restricted.googleapis.com

Configure registos DNS para enviar pedidos para os seguintes endereços IP:

Para tráfego IPv4:

  • 199.36.153.4/30

Para tráfego IPv6:

  • 2600:2d00:0002:1000::/64

Certifique-se de que a sua rede VPC tem rotas para os seguintes intervalos de IP:

Para tráfego IPv4:

  • 199.36.153.4/30
  • 34.126.0.0/18

Para tráfego IPv6:

  • 2600:2d00:0002:1000::/64
  • 2001:4860:8040::/42

Certifique-se de que as suas regras de firewall permitem a saída para os seguintes intervalos de IPs:

Para tráfego IPv4:

  • 199.36.153.4/30
  • 34.126.0.0/18

Para tráfego IPv6:

  • 2600:2d00:0002:1000::/64
  • 2001:4860:8040::/42

Configuração da rede

Esta secção descreve os requisitos básicos da rede que tem de cumprir para que uma VM na sua rede VPC aceda às APIs e aos serviços Google.

Opções de domínio

Escolha o domínio que quer usar para aceder às APIs e aos serviços Google.

Os endereços IP virtuais (VIPs) private.googleapis.com e restricted.googleapis.com suportam apenas protocolos baseados em HTTP através de TCP (HTTP, HTTPS e HTTP/2). Todos os outros protocolos, incluindo MQTT e ICMP, não são suportados. Os Websites e as funcionalidades interativas que usam a Internet, por exemplo, para redirecionamentos ou obter conteúdo, não são suportados.

Domínio e intervalos de endereços IP Serviços suportados Exemplo de utilização

Domínios predefinidos.

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

Vários intervalos de endereços IP: pode determinar um conjunto de intervalos de IP que contenham os possíveis endereços usados pelos domínios predefinidos consultando os endereços IP para os domínios predefinidos.

Permite o acesso à API à maioria das APIs e serviços Google, independentemente de serem suportados pelos VPC Service Controls. Inclui acesso à API do Google Maps, Google Ads e Trusted Cloud. Inclui Aplicações Web do Google Workspace, como o Gmail e o Google Docs, e outras aplicações Web.

Os domínios predefinidos são usados quando não configura registos de DNS para private.googleapis.com e restricted.googleapis.com.

private.googleapis.com

199.36.153.8/30

2600:2d00:0002:2000::/64

Permite o acesso à API à maioria das APIs e serviços Google, independentemente de serem suportados pelos VPC Service Controls. Inclui acesso à API do Google Maps, Google Ads Trusted Cloude à maioria das outras APIs Google, incluindo a lista seguinte. Não suporta aplicações Web do Google Workspace, como o Gmail e o Google Docs.

Nomes de domínio correspondentes:

  • accounts.google.com (só suporta caminhos necessários para a autenticação OAuth de contas de serviço; a autenticação de contas de utilizador é interativa e não é suportada)
  • *.aiplatform-notebook.cloud.google.com
  • *.aiplatform-notebook.googleusercontent.com
  • appengine.google.com
  • *.appspot.com
  • *.backupdr.cloud.google.com
  • backupdr.cloud.google.com
  • *.backupdr.googleusercontent.com
  • backupdr.googleusercontent.com
  • *.cloudfunctions.net
  • *.cloudproxy.app
  • *.composer.cloud.google.com
  • *.composer.googleusercontent.com
  • *.datafusion.cloud.google.com
  • *.datafusion.googleusercontent.com
  • *.dataproc.cloud.google.com
  • dataproc.cloud.google.com
  • *.dataproc.googleusercontent.com
  • dataproc.googleusercontent.com
  • dl.google.com
  • gcr.io ou *.gcr.io
  • *.googleapis.com
  • *.gke.goog
  • *.gstatic.com
  • *.kernels.googleusercontent.com
  • *.ltsapis.goog
  • *.notebooks.cloud.google.com
  • *.notebooks.googleusercontent.com
  • packages.cloud.google.com
  • pkg.dev ou *.pkg.dev
  • pki.goog ou *.pki.goog
  • *.run.app
  • source.developers.google.com
  • storage.cloud.google.com

Use private.googleapis.com para aceder às APIs e aos serviços Google através de um conjunto de endereços IP apenas encaminháveis a partir de Trusted Cloud.

Escolha private.googleapis.com nestas circunstâncias:

  • Não usa os VPC Service Controls.
  • Usa os VPC Service Controls, mas também precisa de aceder a APIs Google e serviços que não são suportados pelos VPC Service Controls.1

restricted.googleapis.com

199.36.153.4/30

2600:2d00:0002:1000::/64

Ativa o acesso à API às APIs Google e aos serviços suportados pelo VPC Service Controls.

Bloqueia o acesso a APIs e serviços Google que não suportam os VPC Service Controls. Não suporta APIs Google Workspace nem aplicações Web do Google Workspace, como o Gmail e o Google Docs.

Use restricted.googleapis.com para aceder às APIs e aos serviços Google através de um conjunto de endereços IP apenas encaminháveis a partir de Trusted Cloud.

Escolha restricted.googleapis.com quando precisar de acesso a APIs e serviços Google que são suportados pelos VPC Service Controls.

O domínio restricted.googleapis.com não permite o acesso a APIs Google e serviços que não suportam os VPC Service Controls.1

1 Se precisar de restringir os utilizadores apenas às APIs e aos serviços Google que suportam os VPC Service Controls, use o restricted.googleapis.com, uma vez que oferece uma mitigação de riscos adicional para a exfiltração de dados. A utilização de restricted.googleapis.com nega o acesso a APIs Google e serviços que não são suportados pelos VPC Service Controls. Consulte o artigo Configurar a conetividade privada na documentação do VPC Service Controls para obter mais detalhes.

Suporte de IPv6 para private.googleapis.com e restricted.googleapis.com

Os seguintes intervalos de endereços IPv6 podem ser usados para direcionar o tráfego de clientes IPv6 para APIs e serviços Google:

  • private.googleapis.com: 2600:2d00:0002:2000::/64
  • restricted.googleapis.com: 2600:2d00:0002:1000::/64

Considere configurar os endereços IPv6 se quiser usar o domínio private.googleapis.com ou 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.

Configuração de DNS

Para a conetividade com as APIs e os serviços Google, pode optar por enviar pacotes para os endereços IP associados ao VIP private.googleapis.com ou restricted.googleapis.com. Para usar um VIP, tem de configurar o DNS para que as VMs na sua rede VPC alcancem os serviços através dos endereços VIP em vez dos endereços IP públicos.

As secções seguintes descrevem como usar zonas DNS para enviar pacotes para os endereços IP associados ao VIP escolhido. Siga as instruções para todos os cenários que se aplicam a si:

Quando configurar os registos DNS para os VIPs, use apenas os endereços IP descritos nos passos seguintes. Não misture endereços de VIPs do grupo private.googleapis.com e restricted.googleapis.com. Isto pode causar falhas intermitentes porque os serviços oferecidos diferem com base no destino de um pacote.

Configure o DNS para googleapis.com

Crie uma zona DNS e registos para googleapis.com:

  1. Crie uma zona DNS privada para googleapis.com. Considere criar uma zona privada do Cloud DNS para este fim.
  2. Na zona googleapis.com, crie os seguintes registos de DNS privados para private.googleapis.com ou restricted.googleapis.com, consoante o domínio que optou por usar.

    • Para private.googleapis.com:

      1. Crie um registo A para private.googleapis.com que aponte para os seguintes endereços IP: 199.36.153.8, 199.36.153.9, 199.36.153.10 e 199.36.153.11.

      2. Para estabelecer ligação a APIs através de endereços IPv6, também tem de configurar um registo AAAAAprivate.googleapis.com que aponte para 2600:2d00:0002:2000::.

    • Para restricted.googleapis.com:

      1. Crie um registo A para restricted.googleapis.com que aponte para os seguintes endereços IP: 199.36.153.4, 199.36.153.5, 199.36.153.6 e 199.36.153.7.

      2. Para estabelecer ligação a APIs através de endereços IPv6, também tem de criar um registo AAAA para restricted.googleapis.com que aponte para 2600:2d00:0002:1000::.

    Para criar registos de DNS privados no Cloud DNS, consulte o artigo sobre como adicionar um registo.

  3. Na zona googleapis.com, crie um registo CNAME para *.googleapis.com que aponte para o domínio que configurou: private.googleapis.com ou restricted.googleapis.com.

Configure o DNS para outros domínios

Algumas APIs e serviços Google são fornecidos através de nomes de domínio adicionais, incluindo *.gcr.io, *.gstatic.com, *.pkg.dev, pki.goog, *.run.app e *.gke.goog. Consulte a tabela de intervalos de endereços IP e domínios nas Opções de domínio para determinar se os serviços do domínio adicional podem ser acedidos através de private.googleapis.com ou restricted.googleapis.com. Em seguida, para cada um dos domínios adicionais:

  1. Crie uma zona DNS para DOMAIN (por exemplo, gcr.io). Se estiver a usar o Cloud DNS, certifique-se de que esta zona está localizada no mesmo projeto que a sua zona privada googleapis.com.

  2. Nesta zona de DNS, crie os seguintes registos de DNS privados para private.googleapis.com ou restricted.googleapis.com, consoante o domínio que optou por usar.

    • Para private.googleapis.com:

      1. Crie um registo A para DOMAIN a apontar para os seguintes endereços IP: 199.36.153.8, 199.36.153.9, 199.36.153.10 e 199.36.153.11.

      2. Para estabelecer ligação a APIs através de endereços IPv6, também tem de criar um registo AAAA para DOMAIN que aponte para 2600:2d00:0002:2000::.

    • Para restricted.googleapis.com:

      1. Crie um registo A para DOMAIN a apontar para os seguintes endereços IP: 199.36.153.4, 199.36.153.5, 199.36.153.6 e 199.36.153.7.

      2. Para estabelecer ligação a APIs através de endereços IPv6, também tem de criar um registo AAAA para restricted.googleapis.com que aponte para 2600:2d00:0002:1000::.

  3. Na zona DOMAIN, crie um registo CNAME para *.DOMAIN que aponte para DOMAIN. Por exemplo, crie um registo CNAME para *.gcr.io que aponte para gcr.io.

Configure o DNS para nomes de domínio personalizados do Cloud Storage

Se estiver a usar contentores do Cloud Storage e enviar pedidos para um nome de domínio personalizado do Cloud Storage, a configuração de registos DNS para o nome de domínio personalizado do Cloud Storage de modo a apontar para os endereços IP de private.googleapis.com ou restricted.googleapis.com não é suficiente para permitir o acesso aos contentores do Cloud Storage.

Se quiser enviar pedidos para um nome do domínio personalizado do Cloud Storage, também tem de definir explicitamente o cabeçalho Host do pedido HTTP e o SNI TLS como storage.googleapis.com. Os endereços IP de private.googleapis.com e restricted.googleapis.com não suportam nomes de anfitrião personalizados do Cloud Storage em cabeçalhos Host de pedidos HTTP e SNIs TLS.

Opções de encaminhamento

A sua rede VPC tem de ter rotas adequadas cujos próximos saltos sejam o gateway de Internet predefinido. Trusted Cloud não suporta o encaminhamento de tráfego para APIs e serviços Google através de outras instâncias de VMs ou próximos saltos personalizados. Apesar de ser denominado gateway de Internet predefinido, os pacotes enviados a partir de VMs na sua rede VPC para APIs e serviços Google permanecem na rede da Google.

  • Se selecionar os domínios predefinidos, as suas instâncias de VM ligam-se às APIs Google e aos serviços Google através de um subconjunto de endereços IP externos da Google. Estes endereços IP são encaminháveis publicamente, mas o caminho de uma VM numa rede VPC para esses endereços permanece na rede da Google.

  • A Google não publica rotas na Internet para nenhum dos endereços IP usados pelos domínios private.googleapis.com ou restricted.googleapis.com. Consequentemente, estes domínios só podem ser acedidos por VMs numa rede VPC ou em sistemas no local ligados a uma rede VPC.

Se a sua rede VPC contiver uma rota predefinida cujo próximo salto seja a gateway de Internet predefinida, pode usar essa rota para aceder às APIs e aos serviços Google, sem ter de criar rotas personalizadas. Consulte o artigo Encaminhamento com uma rota predefinida para ver detalhes.

Se substituiu uma rota predefinida (destino 0.0.0.0/0 ou ::0/0) por uma rota personalizada cujo próximo salto não é o gateway de Internet predefinido, pode cumprir os requisitos de encaminhamento para as APIs e os serviços Google através do encaminhamento personalizado.

Se a sua rede VPC não tiver uma rota predefinida IPv6, não tem conectividade IPv6 com as APIs e os serviços Google. Adicione um encaminhamento predefinido IPv6 para permitir a conetividade IPv6.

Encaminhamento com um trajeto predefinido

Cada rede VPC contém um encaminhamento predefinido IPv4 (0.0.0.0/0) quando é criada. Se ativar endereços IPv6 externos numa sub-rede, é adicionado um encaminhamento predefinido IPv6 gerado pelo sistema (::/0) a essa rede VPC.

As rotas predefinidas fornecem um caminho para os endereços IP dos seguintes destinos:

  • Os domínios predefinidos.

  • private.googleapis.com: 199.36.153.8/30 e 2600:2d00:0002:2000::/64.

  • restricted.googleapis.com: 199.36.153.4/30 e 2600:2d00:0002:1000::/64.

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

Consola

  1. Na Trusted Cloud consola, aceda à página Rotas.

    Aceda a Trajetos

  2. Filtre a lista de trajetos para mostrar apenas os trajetos da rede que precisa de inspecionar.

  3. Procure um trajeto cujo destino seja 0.0.0.0/0 para tráfego IPv4 ou ::/0 para tráfego IPv6 e cujo próximo salto seja gateway de Internet predefinido.

gcloud

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

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

Se precisar de criar uma rota IPv4 predefinida de substituição, consulte o artigo Adicionar uma rota estática.

Se precisar de criar um encaminhamento IPv6 predefinido de substituição, consulte o artigo Adicionar um encaminhamento IPv6 predefinido.

Encaminhamento personalizado

Em alternativa a uma rota predefinida, pode usar rotas estáticas personalizadas, cada uma com um destino mais específico e cada uma a usar o próximo salto do gateway de Internet predefinido. O número de rotas de que precisa e os respetivos endereços IP de destino dependem do domínio que escolher.

Além disso, recomendamos que adicione rotas para 34.126.0.0/18 e 2001:4860:8040::/42. Para mais informações, consulte o Resumo das opções de configuração.

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

Consola

  1. Na Trusted Cloud consola, aceda à página Rotas.

    Aceda a Trajetos

  2. Use o campo de texto Filtrar tabela para filtrar a lista de rotas usando os seguintes critérios, substituindo NETWORK_NAME pelo nome da sua rede VPC.

    • Rede: NETWORK_NAME
    • Tipo de salto seguinte: default internet gateway
  3. Consulte a coluna Intervalo de IPs de destino para cada trajeto. Se escolheu os domínios predefinidos, verifique se existem várias rotas estáticas personalizadas, uma para cada intervalo de endereços IP usado pelo domínio predefinido. Se 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 inspecionar:

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

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

Se precisar de criar rotas, consulte o artigo Adicionar uma rota estática.

Configuração da firewall

A configuração da firewall da sua rede VPC tem de permitir o acesso das VMs aos endereços IP usados pelas APIs e pelos serviços Google. A regra allow egressimplícita cumpre este requisito.

Em algumas configurações de firewall, tem de criar regras de permissão de saída específicas. Por exemplo, suponhamos que criou uma regra de recusa de saída que bloqueia o tráfego para todos os destinos (0.0.0.0 para IPv4 ou ::/0 para IPv6). Nesse caso, tem de criar uma regra de firewall de autorização de saída cuja prioridade seja superior à regra de negação de saída para cada intervalo de endereços IP usado pelo domínio escolhido para APIs e serviços Google.

Além disso, recomendamos que inclua 34.126.0.0/18 e 2001:4860:8040::/42 na regra de firewall de saída permitida. Para mais informações, consulte o artigo Resumo das opções de configuração.

Para criar regras de firewall, consulte o artigo Criar regras de firewall. Pode limitar as VMs às quais as regras de firewall se aplicam quando define o alvo de cada regra de autorização de saída.

Endereços IP para domínios predefinidos

Esta secção descreve como criar uma lista de intervalos de IP de domínio predefinidos usados pelas APIs e pelos serviços Google, como *.googleapis.com e *.gcr.io. Estes intervalos são atribuídos dinamicamente e mudam com frequência, pelo que não é possível definir intervalos de IP específicos para serviços ou APIs individuais. Para manter uma lista precisa, configure a automatização para executar o script todos os dias. Para alternativas à manutenção de uma lista de intervalos de endereços IP, considere usar o VIP private.googleapis.com ou o Private Service Connect.

  • A Google publica a lista completa de intervalos de IP que disponibiliza aos utilizadores na Internet em goog.json.

  • A Google também publica uma lista de intervalos de endereços IP externos globais e regionais disponíveis para os recursos dos clientes no cloud.json. Trusted Cloud

Os endereços IP usados pelos domínios predefinidos para as APIs e os serviços Google enquadram-se na lista de intervalos calculados subtraindo todos os intervalos em cloud.json aos intervalos em goog.json. Estas listas são atualizadas com frequência.

Pode usar o seguinte script Python para criar uma lista de intervalos de endereços IP que incluem os usados pelos domínios predefinidos para APIs e serviços Google.

Para informações sobre a execução deste script, consulte o artigo Como executar.

from __future__ import print_function

import json

try:
    from urllib import urlopen
except ImportError:
    from urllib.request import urlopen
    from urllib.error import HTTPError

import netaddr

IPRANGE_URLS = {
    "goog": "https://www.gstatic.com/ipranges/goog.json",
    "cloud": "https://www.gstatic.com/ipranges/cloud.json",
}


def read_url(url):
    try:
        return json.loads(urlopen(url).read())
    except (IOError, HTTPError):
        print("ERROR: Invalid HTTP response from %s" % url)
    except json.decoder.JSONDecodeError:
        print("ERROR: Could not parse HTTP response from %s" % url)


def get_data(link):
    data = read_url(link)
    if data:
        print("{} published: {}".format(link, data.get("creationTime")))
        cidrs = netaddr.IPSet()
        for e in data["prefixes"]:
            if "ipv4Prefix" in e:
                cidrs.add(e.get("ipv4Prefix"))
            if "ipv6Prefix" in e:
                cidrs.add(e.get("ipv6Prefix"))
        return cidrs


def main():
    cidrs = {group: get_data(link) for group, link in IPRANGE_URLS.items()}
    if len(cidrs) != 2:
        raise ValueError("ERROR: Could process data from Google")
    print("IP ranges for Google APIs and services default domains:")
    for ip in (cidrs["goog"] - cidrs["cloud"]).iter_cidrs():
        print(ip)


if __name__ == "__main__":
    main()