Acessar serviços gerenciados 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, você verá como usar os endpoints do Private Service Connect para se conectar a serviços compatíveis em outra rede VPC. É possível se conectar aos seus próprios serviços ou aos fornecidos por outros produtores de serviços. Consulte Como publicar serviços para mais informações.
Papéis
O papel do IAM a seguir fornece as permissões necessárias para executar as tarefas neste guia.
Tarefa | Papéis |
---|---|
Criar um endpoint do Private Service Connect |
Ambos os papéis: Administrador de rede do Compute ( roles/compute.networkAdmin ) e
EDitor do Diretório de serviços ( roles/servicedirectory.editor )
|
Configurar de maneira automática ou manual as entradas DNS de um endpoint do Private Service Connect |
Administrador do DNS
(roles/dns.admin )
|
Antes de começar
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 endereço IP interno do endpoint do Private Service Connect. A regra de firewall de saída de permissão implícita permite a saída para qualquer endereço IP de destino.
Se você tiver criado regras de firewall de negação de saída na rede VPC ou criado políticas de firewall hierárquicas que modificam o comportamento de saída implícito permitido, o acesso ao endpoint poderá ser afetado. Crie uma regra ou política de firewall específica de permissão de saída para permitir o tráfego para o destino de endereço IP interno do endpoint do serviço.
É necessário ter o URI do anexo de serviço para o serviço. Por exemplo,
projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
.Se você estiver criando um endpoint do Private Service Connect em um projeto protegido por um perímetro do VPC Service Controls que restrinja
compute.googleapis.com
,servicedirectory.googleapis.com
oudns.googleapis.com
, será necessária uma configuração extra. É preciso criar regras de entrada e saída para o VPC Service Controls antes de criar o endpoint. Para mais informações, consulte Como configurar regras de entrada e saída para o VPC Service Controls.
Limitações
Os endpoints do Private Service Connect não são acessíveis em redes VPC com peering.
Não é possível enviar solicitações de um ambiente local conectado a uma VPC usando anexos do Cloud Interconnect (VLANs) para um endpoint do Private Service Connect usado para acessar serviços{101 }em outra rede VPC.
Para mais informações sobre como acessar os endpoints do Private Service Connect em ambientes locais conectados com o Cloud VPN, consulte Como usar o Private Service Connect em hosts locais.
O espelhamento de pacotes não pode espelhar pacotes entre VMs e endpoints do Private Service Connect que se conectam a um serviço publicado.
Configuração automática de DNS
Se houver as seguintes configurações, as entradas DNS serão criadas automaticamente para os endpoints do Private Service Connect:
O produtor de serviço configurou um nome de domínio para o serviço.
O endpoint do Private Service Connect é registrado com um namespace do Diretório de serviços.
Todos os novos endpoints são registrados automaticamente no Diretório de serviços, mas os mais antigos podem não ser registrados.
Se as duas configurações estiverem presentes, quando o endpoint do Private Service Connect for criado, uma zona DNS do diretório de serviços será criada com o nome: NAMESPACE--REGION
.
Essa zona particular armazena entradas de DNS para serviços encontrados no namespace NAMESPACE
do Diretório de serviços, na região REGION
.
Depois de criar o endpoint do Private Service Connect, é possível verificar se uma zona DNS do diretório de serviços foi criada. Se a zona DNS do diretório de serviços não for criada, você poderá criar manualmente uma configuração semelhante. Para mais informações, consulte Visualizar zonas do DNS do diretório de serviços.
Se você não quiser que essas entradas de DNS sejam criadas, siga um destes procedimentos:
Se você não estiver usando o Cloud DNS para outra finalidade, desative a API do Cloud DNS ou remova as permissões necessárias para o Cloud DNS.
Aguarde a criação da zona de DNS e depois exclua a zona DNS manualmente.
Se você preferir configurar o DNS manualmente, consulte Configurar o DNS manualmente.
Criar um endpoint do Private Service Connect
Um endpoint do Private Service Connect se conecta a serviços em outra rede VPC usando uma regra de encaminhamento do Private Service Connect. Cada regra de encaminhamento é contabilizada na cota por projeto das regras de encaminhamento do Private Service Connect para acessar serviços em outra rede VPC.
Ao usar o Private Service Connect para se conectar a serviços em outra rede VPC, você escolhe um endereço IP em uma sub-rede na sua rede VPC.
O endereço IP precisa estar na mesma região que o anexo do serviço do produtor de serviços. O endereço IP é contabilizado na cota do projeto para endereços IP internos.
Quando você cria um endpoint do Private Service Connect, ele é
registrado automaticamente no
Diretório de serviços, usando
um namespace escolhido por você ou o namespace padrão, goog-psc-default
.
Console
No Console do Google Cloud, acesse Private Service Connect.
Clique na guia Endpoints conectados.
Clique em Conectar endpoint.
Em Destino, selecione Serviço publicado.
Em Serviço de destino, digite o URI do anexo de serviço ao qual você quer se conectar.
O URI do anexo de serviço está neste formato:
projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
Em Nome do endpoint, digite um nome para usar o endpoint.
Selecione uma Rede para o endpoint.
Selecione uma Sub-rede para o endpoint.
Selecione um Endereço IP para o endpoint. Se você precisar de um novo endereço IP, crie um:
- Clique no menu suspenso Endereço IP e selecione Criar endereço IP.
- Digite um Nome e uma Descrição opcional para o endereço IP.
Em Endereço IP estático, selecione Atribuir automaticamente ou Quero escolher.
Se você selecionou Quero escolher, insira o Endereço IP personalizado que quer usar.
Clique em Reservar.
Selecione um Namespace na lista suspensa ou crie um novo namespace.
A Região é preenchida com base na sub-rede selecionada.
Clique em Adicionar endpoint.
gcloud
Reserve um endereço IP interno para atribuir ao endpoint.
gcloud compute addresses create ADDRESS_NAME \ --region=REGION \ --subnet=SUBNET
Substitua:
ADDRESS_NAME
: o nome a ser atribuído ao endereço IP reservado.REGION
: a região do endereço IP do endpoint. Precisa ser a mesma região que contém o anexo de serviço do produtor de serviço.SUBNET
: o nome da sub-rede do endereço IP do endpoint.
Encontre o endereço IP reservado.
gcloud compute addresses list --filter="name=ADDRESS_NAME"
Crie uma regra de encaminhamento para conectar o endpoint ao anexo de serviço do produtor de serviço.
gcloud compute forwarding-rules create ENDPOINT_NAME \ --region=REGION \ --network=NETWORK_NAME \ --address=ADDRESS_NAME \ --target-service-attachment=SERVICE_ATTACHMENT \ [ --service-directory-registration=projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE ]
Substitua:
ENDPOINT_NAME
: o nome a ser atribuído ao endpoint.REGION
: a região do endpoint. Precisa ser a mesma região que contém o anexo de serviço do produtor de serviço.NETWORK_NAME
: o nome da rede VPC do endpoint.ADDRESS_NAME
: o nome do endereço reservado.SERVICE_ATTACHMENT
: o URI do anexo de serviço do produtor de serviço. Por exemplo:projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
PROJECT_ID
: o ID do projeto.NAMESPACE
: o namespace do Diretório de serviços que você quer usar. Se você especificar um namespace que não existe, o namespace será criado.Se você omitir a sinalização
--service-directory-registration
, o namespace padrão degoog-psc-default
será usado.
API
Reserve um endereço IP interno para atribuir ao endpoint.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/region/REGION/addresses { "name": ADDRESS_NAME, "addressType": "INTERNAL", "subnetwork": SUBNET_URI }
Substitua:
PROJECT_ID
: o ID do projeto.ADDRESS_NAME
: o nome a ser atribuído ao endereço IP reservado.SUBNET_URI
: a sub-rede do endereço IP. Use o método network.list ougcloud compute networks subnets list --uri
para encontrar os URLs das suas redes.
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/regions/REGION/forwardingRules { "name": ENDPOINT_NAME, "IPAddress": ADDRESS_URI, "target": SERVICE_ATTACHMENT, "network": NETWORK_URI, "serviceDirectoryRegistrations": [ { "namespace": NAMESPACE, } ], }
Substitua:
PROJECT_ID
: o ID do projeto.REGION
: a região do endpoint.ENDPOINT_NAME
: o nome a ser atribuído ao endpoint.ADDRESS_URI
: o URL do endereço reservado na rede associada. Use o método endereços.list ougcloud compute addresses list --uri
para encontrar o URL do seu endereço reservado.SERVICE_ATTACHMENT
: o URI do anexo de serviço do produtor de serviços. Por exemplo:projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
NETWORK_URI
: a rede VPC do endpoint. Use o método network.list ougcloud compute networks list --uri
para encontrar o URI da sua rede.NAMESPACE
: o namespace do endpoint. Se você especificar um namespace que não existe, o namespace será criado. Se você omitir o camponamespace
, o namespace padrão degoog-psc-default
será atribuído.
Configurar regras de entrada e saída para o VPC Service Controls
Se você estiver criando um endpoint do Private Service Connect em um
projeto protegido por um perímetro do VPC Service Controls que restrinja
compute.googleapis.com
, servicedirectory.googleapis.com
ou
dns.googleapis.com
, será necessária uma configuração extra. Antes de criar um
endpoint do Private Service Connect, solicite ao produtor de serviços
as seguintes informações:
PRODUCER_PROJECT_NUMBER
: o número do projeto que contém o anexo do serviço.PRODUCER_SERVICE_ACCOUNT
(opcional): o nome da conta de serviço que criou o anexo de serviço, se você quiser configurar uma regra de entrada que restringe o acesso por conta.
Use essas informações para criar regras de entrada e saída que permitam a conexão entre o endpoint do Private Service Connect e o anexo de serviço.
Para informações sobre como configurar regras de entrada e saída, consulte Como configurar políticas de entrada e saída.
Configure uma regra de saída que permita a saída do projeto do consumidor para o projeto do produtor
PRODUCER_PROJECT_NUMBER
.- egressFrom: identityType: ANY_IDENTITY egressTo: operations: - serviceName: 'compute.googleapis.com' methodSelectors: - method: 'ServiceAttachmentsService.Insert' - method: 'ServiceAttachmentsService.Patch' - method: 'RegionForwardingRulesService.Insert' - serviceName: 'servicedirectory.googleapis.com' methodSelectors: - method: '*' - serviceName: 'dns.googleapis.com' methodSelectors: - method: '*' resources: - 'projects/PRODUCER_PROJECT_NUMBER'
Crie uma das seguintes regras de entrada.
Este exemplo de regra de entrada permite que o produtor do serviço atualize um anexo de serviço que foi criado por
PRODUCER_SERVICE_ACCOUNT
para adicionar seu projeto à lista de aceitação.- ingressFrom: sources: - accessLevel: '*' # All Sources identities: serviceAccount: PRODUCER_SERVICE_ACCOUNT ingressTo: operations: - serviceName: 'compute.googleapis.com' methodSelectors: - method: 'ServiceAttachmentsService.Patch' - serviceName: 'servicedirectory.googleapis.com' methodSelectors: - method: '*' - serviceName: 'dns.googleapis.com' methodSelectors: - method: '*' resources: - '*'
Este exemplo de regra de entrada permite que o fornecedor de serviços atualize um anexo de serviço criado por qualquer conta para adicionar seu projeto à lista de aceitação.
- ingressFrom: sources: - accessLevel: '*' # All Sources identityType: ANY_IDENTITY ingressTo: operations: - serviceName: 'compute.googleapis.com' methodSelectors: - method: 'ServiceAttachmentsService.Patch' - serviceName: 'servicedirectory.googleapis.com' methodSelectors: - method: '*' - serviceName: 'dns.googleapis.com' methodSelectors: - method: '*' resources: - '*'
Depois que as regras de entrada e saída estiverem configuradas, será possível criar um
endpoint do Service Service particular que se conecta a um anexo
de serviço no projeto PRODUCER_PROJECT_NUMBER
.
Ver zonas de DNS do Diretório de serviços
Se os pré-requisitos da configuração automática de DNS forem atendidos, uma
zona DNS será criada com um nome no formato
NAMESPACE--REGION
.
Console
No Console do Cloud, acesse a página de zonas do Cloud DNS.
Procure uma zona particular com o nome
NAMESPACE--REGION
.
gcloud
Execute o seguinte comando para listar todas as zonas DNS particulares:
gcloud dns managed-zones list \ --filter="visibility=private"
Execute o comando a seguir para ver os detalhes de uma zona com o nome
NAMESPACE--REGION
.gcloud dns managed-zones describe NAMESPACE--REGION
Se a zona não estiver presente, veja os detalhes do endpoint do Private Service Connect e verifique se a configuração do endpoint inclui um valor para o namespace.
Se o endpoint tiver uma configuração de namespace, consulte Configurar uma zona DNS do diretório de serviços.
Se o endpoint não tiver uma configuração de namespace, consulte Registrar um endpoint do Private Service Connect com o Diretório de serviços.
Listar endpoints
É possível listar todos os endpoints do Private Service Connect configurados.
Console
No Console do Google Cloud, acesse a página do Private Service Connect.
Clique na guia Endpoints conectados.
Os endpoints do Private Service Connect são exibidos.
gcloud
gcloud compute forwarding-rules list \ --filter 'target~serviceAttachments'
A resposta será semelhante a:
NAME REGION IP_ADDRESS IP_PROTOCOL TARGET RULE IP TCP REGION/serviceAttachments/SERVICE_NAME
API
Essa chamada de API retorna todas as regras de encaminhamento, não apenas os endpoints do Private Service Connect usados para acessar os serviços.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules
Substitua:
PROJECT_ID
: o projeto que contém o endpoint.REGION
: a região do endpoint.
Ver detalhes do endpoint
É possível visualizar todos os detalhes de configuração de um endpoint do Private Service Connect.
O endpoint pode ter um dos seguintes status:
Pendente: o endpoint está configurado para se conectar a um serviço que requer aprovação, e a aprovação ainda não foi concedida ao projeto.
Aceito: o endpoint está em um projeto aprovado para se conectar ao serviço.
Rejeitado: o endpoint está em um projeto sem permissão para se conectar ao serviço.
Fechado: o endpoint está conectado a um anexo de serviço que foi excluído.
Console
No Console do Google Cloud, acesse a página do Private Service Connect.
Clique na guia Endpoints conectados.
Clique no endpoint que você quer visualizar.
gcloud
gcloud compute forwarding-rules describe \ ENDPOINT_NAME --region=REGION
Substitua:
ENDPOINT_NAME
: o nome do endpoint.REGION
: a região do endpoint.
API
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/ENDPOINT_NAME
Substitua:
PROJECT_ID
: o projeto que contém o endpoint.REGION
: a região do endpoint.ENDPOINT_NAME
: o nome do endpoint.
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.
No entanto, as seguintes configurações do diretório de serviços não são excluídas quando você exclui o endpoint:
- Namespace do diretório de serviços
- Zona de DNS do Diretório de serviços
O namespace do Diretório de serviços e a zona DNS do Diretório de serviços podem ser usados por outros serviços. Verifique se o namespace está vazio antes de excluir o namespace do Diretório de serviços ou excluir a zona de DNS do Diretório de serviços.
Console
No Console do Google Cloud, acesse Private Service Connect.
Clique na guia Endpoints conectados.
Selecione o endpoint do Private Service Connect que você quer excluir e clique em Excluir.
gcloud
gcloud compute forwarding-rules delete \ ENDPOINT_NAME --region=REGION
Substitua:
ENDPOINT_NAME
: o nome do endpoint.REGION
: a região do endpoint.
API
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/ENDPOINT_NAME
Substitua:
PROJECT_ID
: o projeto que contém o endpoint.REGION
: a região do endpoint.ENDPOINT_NAME
: o nome do endpoint.
Outras maneiras de configurar o DNS
Se os pré-requisitos da configuração automática de DNS não forem atendidos, será possível criar entradas DNS de outras maneiras:
Se o endpoint tiver um namespace configurado, consulte Configurar uma zona DNS do diretório de serviços.
Se o endpoint não tiver um namespace configurado, consulte Registrar um endpoint do Private Service Connect com o Diretório de serviços.
Se você preferir configurar o DNS manualmente, consulte Configurar o DNS manualmente.
Configurar uma zona de DNS do diretório de serviços
Se um endpoint do Private Service Connect estiver registrado no Diretório de serviços, mas o serviço publicado ao qual ele se conecta não tiver um nome de domínio configurado, nenhuma alteração de DNS será feita.
Se você quiser replicar a configuração automática de DNS, poderá configurar manualmente uma zona DNS do Diretório de serviços apoiada pelo namespace do Diretório de serviços. Após a criação da zona, as entradas DNS são criadas automaticamente pelo endpoint do Private Service Connect.
Crie uma zona do Diretório de serviços com a seguinte configuração:
Nome da zona: especifique
NAMESPACE--REGION
, em queNAMESPACE
é o namespace em que o endpoint do Private Service Connect é registrado eREGION
é a região em que o endpoint é criado.Nome do DNS: o domínio DNS que o fornecedor de serviços está usando para os serviços publicados. Consulte o produtor de serviços para saber mais.
O nome do DNS pode ter o formato
REGION.p.DOMAIN
. Por exemplo, se o domínio público do produtor de serviços forexample.com
e o serviço publicado estiver emus-west1
, recomendamos que ele disponibilize o serviço usando os nomes de domínious-west1.p.example.com
. Inclua um ponto à direita, por exemplo,us-west1.p.example.com.
Namespace do diretório de serviços: o namespace que você configurou para este endpoint.
Veja os detalhes do endpoint do Private Service Connect para encontrar o namespace e a região do diretório de serviços.
Com essa configuração, se você tiver configurado uma
zona DNS do diretório de serviços com o nome DNS
us-west1.p.example.com
e criado um endpoint do Private Service Connect chamado
analytics
, um registro DNS para analytics.us-west1.p.example.com
é criado automaticamente.
Registrar um endpoint do Private Service Connect com o diretório de serviços manualmente
Novos endpoints do Private Service Connect são registrados automaticamente no Diretório de serviços. No entanto, se um endpoint do Private Service Connect tiver sido criado antes da ativação do registro automático com o Diretório de serviços, talvez essa configuração esteja ausente.
É possível excluir o endpoint do Private Service Connect e criar um novo, que é registrado no Diretório de serviços automaticamente.
Ou então, siga estas etapas para registrar uma instância do Private Service Connect atual com um namespace do diretório de serviços.
Crie um namespace do Diretório de serviços para o endpoint do Private Service Connect,
NAMESPACE
.Crie um serviço do Diretório de serviços para o endpoint do Private Service Connect,
SERVICE_NAME
.No serviço, use o mesmo nome da regra de encaminhamento usada para o endpoint do Private Service Connect,
ENDPOINT_NAME
.Crie um endpoint do Diretório de serviços usando o nome
default
e use o endereço IP e a porta (443
) do endpoint do Private Service Connect.
Depois de registrar o endpoint do Private Service Connect no Diretório de serviços, siga as instruções para Configurar uma zona do Diretório de serviços.
Configurar o DNS manualmente
Se você tiver impedido a configuração automática de DNS ou se ela não estiver ativada na configuração, poderá usar o Cloud DNS para criar registros DNS manualmente.
Para mais informações, consulte as seguintes páginas:
Controle de acesso: o papel de Administrador de DNS (
roles/dns.admin
) fornece as permissões necessárias para criar zonas e registros DNS.-
Ao configurar uma zona particular, você fornece um nome de DNS. Use o domínio DNS que o fornecedor de serviços está usando para os serviços publicados. Verifique com o produtor de serviços para saber essas informações.
Ele pode ter o seguinte formato:
REGION.p.DOMAIN
. Por exemplo, se o domínio público do produtor de serviços forexample.com
e o serviço publicado estiver emus-west1
, recomendamos que ele disponibilize o serviço usando os nomes de domínious-west1.p.example.com
.
Logging
É possível ativar os registros de fluxo de VPC em sub-redes que contêm VMs que estão acessando serviços em outra rede VPC usando endpoints do Private Service Connect. Os registros mostram fluxos entre as VMs e o endpoint do Private Service Connect.
Como usar o Private Service Connect em hosts locais
Se a rede local estiver conectada a uma rede VPC, será possível acessar os serviços publicados do Private Service Connect 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, na mesma região em que o endpoint do Private Service Connect está localizado.
O endpoint do Private Service Connect está na rede VPC conectada à sua rede local.
Se você quiser acessar o endpoint do Private Service Connect usando o nome DNS, configure sistemas locais para que eles façam consultas nas zonas DNS particulares.
Se você implementou as zonas DNS particulares usando o Cloud DNS, siga estas etapas:
Crie uma política de servidor de entrada na rede VPC a que sua rede local se conecta.
Identifique os pontos de entrada do encaminhador de entrada nas regiões em que os túneis do Cloud VPN estão localizados, na rede VPC a que sua rede local se conecta.
Configure sistemas locais e servidores de nomes DNS locais para encaminhar os nomes DNS dos endpoints do Private Service Connect para um ponto de entrada de encaminhador de entrada na mesma região. o túnel do Cloud VPN que se conecta à rede VPC.
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 o mesmo nome de domínio nesta rede VPC.
Para criar a zona DNS do Diretório de serviços, faça o seguinte:
Verifique se a API do Cloud DNS está ativada no projeto.
Verifique se você tem as permissões necessárias para criar a zona DNS do Diretório de serviços:
dns.managedZones.create
dns.networks.bindPrivateDNSZone
servicedirectory.namespaces.associatePrivateZone
Se houver uma zona conflitante, mas ela não for mais necessária, exclua a zona DNS.
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 Private Service Connect.