Conetividade de rede privada
Esta página descreve como pode configurar os Integration Connectors para se ligarem de forma privada às suas aplicações de back-end e pressupõe que está familiarizado com os seguintes conceitos:- Nuvem virtual privada (VPC) do Google Cloud
- Private Service Connect
- Cloud DNS
- Conetores de integração
Os conectores de integração suportam a conetividade aos seus backends alojados numa rede privada. Para ativar a conetividade privada, tem de usar o Private Service Connect (PSC). O PSC permite a ligação a serviços em diferentes redes de forma privada.
No caso dos Integration Connectors, do ponto de vista da rede, é o produtor do serviço e os Integration Connectors são o consumidor do serviço. Enquanto produtor de serviços, tem de configurar uma associação de serviços do PSC que os Integration Connectors podem usar para consumir o serviço. Depois de o anexo de serviço estar pronto, pode configurar a ligação para consumir o anexo de serviço através de um anexo de ponto final.
Anexos de pontos finais
As associações de pontos finais são recursos dos Integration Connectors que permitem que as ligações estabeleçam conetividade com as suas aplicações de back-end através das associações de serviços do PSC.
A imagem seguinte mostra uma associação de ponto final que permite estabelecer conetividade com uma aplicação de back-end através de uma associação de serviço do PSC:
Pode criar a associação do ponto final como um endereço IP ou um nome de anfitrião.
- Crie uma associação de ponto final como um endereço IP
- Crie uma associação de ponto final como nome de anfitrião
Crie uma associação de ponto final como um endereço IP
Para criar uma associação de ponto final como um endereço IP, pode usar a Cloud Console ou a linha de comandos (gcloud).Consola
Para criar uma associação de ponto final a partir da Cloud Console, faça o seguinte:
- Abra a página Anexos de pontos finais para os conectores de integração.
- Clique em + Criar. É apresentada a página Criar associação de ponto final.
- Introduza valores para os seguintes campos:
- Nome: um nome para a associação de pontos finais. O nome tem de ser exclusivo. Não pode haver outros anexos de pontos finais com o mesmo nome, e não pode alterar o nome mais tarde. O nome tem de começar por uma letra minúscula seguida de até 63 letras minúsculas, números ou hífenes, mas não pode terminar com um hífen. O comprimento mínimo é de 2 carateres.
- ID da associação de serviço: nome da associação de serviço do PSC que já criou.
- (Opcional) Descrição: introduza uma descrição para a associação do ponto final.
- (Opcional) Etiquetas: introduza etiquetas de recursos como pares de chave-valor. Para mais informações acerca das etiquetas, consulte o artigo O que são etiquetas?
- (Opcional) Ative o acesso global ao ponto final: selecione esta opção se quiser
enviar tráfego para o seu back-end a partir de uma ligação presente em qualquer região.
Por predefinição, a associação do ponto final requer que a ligação e o back-end estejam na mesma região. Por conseguinte, se ativar o acesso global para o ponto final, uma ligação presente em qualquer região pode enviar tráfego para o seu back-end.
- Clique em Criar.
A coluna Endereço IP especifica o endereço IP da associação do ponto final. Tem de usar este endereço IP quando configurar um conetor para a conetividade privada.
gcloud
Para criar uma associação de ponto final a partir da linha de comandos, faça o seguinte:
- Obtenha o recurso de associação do serviço PSC:
gcloud compute service-attachments list
O comando devolve a lista de associações de serviços. Por exemplo:
NAME REGION TARGET_SERVICE CONNECTION_PREFERENCE demo-sa us-west1 k8s2-tcp-tgysilgj-apps-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC
Vai precisar destas informações de associação de serviços nos passos seguintes.
- Obtenha um token de autenticação antes de executar a API CreateEndpointAttachment:
TOKEN="$(gcloud auth print-access-token)"
- Crie a associação do ponto final através da API CreateEndpointAttachment. Por exemplo:
curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "projects/PROJECT_ID/locations/LOCATION/endpointAttachments/ENDPOINT_ATTACHMENT_NAME", "serviceAttachment": "projects/demo/serviceAttachments/?SERVICE_ATTACHMENT_NAME" }' \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpointAttachments?endpointAttachmentId=ENDPOINT_ATTACHMENT_NAME
Onde:
- LOCATION é a região da associação de serviço. Por exemplo,
us-west1
. - PROJECT_ID é o projeto do Google Cloud onde criou a associação de serviço do PSC.
- ENDPOINT_ATTACHMENT_NAME é o nome da associação de pontos finais. O nome tem de ser exclusivo. Não podem existir outros anexos de pontos finais com o mesmo nome, e não pode alterar o nome mais tarde. O nome tem de começar com uma letra minúscula seguida de até 31 letras minúsculas, números ou hífenes, mas não pode terminar com um hífen. O comprimento mínimo é de 2 carateres.
- SERVICE_ATTACHMENT_NAME é o nome da associação de serviço. Use o nome do anexo de serviço do PSC
devolvido pelo comando
gcloud compute service-attachments list
executado anteriormente.
Depois de chamar a API, os Integration Connectors iniciam uma operação de longa duração, e pode demorar algum tempo a concluir a operação. A associação do ponto final é criada após a conclusão bem-sucedida da operação.
- LOCATION é a região da associação de serviço. Por exemplo,
- Obtenha o ID do projeto do diretório de serviços associado ao seu projeto do Google Cloud e, em seguida, adicione esse ID do projeto à lista de autorizações da sua associação de serviços.
- Verifique se a associação do ponto final foi criada através da API GetEndpointAttachment.
Por exemplo:
curl -X GET -H "Authorization: Bearer $TOKEN" \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpointAttachments/ENDPOINT_ATTACHMENT_NAME
A API devolve uma resposta semelhante à seguinte:
{ "name": "projects/demo-project/locations/us-central1/endpointAttachments/demo-ea", "createTime": "2023-04-17T04:34:59.569527046Z", "updateTime": "2023-04-17T04:37:25.189074195Z", "description": "demo endpoint attachment", "serviceAttachment": "projects/demo-project/regions/us-central1/serviceAttachments/demo-sa", "endpointIp": "10.0.0.0", "labels": {"team":"sre"}, }
O endereço IP da associação do ponto final está disponível no campo
endpointIp
. Nesta resposta de exemplo, o endereço IP é10.0.0.0
. Use este endereço IP quando configurar um conetor para conectividade privada.
Se a criação da associação do ponto final for bem-sucedida, a associação criada recentemente é apresentada na página Associações de pontos finais, semelhante à seguinte imagem:


