Acessar APIs do Google usando o Private Service Connect

O Private Service Connect permite que você se conecte a produtores de serviços usando endpoints com endereços IP internos na sua rede VPC.

Neste documento, explicamos como usar os endpoints do Private Service Connect para se conectar às APIs do Google. Em vez de enviar solicitações de API para os endereços IP disponíveis publicamente para os endpoints de serviço, como storage.googleapis.com, envie as solicitações ao endereço IP interno de um endpoint do Private Service Connect.

Também é possível usar o Private Service Connect para acessar serviços em outra rede VPC e para publicar serviços.

Papéis

Os papéis do IAM a seguir fornecem as permissões necessárias para executar as tarefas neste guia.

Tarefa Papéis
Criar um endpoint do Private Service Connect Todas as seguintes funções:
Administrador de rede do Compute (roles/compute.networkAdmin ),
Editor do Diretório de serviços (roles/servicedirectory.editor ), e
Administrador do DNS (roles/dns.admin .
Configurar o Acesso privado do Google (opcional) Administrador de rede do Compute (roles/compute.networkAdmin)

Antes de começar

  • O Private Service Connect não ativa automaticamente nenhuma API. É necessário ativar separadamente as APIs do Google que você precisa usar na página de APIs e serviços do Console do Google Cloud.

  • Você precisa ativar a API Compute Engine no projeto.

  • Você precisa ativar a API Service Directory no seu projeto.

  • Você precisa ativar a API Cloud DNS no seu projeto.

  • As regras de firewall de saída precisam permitir o tráfego para o endpoint do Private Service Connect. A configuração padrão de firewall para uma rede VPC permite esse tráfego porque contém uma regra de saída de permissão implícita. Verifique se você não criou uma regra de saída de prioridade mais alta que bloqueia o tráfego.

  • As instâncias de máquina virtual (VM) sem um endereço IP externo atribuído precisam usar uma sub-rede com o Acesso privado do Google ativado para acessar APIs e serviços do Google usando um endpoint do Connect Private Service Connect.

    Uma VM com um endereço IP externo pode acessar serviços e APIs do Google usando endpoints do Private Service Connect, mesmo se o Acesso privado do Google estiver desativado para a sub-rede. A conectividade com o endpoint do Private Service Connect permanece na rede do Google.

  • Se sua rede VPC não tiver nenhum endpoint de conexão de serviço particular, verifique se existe uma zona particular do Cloud DNS para p.googleapis.com. Se a zona existir, exclua-a antes de criar o endpoint do Private Service Connect. Se você não a excluir, a criação da zona DNS do Diretório de serviços usada para o Private Service Connect falhará. Para mais informações, consulte Solução de problemas.

  • Os endpoints do Private Service Connect não são acessíveis em redes VPC com peering.

Como ativar o Acesso privado do Google para uma sub-rede

As VMs sem um endereço IP externo atribuído precisam estar conectadas a uma sub-rede com o Acesso privado do Google ativado para acessar APIs e serviços do Google usando um endpoint de conexão de serviço privado.

Se a VM tiver mais de uma interface, conecte a interface configurada com uma rota padrão (geralmente nic0).

O endereço IP de origem dos pacotes enviados da VM corresponde ao endereço IP interno principal da interface da VM ou a um endereço IP interno de um intervalo de IPs de alias.

Para ativar o Acesso privado do Google em uma sub-rede, siga estas etapas.

Console

  1. No Console do Google Cloud, acesse Redes VPC.
    Acessar 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. Clique no nome da sub-rede. A página Detalhes da sub-rede é exibida.
  4. Clique em Editar.
  5. Na seção Acesso privado do Google, selecione Ativado.
  6. Clique em Save.

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 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

Terraform

Use o recurso do Terraform para ativar o Acesso privado do Google em uma sub-rede.

resource "google_compute_network" "network" {
  provider                = google-beta
  project                 = var.project # Replace this with your project ID in quotes
  name                    = "tf-test"
  auto_create_subnetworks = false
}

resource "google_compute_subnetwork" "vpc_subnetwork" {
  provider                 = google-beta
  project                  = google_compute_network.network.project
  name                     = "test-subnetwork"
  ip_cidr_range            = "10.2.0.0/16"
  region                   = "us-central1"
  network                  = google_compute_network.network.id
  private_ip_google_access = true
}

Private Service Connect e Diretório de serviços

Os endpoints da Conexão de serviço particular são registrados no Diretório de serviços. O Diretório de serviços é uma plataforma para armazenar, gerenciar e publicar serviços. Ao criar um endpoint do Private Service Connect para acessar as APIs e os serviços do Google, selecione uma região do Diretório de serviços e um namespace do Diretório de serviços.

Região do Diretório de serviços

O Diretório de serviços é um serviço regional. A região selecionada define onde está o plano de controle do Diretório de serviços. Não há diferença funcional entre as regiões, mas pode haver uma preferência por motivos administrativos.

Ao criar o primeiro endpoint do Private Service Connect para APIs do Google em uma rede VPC, a região selecionada é usada como a região padrão para todos os endpoints subsequentes criados nessa rede. Se uma região ainda não estiver definida para uma rede e você não especificar uma região, ela será definida como us-central1. Todos os endpoints de uma rede precisam usar a mesma região do Diretório de serviços.

Namespace do diretório de serviços

Quando você cria o primeiro endpoint do Private Service Connect para APIs do Google em uma rede VPC, o namespace selecionado é usado como o namespace padrão para todos os endpoints subsequentes criados nessa rede. Se o namespace ainda não estiver definido para uma rede e você não especificar um namespace, um namespace gerado pelo sistema será usado. Todos os endpoints de uma rede precisam usar o mesmo namespace do Diretório de serviços. O namespace escolhido precisa ser usado apenas para os endpoints do Private Service Connect usados para acessar as APIs do Google. É possível usar o mesmo namespace para endpoints em várias redes.

Quando você cria um endpoint do Private Service Connect, as seguintes configurações de DNS são criadas:

  • Uma zona de DNS particular do Diretório de serviços é criada para p.googleapis.com

  • Registros DNS são criados em p.googleapis.com para alguns serviços e APIs do Google mais usados que estão disponíveis usando o Private Service Connect e têm nomes DNS padrão que terminam em googleapis.com.

    Consulte Como criar registros DNS para instruções sobre como criar registros DNS para APIs e serviços que não têm um registro DNS em p.googleapis.com.

Os serviços disponíveis variam, dependendo da seleção do pacote de APIs all-apis ou vpc-sc.

Uma zona DNS do Diretório de serviços é criada para cada rede VPC que contém um endpoint de conexão de serviço particular.

Os nomes DNS de um endpoint do Private Service Connect são acessíveis em todas as regiões na sua rede VPC.

APIs compatíveis

Ao criar um endpoint do Private Service Connect para acessar APIs e serviços do Google, você escolhe qual pacote de APIs precisa acessar: Todas as APIs (all-apis) ou VPC-SC (vpc-sc).

Os pacotes de API dão acesso às mesmas APIs que estão disponíveis por meio dos VIPs do Acesso privado do Google.

  • O pacote all-apis fornece acesso às mesmas APIs que private.googleapis.com.

  • O pacote vpc-sc fornece acesso às mesmas APIs que restricted.googleapis.com.

Os pacotes de API são compatíveis apenas com protocolos baseados em HTTP sobre TCP (HTTP, HTTPS e HTTP/2). Todos os outros protocolos, incluindo MQTT e ICMP, não são compatíveis.

Pacote de API Serviços compatíveis Exemplo de uso
all-apis Permite o acesso da API à maioria das APIs e serviços do Google, sejam ou não compatíveis com o VPC Service Controls. Inclui acesso da API ao Maps, Google Ads, Google Cloud e à maioria das outras APIs Google, incluindo as listas abaixo. Não é compatível com aplicativos da Web do Google Workspace. Não é compatível com sites interativos.

Nomes de domínio que correspondem:
  • accounts.google.com (somente os caminhos necessários para a autenticação do OAuth)
  • appengine.google.com
  • *.appspot.com
  • *.cloudfunctions.net
  • *.cloudproxy.app
  • *.datafusion.cloud.google.com
  • *.datafusion.googleusercontent.com
  • dl.google.com
  • gcr.io ou *.gcr.io
  • *.googleadapis.com
  • *.googleapis.com
  • *.gstatic.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
Escolha all-apis 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.
vpc-sc 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.

Escolha vpc-sc quando você precisar de acesso a APIs e serviços do Google compatíveis com o VPC Service Controls. O pacote vpc-sc não permite acesso a APIs e serviços do Google que não são compatíveis com o VPC Service Controls.

Como escolher um endereço IP para o endpoint do Private Service Connect

Ao configurar o Private Service Connect em uma rede VPC, você fornece um endereço IP a ser usado para o endpoint do Private Service Connect.

O endereço é contabilizado na cota do projeto para endereços IP internos globais.

O endereço IP precisa atender às seguintes especificações:

  • Ele precisa ser um único endereço IP, e não um intervalo de endereços.

  • A entrada precisa ser um endereço IPv4 válido Pode ser um endereço RFC 1918 ou um endereço não RFC 1918. Os endereços IPv6 não são compatíveis com o Private Service Connect.

  • Ela não pode estar dentro do intervalo de sub-redes configuradas na rede VPC.

  • Ele não pode estar dentro de um intervalo de endereços IP primário ou secundário de qualquer sub-rede na rede VPC ou em uma rede conectada à rede VPC usando peering de rede VPC.

  • Ele não pode se sobrepor a uma rota estática personalizada /32 na rede VPC local. Por exemplo, se a rede VPC tiver uma rota estática personalizada para 10.10.10.10/32, não será possível reservar o endereço 10.10.10.10 para o Private Service Connect.

  • Ele não pode se sobrepor a uma rota estática personalizada de peering /32 se você tiver configurado a rede com peering para exportar rotas personalizadas e tiver configurado sua rede VPC para importar rotas personalizadas.

  • Não poderá estar dentro de qualquer um dos intervalos de IP de modo automático (em 10.128.0.0/9) se a rede VPC local for uma rede de modo automático ou se ela estiver em peering com uma rede de modo automático.

  • Ela não pode estar dentro de um intervalo de IP alocado na rede VPC local. No entanto, ele pode estar dentro de um intervalo de IP alocado em uma rede VPC com peering.

  • Se um endpoint do Private Service Connect se sobrepor a uma rota dinâmica personalizada que tenha como destino o mesmo /32, o endpoint do Private Service Connect terá prioridade.

  • Se um endereço IP de endpoint do Private Service Connect estiver localizado dentro do intervalo de destino de uma rota estática personalizada, uma rota dinâmica personalizada ou fizer o peering da rota personalizada e essa rota tiver uma máscara de sub-rede menor que /32, o endpoint do Private Service Connect terá prioridade mais alta.

Como criar um endpoint do Connect Service Connect

Depois de escolher um endereço IP que atenda aos requisitos, crie um endpoint do Private Service Connect.

Um endpoint do Private Service Connect se conecta a APIs e serviços do Google usando uma regra de encaminhamento. Cada regra de encaminhamento é contabilizada na cota de rede VPC para a Private Service Connect.

Console

  1. No Console do Google Cloud, acesse Private Service Connect.

    Acessar a página "Private Service Connect"

  2. Clique na guia Endpoints conectados.

  3. Clique em Conectar endpoint.

  4. Em Destino, selecione o pacote de API de destino que você quer usar:

    • Todas as APIs do Google
    • VPC-SC
  5. Em Nome da conexão, insira um nome para o endpoint.

  6. Selecione uma Rede para o endpoint.

  7. Selecione um Endereço IP para o endpoint.

    O endereço IP precisa atender a estes requisitos.

    Se você precisar de um novo endereço IP, crie um:

    1. Clique em Criar endereço IP.
    2. Digite um Nome e uma Descrição para o endereço IP.
    3. Digite o endereço IP que você quer usar e clique em Salvar.
  8. Se uma região do diretório de serviços ainda não estiver configurada para essa rede VPC, selecione a região que você quer usar.

    Todos os endpoints usados para acessar serviços e APIs do Google em uma determinada rede VPC usam a mesma região do diretório de serviços.

  9. Se um namespace do Diretório de serviços ainda não estiver configurado para esta rede VPC, configure o namespace que você quer usar:

    • Para usar um namespace atribuído automaticamente, clique no menu suspenso Namespace e selecione o namespace atribuído automaticamente.

    • Para selecionar um namespace usado em outra rede, clique no menu suspenso Namespace e selecione um namespace na lista. A lista exibe todos os namespaces no projeto. É preciso selecionar um namespace que seja usado apenas para os endpoints do Private Service Connect usados para acessar as APIs do Google.

    • Para criar um novo namespace, clique no menu suspenso Namespace e em Criar namespace. Digite o namespace e clique em Criar.

    Todos os endpoints que você usa para acessar as APIs e os serviços do Google em uma determinada rede VPC usam o mesmo namespace do diretório de serviços.

  10. Clique em Adicionar endpoint.

gcloud

  1. Reserve um endereço IP interno global para atribuir ao endpoint.

    gcloud compute addresses create ADDRESS_NAME \
      --global \
      --purpose=PRIVATE_SERVICE_CONNECT \
      --addresses=ENDPOINT_IP \
      --network=NETWORK_NAME
    

    Substitua:

    • ADDRESS_NAME: o nome a ser atribuído ao endereço IP reservado.

    • ENDPOINT_IP: o endereço IP a ser reservado para o endpoint.

      O endereço IP precisa atender a estes requisitos.

    • NETWORK_NAME: o nome da rede VPC do endpoint.

  2. Crie uma regra de encaminhamento para conectar o endpoint aos serviços e APIs do Google.

    gcloud compute forwarding-rules create ENDPOINT_NAME \
      --global \
      --network=NETWORK_NAME \
      --address=ADDRESS_NAME \
      --target-google-apis-bundle=API_BUNDLE \
      [ --service-directory-registration=REGION_NAMESPACE_URI ]
    

    Substitua:

    • ENDPOINT_NAME: o nome a ser atribuído ao endpoint. O nome precisa ser uma string de 1 a 20 caracteres, contendo apenas letras minúsculas e números. O nome precisa começar com uma letra.

    • NETWORK_NAME: o nome da rede VPC do endpoint.

    • ADDRESS_NAME: o nome do endereço reservado na rede associada.

    • API_BUNDLE: o pacote de APIs a ser disponibilizado usando o endpoint. Veja a lista de APIs compatíveis.

      • Use all-apis para conceder acesso a todas as APIs compatíveis.

      • Use vpc-sc para restringir o acesso às APIs do Google compatíveis com o VPC Service Controls.

    • REGION_NAMESPACE_URI: o URI do namespace ou região do serviço de diretório que você quer usar. Esse URI precisa referenciar o mesmo projeto em que você está criando o endpoint do Private Service Connect.

      • É possível definir uma região apenas com projects/PROJECT_NAME/locations/REGION.

      • Defina uma região e um namespace com projects/PROJECT_NAME/locations/REGION/namespaces/NAMESPACE.

      Se você omitir --service-directory-registration completamente ou definir uma região sem um namespace, ocorrerá o seguinte:

      • Se uma região ou um namespace já estiver configurado para essa rede VPC, esses padrões serão usados.

      • Se uma região não estiver configurada, ela será definida como us-central1. Se um namespace não for configurado, um namespace gerado pelo sistema será atribuído.

API

  1. Reserve um endereço IP interno global para atribuir ao endpoint.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
    
    {
    "name": ADDRESS_NAME,
    "address": ENDPOINT_IP,
    "addressType": "INTERNAL",
    "purpose": PRIVATE_SERVICE_CONNECT,
    "network": NETWORK_URL
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto.

    • ADDRESS_NAME: o nome a ser atribuído ao endereço IP reservado.

    • ENDPOINT_IP: o endereço IP a ser reservado para o endpoint.

      O endereço IP precisa atender a estes requisitos.

    • NETWORK_URL: a rede VPC do endpoint. Use o método network.list ou gcloud compute networks list --uri para encontrar os URLs das suas redes.

  2. Crie uma regra de encaminhamento para conectar o endpoint aos serviços e APIs do Google.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules
    {
     "IPAddress": ADDRESS_URL,
     "network": NETWORK_URL,
     "name": ENDPOINT_NAME,
     "target": API_BUNDLE,
     "serviceDirectoryRegistrations : [
       {
         "service_directory_region": REGION,
         "namespace": "NAMESPACE"
    
       }
     ],
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto.

    • ENDPOINT_NAME: o nome a ser atribuído ao endpoint. O nome precisa ser uma string de 1 a 20 caracteres, contendo apenas letras minúsculas e números. O nome precisa começar com uma letra.

    • NETWORK_URL: a rede VPC do endpoint. Use o método network.list ou gcloud compute networks list --uri para encontrar os URLs das suas redes.

    • ADDRESS_URL: o URL do endereço reservado na rede associada. Use o método globalAddresses.list ou gcloud compute addresses list --uri para encontrar os URLs dos endereços reservados.

    • API_BUNDLE: o pacote de APIs a ser disponibilizado usando o endpoint. Veja a lista de APIs compatíveis.

      • Use all-apis para conceder acesso a todas as APIs compatíveis.

      • Use vpc-sc para restringir o acesso às APIs do Google compatíveis com o VPC Service Controls.

    • REGION: a região do Diretório de serviços que você quer usar. Por exemplo, us-central1. Se você omitir REGION e uma região já estiver configurada para essa rede VPC, essa região será usada. Se uma região não estiver configurada, a região será definida como us-central1.

    • NAMESPACE: o nome do namespace do Diretório de serviços que você quer usar. Se você omitir NAMESPACE e um namespace já estiver configurado para essa rede VPC, esse namespace será usado. Se um namespace não for configurado, um namespace gerado pelo sistema será atribuído.

Terraform

É possível usar os seguintes recursos do Terraform para criar um endpoint do Private Service Connect:

resource "google_compute_global_address" "default" {
  provider     = google-beta
  project      = google_compute_network.network.project
  name         = "global-psconnect-ip"
  address_type = "INTERNAL"
  purpose      = "PRIVATE_SERVICE_CONNECT"
  network      = google_compute_network.network.id
  address      = "10.3.0.5"
}
resource "google_compute_global_forwarding_rule" "default" {
  provider              = google-beta
  project               = google_compute_network.network.project
  name                  = "globalrule"
  target                = "all-apis"
  network               = google_compute_network.network.id
  ip_address            = google_compute_global_address.default.id
  load_balancing_scheme = ""
}

Como verificar se o endpoint está funcionando

Crie uma instância de VM na rede VPC em que o Private Service Connect está configurado. Execute este comando na VM para verificar se o endpoint do Private Service Connect está funcionando.

curl -v ENDPOINT_IP/generate_204

Substitua:

  • ENDPOINT_IP: o endereço IP do endpoint do Private Service Connect.

Se o endpoint estiver funcionando, você verá um código de resposta HTTP 204.

Como listar endpoints

É possível listar todos os endpoints do Private Service Connect configurados.

Console

  1. No Console do Google Cloud, acesse Private Service Connect.

    Acessar a página "Private Service Connect"

  2. Clique na guia Endpoints conectados.

    Os endpoints do Private Service Connect são exibidos.

gcloud

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

A resposta será semelhante a:

NAME  REGION  IP_ADDRESS  IP_PROTOCOL  TARGET
RULE          IP          TCP          all-apis

Como receber informações sobre um endpoint

É possível visualizar todos os detalhes de configuração de um endpoint do Private Service Connect.

Console

  1. No Console do Google Cloud, acesse Private Service Connect.

    Acessar a página "Private Service Connect"

  2. Clique na guia Endpoints conectados.

    Os endpoints do Private Service Connect são exibidos.

  3. Clique no endpoint do Private Service Connect cujos detalhes você quer visualizar.

gcloud

gcloud compute forwarding-rules describe \
    ENDPOINT_NAME --global

Como rotular um endpoint

É possível gerenciar rótulos para endpoints do Private Service Connect. Consulte Como rotular recursos para mais informações.

Como excluir um endpoint

É possível excluir um endpoint do Private Service Connect.

Console

  1. No Console do Google Cloud, acesse Private Service Connect.

    Acessar a página "Private Service Connect"

  2. Clique na guia Endpoints conectados.

  3. Selecione o endpoint do Private Service Connect que você quer excluir e clique em Excluir.

gcloud

    gcloud compute forwarding-rules delete \
        ENDPOINT_NAME --global

Substitua:

  • ENDPOINT_NAME: o nome do endpoint que você quer excluir.

Como usar um endpoint

Para usar um endpoint do Private Service Connect, envie solicitações a um nome de host DNS que seja resolvido para o endereço IP do endpoint.

  • É possível usar os nomes de DNS p.googleapis.com criados automaticamente se for possível configurar os clientes para usar um endpoint personalizado e se os registros de DNS p.googleapis.com forem criados para as APIs e os serviços que você quer usar. Consulte Como usar nomes de DNS p.googleapis.com para mais informações.

    Por exemplo, se o nome do endpoint for xyz, os registros DNS serão criados para storage-xyz.p.googleapis.com, compute-xyz.p.googleapis.com e outras APIs usadas com frequência no pacote de APIs.

  • É possível criar registros DNS usando os nomes DNS padrão se você estiver usando um cliente que não tenha sido configurado para usar um endpoint personalizado ou se não houver um registro DNS p.googleapis.com para o serviço que você quer usar. Consulte mais informações em Como criar registros DNS usando nomes de DNS padrão.

    Por exemplo, crie registros DNS para storage.googleapis.com e compute.googleapis.com.

Como usar nomes DNS p.googleapis.com

Quando você cria um endpoint do Private Service Connect, o Diretório de serviços cria registros DNS para APIs e serviços usados com frequência que estão disponíveis no endpoint. Os registros DNS são criados apenas para APIs e serviços que têm nomes DNS padrão que terminam com googleapis.com e apenas para um subconjunto dessas APIs e serviços.

Os registros DNS são criados em uma zona particular p.googleapis.com. Os registros apontam para o endereço IP do endpoint e usam este formato: SERVICE-ENDPOINT.p.googleapis.com

Por exemplo, se o nome do endpoint for xyz, os registros DNS serão criados para storage-xyz.p.googleapis.com, compute-xyz.p.googleapis.com e outras APIs compatíveis.

Os clientes que podem ser configurados para usar um endpoint personalizado podem usar os nomes de DNS p.googleapis.com para enviar solicitações a um endpoint do Private Service Connect.

Consulte a documentação do seu cliente ou da biblioteca de cliente para mais informações sobre como configurá-lo para usar endpoints personalizados. Exemplo:

  • Python: é possível configurar api_endpoint na classe de opções do cliente no pacote google-api-core.

  • Go: é possível configurar WithEndpoint no pacote de opções do cliente no pacote api.

  • gcloud: é possível configurar api_endpoint_overrides usando este comando.

    gcloud config set api_endpoint_overrides/SERVICE ENDPOINT_URL

    Por exemplo: gcloud config set api_endpoint_overrides/compute https://compute-xyz.p.googleapis.com/compute/v1/

Como criar registros DNS usando nomes DNS padrão

É necessário criar registros DNS para direcionar os nomes de DNS padrão para APIs e serviços para o endpoint do Private Service Connect nestas circunstâncias:

  • Seu cliente ou aplicativo não pode ser configurado para usar um nome DNS p.googleapis.com.

  • Você precisa acessar um serviço compatível, mas não há um nome DNS p.googleapis.com criado automaticamente para esse serviço.

Para criar registros DNS que apontem para o endpoint do Private Service Connect, siga estas instruções:

  1. Crie uma zona de DNS para o domínio que você precisa usar, por exemplo, googleapis.com ou gcr.io. Considere criar uma zona particular do Cloud DNS para essa finalidade.

  2. Nesta zona do DNS:

    1. Crie um registro A para o próprio nome de domínio (zona). Por exemplo, googleapis.com ou gcr.io Aponte esse registro A para o endereço IP do endpoint do Private Service Connect. Se você estiver usando o Cloud DNS, consulte Como adicionar um registro.

    2. 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, *.googleapis.com ou *.gcr.io. Aponte este registro CNAME para o registro A na mesma zona. Por exemplo, direcione *.googleapis.com para googleapis.com ou direcione*.gcr.io para gcr.io.

Como usar o Private Service Connect em hosts locais

Se sua rede local estiver conectada a uma rede VPC, será possível usar o Private Service Connect para acessar APIs e serviços do Google de hosts locais usando o endereço IP interno do endpoint do Private Service Connect.

  • Sua rede local precisa estar conectada a uma rede VPC usando túneis do Cloud VPN ou anexos do Cloud Interconnect (VLANs).

  • O endpoint do Private Service Connect está na rede VPC conectada à sua rede local.

  • A rede local precisa ter rotas adequadas para o endpoint do Private Service Connect. Configure uma Divulgação de rota personalizada do Cloud Router para anunciar rotas para o endpoint do Private Service Connect na sessão do BGP que gerencia rotas para o túnel do Cloud VPN ou para o anexo do Cloud Interconnect (VLAN).

  • Configure sistemas locais para que eles possam fazer consultas às suas zonas de DNS particulares.

    Se você implementou as zonas DNS particulares usando o Cloud DNS, siga estas etapas:

Casos de uso

É possível criar vários endpoints do Private Service Connect na mesma rede VPC. Não há limite na largura de banda total enviada para um endpoint específico. Como os endpoints do Private Service Connect usam endereços IP internos globais, eles podem ser usados por qualquer recurso na sua rede VPC ou em uma rede local conectada usando túneis do Cloud VPN ou anexos do Cloud Interconnect.

Com vários endpoints, é possível especificar caminhos de rede diferentes usando o Cloud Router e as regras de firewall.

  • Você pode criar regras de firewall para impedir que algumas VMs acessem as APIs do Google por meio de um endpoint do Private Service Connect, permitindo que outras VMs tenham acesso.

  • É possível ter uma regra de firewall em uma instância de VM que proíba todo o tráfego para a Internet. O tráfego enviado para os endpoints do Private Service Connect ainda chega ao Google.

  • Se você tiver hosts locais conectados a uma VPC usando um túnel do Cloud VPN ou um anexo do Cloud Interconnect (VLAN), poderá enviar algumas solicitações por meio do túnel ou da VLAN enquanto envia outras solicitações pela Internet pública. Essa configuração permite ignorar o túnel ou a VLAN para serviços como o Google Livros que não são compatíveis com o Acesso privado do Google.

    Para criar essa configuração, crie um endpoint do Private Service Connect, anuncie os endereços IP do endpoint do Private Service Connect usando divulgações de rota personalizadas do Cloud Router e ative uma Política de encaminhamento de entrada do Cloud DNS. O aplicativo pode enviar algumas solicitações por meio do túnel do Cloud VPN ou do anexo do Cloud Interconnect (VLAN) usando o nome do endpoint do Private Service Connect e outras solicitações pela Internet usando o nome de DNS padrão.

  • Se você conectar sua rede local à de VPC usando vários anexos do Cloud Interconnect (VLANs), será possível enviar parte do tráfego no local por uma VLAN e o restante por outras, como mostrado na figura 3. Isso permite usar sua própria rede de longa distância em vez da do Google e controlar a movimentação de dados para atender aos requisitos geográficos.

    Para criar essa configuração, crie dois endpoints do Private Service Connect. Crie uma divulgação de rota personalizada para o primeiro endpoint na sessão do BGP do Cloud Router que gerencia a primeira VLAN e crie uma divulgação de rota personalizada diferente para o segundo endpoint na sessão do BGP do Cloud Router que gerencia a segunda VLAN. Os hosts locais configurados para usar o nome do endpoint do Private Service Connect enviam tráfego pelo anexo correspondente do Cloud Interconnect (VLAN).

  • Também é possível usar vários anexos do Cloud Interconnect (VLANs) em uma topologia ativa/ativa. Se você anunciar o mesmo endereço IP do endpoint do Private Service Connect usando divulgações de rota personalizadas para sessões do BGP nos roteadores do Cloud Router gerenciando as VLANs, os pacotes enviados de sistemas locais para os endpoints serão roteados nas VLANs que usam ECMP.

    Figura 3. Ao configurar o Private Service Connect, o Cloud Router e os hosts locais, é possível controlar qual anexo do Cloud Interconnect é usado para enviar tráfego às APIs do Google.

Solução de problemas

Falha na criação da zona de DNS privado

Quando você cria um endpoint do Private Service Connect, uma zona DNS do Diretório de serviços é criada. A criação da zona pode falhar por estes motivos:

  • Você não ativou a API do Cloud DNS no projeto.

  • Você não tem as permissões necessárias para criar uma zona de DNS do Diretório de serviços.

  • Há uma zona DNS com o mesmo nome de zona nessa rede VPC.

  • Já existe uma zona DNS para p.googleapis.com nessa rede VPC.

Pode haver zonas conflitantes devido a uma falha na exclusão anterior.

Para criar a zona DNS do Diretório de serviços, faça o seguinte:

  1. Verifique se a API do Cloud DNS está ativada no projeto.

  2. Verifique se você tem as permissões necessárias para criar a zona DNS do Diretório de serviços:

    • dns.managedZones.create
    • servicedirectory.namespaces.associatePrivateZone
  3. Exclua a zona do DNS.

  4. Crie uma zona DNS do Diretório de serviços compatível com o namespace do diretório de serviços associado ao endpoint do serviço de conexão privada.

    Use os seguintes valores ao criar a zona:

    • Nome da zona: use o mesmo nome de zona que o sistema usou durante a tentativa de criação com falha. A mensagem de erro mostra o nome da zona que foi usada.

    • Nome do DNS: p.googleapis.com. (inclua o ponto final).

    • Namespace do diretório de serviços: encontre o namespace do diretório de serviços para o endpoint de conexão de serviço privado que você criou e use esse namespace ao criar o serviço Zona de DNS do diretório.

    O namespace do Diretório de serviços tem o seguinte formato: goog-psc-NETWORK_NAME-NETWORK_ID.

Falha ao excluir a zona DNS particulares

Quando você exclui o último endpoint do Private Service Connect em uma rede VPC, a configuração do Diretório de serviços associada, incluindo a zona DNS, é excluída.

Essa exclusão pode falhar por estes motivos:

  • Você não tem as permissões necessárias para excluir a zona DNS.

  • A zona contém entradas DNS definidas pelo usuário que não foram criadas pelo diretório de serviços.

Para resolver esse problema, faça o seguinte:

  1. Verifique se você tem a permissão dns.managedZones.delete. Para mais informações, consulte Controle de acesso na documentação do Cloud DNS.

  2. Exclua a zona do DNS.