Conectividade de rede particular
Nesta página, descrevemos como configurar os Integration Connectors para se conectarem de forma privada aos seus aplicativos de back-end e presumimos que você esteja familiarizado com os seguintes conceitos:- Nuvem privada virtual (VPC) do Google Cloud
- Private Service Connect
- Cloud DNS
- Conectores de integração
Integration Connectors oferecem suporte à conectividade com seus back-ends hospedados em uma rede privada. Para ativar a conectividade particular, use o Private Service Connect (PSC). O PSC permite a conexão particular a serviços em diferentes redes.
No caso dos Integration Connectors, do ponto de vista de rede, você é o produtor de serviços e os Integration Connectors são o consumidor de serviços. Como produtor de serviços, você precisa configurar um anexo de serviço do PSC que os Integration Connectors podem usar para consumir o serviço. Depois que o anexo de serviço estiver pronto, será possível configurar a conexão para consumir o anexo de serviço usando um anexo de endpoint.
Anexos de endpoint
Os anexos de endpoint são recursos de Integration Connectors que permitem que as conexões estabeleçam conectividade com seus aplicativos de back-end usando os anexos de serviço do PSC.
A imagem a seguir mostra um anexo de endpoint que permite que uma conexão estabeleça conectividade com um aplicativo de back-end por meio de um anexo de serviço do PSC:
É possível criar o anexo de endpoint como um endereço IP ou um nome de host.
Criar um anexo de endpoint como um endereço IP
Para criar um anexo de endpoint como um endereço IP, use o console do Cloud ou a linha de comando (gcloud). .Console
Para criar um anexo de endpoint no console do Cloud, faça o seguinte:
- Abra a página Anexos do endpoint para os Integration Connectors.
- Clique em Criar. A página Criar anexo de endpoint é aberta.
- Insira valores nos seguintes campos:
- Nome: um nome para o anexo de endpoint. O nome precisa ser único. Não pode haver outros anexos de endpoints com o mesmo nome, e não é possível mudar o nome mais tarde. O nome precisa começar com uma letra minúscula seguida por até 63 letras minúsculas, números ou hifens, mas não pode terminar com um hífen. O comprimento mínimo é 2.
- ID do anexo do serviço: nome do anexo do serviço PSC que você já criou.
- (Opcional) Descrição: insira uma descrição para o anexo do endpoint.
- (Opcional) Rótulos: insira rótulos de recursos como pares de chave-valor. Para mais informações sobre rótulos, consulte O que são rótulos?.
- (Opcional) Ativar o acesso global do endpoint: selecione essa opção se quiser enviar tráfego para seu back-end de uma conexão presente em qualquer região.
Por padrão, o anexo de endpoint exige que a conexão e o back-end estejam na mesma região. Portanto, se você ativar o acesso global para o endpoint, uma conexão presente em qualquer região poderá enviar tráfego para seu back-end.
- Clique em Criar.
A coluna Endereço IP especifica o endereço IP do anexo do endpoint. É necessário usar esse endereço IP ao configurar um conector para conectividade privada.
gcloud
Para criar um anexo de endpoint na linha de comando, faça o seguinte:
- Acesse o recurso de anexo do serviço PSC:
gcloud compute service-attachments list
O comando retorna a lista de anexos de serviço. Exemplo:
NAME REGION TARGET_SERVICE CONNECTION_PREFERENCE demo-sa us-west1 k8s2-tcp-tgysilgj-apps-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC
Você vai precisar dessas informações nas etapas seguintes.
- Receba um token de autenticação antes de executar a API CreateEndpointAttachment:
TOKEN="$(gcloud auth print-access-token)"
- Crie o anexo do endpoint usando a API CreateEndpointAttachment. 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
Em que:
- LOCATION é a região do anexo de serviço. Por exemplo,
us-west1
. - PROJECT_ID é o projeto do Google Cloud em que você criou o anexo de serviço do PSC.
- ENDPOINT_ATTACHMENT_NAME é o nome do anexo de endpoint. O nome precisa ser único. Não pode haver outros anexos de endpoints com o mesmo nome, e não é possível mudar o nome mais tarde. O nome precisa começar com uma letra minúscula seguida por até 31 letras minúsculas, números ou hifens, mas não pode terminar com um hífen. O comprimento mínimo é 2.
- SERVICE_ATTACHMENT_NAME: é o nome do anexo de serviço. Use o nome da conta de serviço do PSC
retornado pelo comando
gcloud compute service-attachments list
executado anteriormente.
Depois que você chamar a API, Integration Connectors vão iniciar uma operação de longa duração, que pode levar algum tempo para ser concluída. O anexo do endpoint será criado após a conclusão da operação.
- LOCATION é a região do anexo de serviço. Por exemplo,
- Receba o ID do projeto do diretório de serviços associado ao seu projeto do Google Cloud e adicione esse ID à lista de permissões do anexo de serviço.
- Verifique se o anexo do endpoint foi criado usando a API GetEndpointAttachment.
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 retorna uma resposta semelhante a esta:
{ "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 do anexo de endpoint está disponível no campo
endpointIp
. Neste exemplo de resposta, o endereço IP é10.0.0.0
. Use esse endereço IP ao configurar um conector para conectividade particular.
Se a criação do anexo de endpoint for bem-sucedida, o anexo recém-criado será listado na página Anexos de endpoint, semelhante à imagem abaixo:
As etapas descritas até agora mostram como criar um anexo de endpoint como um endereço IP. No entanto, você também pode criar um anexo de endpoint como um nome de host e usar o nome de host para configurar um conector para conectividade particular. Para entender como criar um anexo de endpoint com um nome de host, consulte Criar um anexo de endpoint como um nome de host.
Criar um anexo de endpoint como um nome de host
Para criar um anexo de endpoint como um nome de host, faça o seguinte:
- Crie um anexo de endpoint como um endereço IP. Para mais informações, consulte Criar um anexo de endpoint como um endereço IP.
- Crie uma zona gerenciada privada do Cloud DNS em qualquer um dos seus projetos do Google Cloud.
Nessa zona DNS, você precisa adicionar um nome de host que será usado na configuração do conector e mapeá-lo para o endereço IP do anexo do endpoint que você recebeu na etapa 1. Para saber como criar uma zona gerenciada particular do Cloud DNS, consulte Criar uma zona particular e Adicionar um registro.
- Crie uma zona gerenciada de Integration Connectors no seu projeto do Google Cloud que você usa para os Integration Connectors. A zona gerenciada dos conectores de integração (zona de peering) se comunica com a zona particular gerenciada do Cloud DNS (criada na etapa 2) para resolução de nome.
Antes de criar a zona gerenciada, conceda os seguintes papéis e permissões:
- Conceda a permissão
connectors.managedZones.create
ao usuário que cria a zona gerenciada Integration Connectors.A permissão
connectors.managedZones.create
está disponível no papel do IAMroles/connectors.admin
ou noroles/connectors.managedZonesAdmin
. Para informações sobre os vários papéis do IAM e as permissões correspondentes disponíveis para os Integration Connectors, consulte Papéis e permissões do IAM para conectores de integração. - Conceda o papel
role/dns.peer
à conta de serviçoservice-PROJECT_NUMBER@gcp-sa-connectors.iam.gserviceaccount.com
Integration Connectors.Se o projeto do Cloud DNS for diferente do projeto do Google Cloud dos Integration Connectors, conceda o papel
roles/dns.peer
à conta de serviço dos Integration Connectors no projeto do Cloud DNS. Por exemplo, considere que você quer criar a zona gerenciada Integration Connectors no projeto 12345 do Google Cloud e que o Cloud DNS está no projeto 67890 do Google Cloud. Nesse caso, conceda o papelroles/dns.peer
à conta de serviçoservice-12345@gcp-sa-connectors.iam.gserviceaccount.com
no projeto 67890 do Google Cloud.
Para criar uma zona gerenciada pelos Integration Connectors, use o console do Cloud ou a linha de comando (gcloud).
Console
Para criar uma zona gerenciada de Integration Connectors no console do Cloud, faça o seguinte:
- Acesse a página "Zonas gerenciadas" para os Integration Connectors.
- Insira valores nos seguintes campos:
- Nome: um nome para a zona gerenciada.
- Nome de DNS de destino: nome completo do Cloud DNS para o qual você está criando a zona gerenciada (de peering). Por exemplo,
server8.stage.user.private
. - Projeto de destino: nome do projeto do Google Cloud que tem a zona particular do Cloud DNS.
- Rede de destino: nome da rede VPC em que a zona particular do Cloud DNS é mantida.
- (Opcional) Descrição: insira uma descrição para o anexo do endpoint.
- (Opcional) Rótulos: insira rótulos de recursos como pares de chave-valor. Para mais informações sobre rótulos, consulte O que são rótulos?
- Clique em Criar.
gcloud
Para criar uma zona gerenciada de Integration Connectors na linha de comando, faça o seguinte:
- Receba um token de autenticação antes de executar a API CreateManagedZone:
TOKEN="$(gcloud auth print-access-token)"
- Crie a zona gerenciada usando a API CreateManagedZone. 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
Em que:
- DESCRIPTION é uma descrição opcional da zona gerenciada.
- DNS_NAME: nome completo do Cloud DNS para o qual você está criando a zona gerenciada (de peering). Por exemplo,
server8.stage.user.private
. - TARGET_PROJECT é o nome do projeto do Google Cloud que tem a zona particular do Cloud DNS.
- TARGET_NETWORK é o nome da rede VPC em que a zona particular do Cloud DNS é mantida.
- PROJECT_ID é o projeto do Google Cloud que você está usando para os Integration Connectors.
- MANAGED_ZONE_NAME é o nome da zona gerenciada. O nome precisa ser único. Não é possível criar outras zonas gerenciadas com o mesmo nome, e não é possível mudar o nome depois. O nome precisa começar com uma letra minúscula seguida por até 63 letras minúsculas, números ou hifens, mas não pode terminar com um hífen. O comprimento mínimo é 2.
Depois que você chamar a API, Integration Connectors vão iniciar uma operação de longa duração, que pode levar algum tempo para ser concluída. A zona gerenciada será criada depois que a operação for concluída.
- Verifique se a zona gerenciada foi criada usando a API GetManagedZone.
Exemplo:
curl -X GET -H "Authorization: Bearer $TOKEN" \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones/MANAGED_ZONE_NAME
A API retorna uma resposta semelhante a esta:
{ "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 permissão
Se a criação da zona gerenciada for bem-sucedida, a zona gerenciada recém-criada será listada na página Zonas gerenciadas de forma semelhante à imagem abaixo:
Adicionar o projeto Integration Connectors à lista de permissões em um anexo de serviço
É possível criar o anexo de serviço do PSC para que ele aceite solicitações apenas dos projetos do Google Cloud especificados. No entanto, para fazer isso, você precisa do ID do projeto do diretório de serviços associado ao seu projeto do Google Cloud. Para conferir o ID do projeto do diretório de serviços, use a API List Connections, conforme mostrado no exemplo abaixo.
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:
- CONNECTORS_PROJECT_ID: o ID do projeto do Google Cloud em que você criou a conexão.
Exemplo
Este exemplo recebe o ID do projeto do diretório de serviços do projeto connectors-test
do Google Cloud.
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 desse comando no terminal mostra uma saída semelhante a esta:
..... { "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 } }, ....
Na saída de exemplo, para o projeto connectors-test
do Google Cloud, o ID do projeto do diretório de serviço é abcdefghijk-tp
.
Verificar a conexão de anexo do endpoint
Para verificar a conexão de anexo do endpoint, faça o seguinte:
- Na página Anexos de endpoint, clique no nome do anexo de endpoint que você criou.
- Na página Detalhes do anexo do endpoint que aparece, confira o campo Estado da conexão. Se o estado for
Accepted
, o anexo do endpoint foi configurado corretamente e a conexão do Private Service Connect foi estabelecida.Para informações sobre outros status, consulte Status da conexão.
Configurar uma conexão para usar o anexo do endpoint
Nos Conectores de integração, ao criar uma nova conexão ou atualizar uma existente, na seção "Destinos", selecione Anexo de endpoint como Tipo de destino e selecione o anexo de endpoint criado na lista Anexo de endpoint.
Se você criou uma zona gerenciada, selecione Endereço do host como Tipo de destino e use o registro A criado ao criar a zona gerenciada.
Conectividade a vários tipos de redes privadas
Embora a conectividade particular nos Integration Connectors sempre seja feita por meio de um anexo de serviço do PSC, as etapas para estabelecer a conectividade particular variam um pouco de acordo com o ambiente. As seções a seguir descrevem como estabelecer a conectividade privada nos vários ambientes:
- O back-end é hospedado localmente
- O back-end é hospedado na VPC do Google
- O back-end está hospedado no ambiente sem servidor do Google Cloud
- O back-end está disponível como um serviço gerenciado do Google Cloud