Os passos descritos até agora mostram como criar uma associação de ponto final como um endereço IP. No entanto, também pode criar uma associação de ponto final como um nome de anfitrião e usar o nome de anfitrião para configurar um conetor para a conetividade privada. Para saber como criar uma associação de ponto final com um nome de anfitrião, consulte o artigo Crie uma associação de ponto final como um nome de anfitrião.
Crie uma associação de ponto final como nome de anfitrião
Para criar uma associação de ponto final como um nome do anfitrião, execute as seguintes tarefas:
- Crie uma associação de ponto final como um endereço IP. Para mais informações, consulte o artigo Crie uma associação de ponto final como um endereço IP.
- Crie uma zona gerida privada do Cloud DNS em qualquer um dos seus projetos do Google Cloud.
Nesta zona de DNS, tem de adicionar um nome de anfitrião que quer usar para a configuração do conector e mapear o nome de anfitrião para o endereço IP do anexo do ponto final que obteve no passo 1. Para obter informações sobre como criar uma zona gerida privada do Cloud DNS, consulte os artigos Crie uma zona privada e Adicione um registo.
- Crie uma zona gerida dos Integration Connectors no seu projeto do Google Cloud que usa para os Integration Connectors. A zona gerida dos Integration Connectors (zona de peering) comunica com a zona gerida privada do Cloud DNS (criada no passo 2)
para a resolução de nomes.
Antes de criar a zona gerida, tem de conceder as seguintes funções e autorizações:
- Conceda a autorização
connectors.managedZones.create
ao utilizador que cria a zona gerida dos Integration Connectors.A autorização
connectors.managedZones.create
está disponível na função IAMroles/connectors.admin
ou na função IAMroles/connectors.managedZonesAdmin
. Para obter informações sobre as várias funções de IAM e as respetivas autorizações correspondentes disponíveis para os Integration Connectors, consulte Funções e autorizações de IAM para os Integration Connectors. - Conceda a função
role/dns.peer
à conta de serviçoservice-PROJECT_NUMBER@gcp-sa-connectorsiam.gserviceaccount.com
do Integration Connectors.Se o projeto do Google Cloud do Cloud DNS for diferente do projeto do Google Cloud do Integration Connectors, conceda a função
roles/dns.peer
à conta de serviço do Integration Connectors no projeto do Google Cloud do Cloud DNS. Por exemplo, considere que quer criar a zona gerida dos Integration Connectors no projeto do Google Cloud 12345 e que o Cloud DNS está no projeto do Google Cloud 67890. Neste caso, tem de conceder a funçãoroles/dns.peer
à conta de serviçoservice-12345@gcp-sa-connectors.iam.gserviceaccount.com
no projeto do Google Cloud 67890.
Para criar uma zona gerida do Integration Connectors, pode usar a Cloud Console ou a linha de comandos (gcloud).
Consola
Para criar uma zona gerida dos Integration Connectors a partir da Cloud Console, faça o seguinte:
- Aceda à página Zonas geridas para Integration Connectors.
- Introduza valores para os seguintes campos:
- Nome: um nome para a zona gerida.
- Nome DNS de destino: nome DNS completo para o qual está a criar a zona gerida (interligação). Por exemplo,
server8.stage.user.private
. - Projeto de destino: nome do projeto do Google Cloud que tem a zona do Cloud DNS privado.
- Rede de destino: nome da rede VPC na qual a zona DNS do Google Cloud privada é mantida.
- (Opcional) Descrição: introduza uma descrição para a associação do ponto final.
- (Opcional) Etiquetas: introduza etiquetas de recursos como pares de chave-valor. Para mais informações acerca das etiquetas, consulte o artigo O que são etiquetas?
- Clique em Criar.
gcloud
Para criar uma zona gerida dos Integration Connectors a partir da linha de comandos, faça o seguinte:
- Obtenha um token de autenticação antes de executar a API CreateManagedZone:
TOKEN="$(gcloud auth print-access-token)"
- Crie a zona gerida através da API CreateManagedZone. Por exemplo:
curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "description": "DESCRIPTION", "dns": "DNS_NAME", "target_project": "TARGET_PROJECT", "target_vpc": "TARGET_VPC" }' \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones?managedZoneId=MANAGED_ZONE_NAME
Onde:
- DESCRIPTION é uma descrição opcional da zona gerida.
- DNS_NAME: nome completo do Cloud DNS para o qual está a criar a zona gerida (interligação). Por exemplo,
server8.stage.user.private
. - TARGET_PROJECT é o nome do projeto do Google Cloud que tem a zona de DNS do Google Cloud privada.
- TARGET_NETWORK é o nome da rede VPC na qual a zona de DNS privado do Google Cloud é mantida.
- PROJECT_ID é o seu projeto do Google Cloud que está a usar para os Integration Connectors.
- MANAGED_ZONE_NAME é o nome da zona gerida. O nome tem de ser exclusivo. Não podem existir outras zonas geridas com o mesmo nome, e não pode alterar o nome mais tarde. O nome tem de começar com uma letra minúscula seguida de até 63 letras minúsculas, números ou hífenes, mas não pode terminar com um hífen. O comprimento mínimo é de 2 carateres.
Depois de chamar a API, os Integration Connectors iniciam uma operação de longa duração, e a conclusão da operação pode demorar algum tempo. A zona gerida é criada após a conclusão bem-sucedida da operação.
- Verifique se a zona gerida foi criada através da API GetManagedZone.
Por exemplo:
curl -X GET -H "Authorization: Bearer $TOKEN" \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones/MANAGED_ZONE_NAME
A API devolve uma resposta semelhante à seguinte:
{ "name": "projects/demo-project/locations/global/managedZones/demo-mz", "createTime": "2023-04-17T04:34:59.569527046Z", "updateTime": "2023-04-17T04:37:25.189074195Z", "description": "demo managed zone", "dns": "api.private.service.com.", "targetVpc": "target-project-vpc", "targetProject": "target-project" }
- Conceda a autorização
Se a criação da zona gerida for bem-sucedida, a zona gerida criada recentemente é apresentada na página Zonas geridas, semelhante à imagem seguinte:


