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, explicamos como usar os endpoints do Private Service Connect para se conectar a serviços gerenciados 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 publicar serviços gerenciados 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
.
Limitações
Não é possível criar um endpoint do Private Service Connect na mesma rede VPC que o serviço publicado que você está acessando.
Os endpoints do Private Service Connect não são acessíveis em redes VPC com peering.
O Espelhamento de pacotes não pode espelhar pacotes para o tráfego de serviços publicados do Private Service Connect.
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.
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 Google Cloud, acesse a página 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.
Rotular um endpoint
É possível gerenciar rótulos para endpoints do Private Service Connect. Consulte Como rotular recursos para mais informações.
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.
É possível visualizar as alterações no status da conexão para endpoints do Private Service Connect usando registros de auditoria. As alterações no status da conexão do endpoint são capturadas nos metadados de evento do sistema para o tipo de recurso Regra de encaminhamento do GCE. É possível filtrar por
pscConnectionStatus
para visualizar essas entradas.Por exemplo, quando um produtor de serviço permite conexões do seu projeto, o status da conexão do endpoint muda de
PENDING
paraACCEPTED
e essa alteração é refletida nos registros de auditoria.- Para ver os registros de auditoria, consulte Ver registros.
- Para definir alertas com base em registros de auditoria, consulte Como gerenciar alertas com base em registros.
Acesse o endpoint de hosts locais
Os clientes em redes conectadas ao Google Cloud com anexos da VLAN para túneis do Cloud Interconnect (Visualização) ou do Cloud VPN podem alcançar endpoints do Private Service Connect.
O anexo da VLAN ou o túnel do Cloud VPN precisa ser encerrado na mesma rede VPC e região que o endpoint do Private Service Connect.
O tráfego do cliente das redes conectadas para os endpoints do Private Service Connect não é compatível com as redes VPC com peering ou com os limites regionais.
O anexo da VLAN ou o túnel do Cloud VPN e o endpoint do Private Service Connect podem estar em projetos diferentes se estiverem usando a VPC compartilhada.
Os anexos da VLAN precisam ter
dataplaneVersion: 2
. Inspecione o anexo da VLAN para verificar em qual versão ele está.
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ê tiver implementado 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 do túnel do Cloud VPN que se conecta à rede VPC.
VPC Service Controls
O VPC Service Controls e o Private Service Connect são compatíveis entre si. Se a rede VPC em que o endpoint do Private Service Connect estiver implantado estiver em um perímetro do VPC Service Controls, esse endpoint faz parte do mesmo perímetro. Todos os serviços compatíveis com o VPC Service Controls que são acessados pelo endpoint do Private Service Connect estão sujeitos às políticas desse perímetro do VPC Service Controls.
Ao criar um endpoint do Private Service Connect, as chamadas de API do plano de controle são feitas entre os projetos do consumidor e do produtor para estabelecer uma conexão do Private Service Connect. Estabelecer uma conexão do Private Service Connect entre projetos do consumidor e do produtor que não estão no mesmo perímetro do VPC Service Controls não exige autorização explícita com políticas de saída. A comunicação com os serviços compatíveis com o VPC Service Controls pelo endpoint do Private Service Connect é protegida pelo perímetro do VPC Service Controls.
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.