Adicione o projeto Integration Connectors à lista de autorizações numa associação de serviço
Pode criar a associação de serviço do PSC de modo que aceite pedidos apenas dos projetos do Google Cloud especificados. No entanto, para o fazer, precisa do ID do projeto do diretório de serviços associado ao seu projeto do Google Cloud. Para obter o ID do projeto do diretório de serviços, pode usar a API List Connections, conforme mostrado no exemplo seguinte.
Sintaxe
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
Substitua o seguinte:
- CONNECTORS_PROJECT_ID: o ID do seu projeto do Google Cloud onde criou a ligação.
Exemplo
Este exemplo obtém o ID do projeto do diretório de serviços para o projeto do Google Cloud connectors-test
.
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
A execução deste comando no terminal apresenta um resultado semelhante ao seguinte:
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@developer.gserviceaccount.com", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
No resultado de exemplo, para o projeto do Google Cloud, o ID do projeto do diretório de serviços é abcdefghijk-tp
.connectors-test
Valide a ligação de anexo do ponto final
Para validar a ligação da associação do ponto final, faça o seguinte:
- Na página Anexos de pontos finais, clique no nome do anexo de ponto final que criou.
- Na página Detalhes da associação do ponto final apresentada, veja o campo Estado da ligação. Se o estado for
Accepted
, a associação do ponto final está configurada corretamente e a ligação do Private Service Connect está estabelecida.Para obter informações sobre outros estados, consulte Estados da associação.
Configure uma ligação para usar a associação do ponto final
Nos conectores de integração, quando cria uma nova associação ou atualiza uma associação existente, na secção Destinos, selecione Anexo do ponto final como o Tipo de destino e selecione o anexo do ponto final que criou na lista Anexo do ponto final.
Se criou uma zona gerida, selecione Endereço do anfitrião como o Tipo de destino e use o registo A que criou ao criar a zona gerida.
Conetividade a vários tipos de redes privadas
Embora a conetividade privada nos Integration Connectors seja sempre através de uma associação do serviço do PSC, os passos para estabelecer a conetividade privada variam ligeiramente consoante o ambiente. As secções seguintes descrevem como estabelecer uma conetividade privada nos vários ambientes:
- O back-end está alojado no local
- O back-end está alojado na VPC da Google
- O back-end está alojado no ambiente sem servidor do Google Cloud
- O back-end está disponível como um serviço gerido do Google Cloud