Esta página descreve como usar o Private Service Connect para se conectar a uma instância do AlloyDB para PostgreSQL.
Use o Private Service Connect para se conectar a uma instância principal do AlloyDB ou a qualquer uma das réplicas de leitura dela ou a uma instância secundária do AlloyDB de várias redes de nuvem privada virtual (VPC) que pertencem a diferentes grupos, equipes, projetos ou organizações.
Funções exigidas
É necessário conceder todos os papéis a seguir a um usuário na sua rede VPC para se conectar a uma instância do AlloyDB.
Papel | Descrição |
---|---|
compute.networkAdmin |
Concede controle total sobre a rede VPC que inicia uma conexão com uma instância do AlloyDB. Se você usar o Private Service Connect para se conectar a uma instância do AlloyDB de várias redes VPC, cada rede terá o próprio administrador. |
dns.admin |
Concede controle total sobre os recursos do Cloud DNS, incluindo zonas e registros DNS. |
alloydb.admin |
Concede controle total sobre uma instância do AlloyDB e sobre o ciclo de vida dela. |
alloydb.databaseUser (opcional) |
Dá acesso à instância do AlloyDB. Se você se conectar pelo cliente do proxy de autenticação do AlloyDB, é necessário ter o papel de cliente do AlloyDB. Se a conexão for direta, não serão necessários papéis e permissões do Identity and Access Management (IAM). |
Custom AlloyDB role (opcional) |
Se você estiver usando um papel personalizado, além de conceder os papéis compute.networkAdmin e dns.admin , conceda as seguintes permissões:
|
Ativar o Private Service Connect
Para ativar a conectividade de entrada, crie um cluster do AlloyDB com o Private Service Connect ativado. Ao criar uma instância principal, especifique os projetos permitidos para conectividade. Para conectividade de saída, forneça o URI de anexo de rede.
Criar um cluster principal do AlloyDB
O exemplo a seguir usa o comando gcloud alloydb clusters create
com a flag --enable-private-service-connect
, que cria um cluster do AlloyDB com o Private Service Connect ativado.
O processo de criação de um cluster permanece o mesmo, exceto pela transmissão da flag --enable-private-service-connect
. Para informações detalhadas sobre a criação de um cluster, consulte Criar o cluster e a instância principal.
Para criar o cluster, use o comando gcloud alloydb clusters
create
.
gcloud alloydb clusters create CLUSTER_ID \
--password=PASSWORD \
--region=REGION_ID \
--project=PROJECT_ID \
--enable-private-service-connect
Substitua:
CLUSTER_ID
: o ID do cluster que você está criando. Ele precisa começar com uma letra minúscula e pode conter letras minúsculas, números e hifens.PASSWORD
: a senha a ser usada para o usuáriopostgres
padrão.REGION_ID
: a região em que você quer colocar o cluster.PROJECT_ID
: o ID do projeto em que você quer colocar o cluster.
Esse comando inicia uma operação de longa duração, retornando um ID de operação.
Um cluster secundário criado para um cluster principal ativado pelo Private Service Connect herda automaticamente a configuração do Private Service Connect. Para mais informações, consulte Criar um cluster secundário.
Criar uma instância do AlloyDB
O exemplo a seguir mostra como criar uma instância principal com uma lista de projetos permitidos configurados. O processo de criação de uma instância permanece o mesmo, exceto pela transmissão da lista de projetos permitidos usando a flag --allowed-psc-projects
para um cluster principal ativado pelo Private Service Connect.
Para mais informações sobre como criar outros tipos de instância, consulte Criar uma instância de pool de leitura e Criar uma instância secundária.
gcloud
Para usar a CLI gcloud, você pode instalar e inicializar a CLI do Google Cloud ou usar o Cloud Shell.
Para criar a instância principal, use o comando gcloud alloydb instances create
.
gcloud alloydb instances create INSTANCE_ID \
--instance-type=PRIMARY \
--cpu-count=CPU_COUNT \
--availability-type=AVAILABILITY \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--allowed-psc-projects=ALLOWED_PROJECT_LIST
--psc-network-attachment-uri=NETWORK_ATTACHMENT_URI
Substitua:
INSTANCE_ID
: o ID da instância que você está criando. Ele precisa começar com uma letra minúscula e pode conter letras minúsculas, números e hifens.CPU_COUNT
: o número de vCPUs que você quer para a instância. Os valores válidos incluem:2
: 2 vCPUs, 16 GB de RAM4
: 4 vCPUs, 32 GB de RAM8
: 8 vCPUs, 64 GB de RAM16
: 16 vCPUs, 128 GB de RAM32
: 32 vCPUs, 256 GB de RAM64
: 64 vCPUs, 512 GB de RAM96
: 96 vCPUs, 768 GB de RAM128
: 128 vCPUs, 864 GB de RAM
AVAILABILITY
: indica se a instância precisa ou não de alta disponibilidade (HA), com nós em várias zonas. Os valores válidos incluem:REGIONAL
: cria uma instância de HA com nós ativos e de espera separados e failover automático entre eles. Esse é o valor padrão, adequado para ambientes de produção.ZONAL
: cria uma instância básica, contendo apenas um nó e sem failover automatizado.
REGION_ID
: a região em que você quer que a instância seja colocada.CLUSTER_ID
: o ID do cluster que você criou anteriormente.ALLOWED_PROJECT_LIST
: a lista separada por vírgulas dos IDs ou números de projeto que você quer permitir o acesso à instância. Por exemplo,my-project-1
,12345
,my-project-n
.NETWORK_ATTACHMENT_URI
: o nome completo do recurso do URI de anexo de rede que você criou. Por exemplo:projects/PROJECT_ID/regions/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID
.
Terraform
Para criar uma instância no cluster do banco de dados, use um recurso do Terraform.
resource "google_alloydb_instance" "default" {
cluster = google_alloydb_cluster.default.name
instance_id = "alloydb-instance"
instance_type = "PRIMARY"
machine_config {
cpu_count = 2
}
psc_instance_config {
allowed_consumer_projects = ["123456789"]
psc_interface_configs {
network_attachment_resource = google_compute_network_attachment.default.id
}
}
}
resource "google_compute_network" "default" {
name = "alloydb-network"
auto_create_subnetworks = false
}
resource "google_compute_subnetwork" "default" {
name = "alloydb-subnetwork"
region = "us-central1"
network = google_compute_network.default.id
ip_cidr_range = "10.0.0.0/16"
}
resource "google_compute_network_attachment" "default" {
name = "alloydb-network-attachment"
region = "us-central1"
connection_preference = "ACCEPT_AUTOMATIC"
subnetworks = [
google_compute_subnetwork.default.self_link
]
}
data "google_project" "project" {}
Preparar o Cloud Shell
Para aplicar a configuração do Terraform a um projeto do Google Cloud, prepare o Cloud Shell da seguinte maneira:
- Inicie o Cloud Shell.
Defina o projeto padrão do Google Cloud em que você quer aplicar as configurações do Terraform.
Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
Preparar o diretório
Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.
- No Cloud Shell, crie um diretório e um novo
arquivo nele. O nome do arquivo precisa ser um
arquivo TF, por exemplo,
main.tf
. Neste documento, o arquivo é chamado demain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
- Copie o exemplo de código no
main.tf
recém-criado. Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução completa.git clone https://github.com/terraform-google-modules/terraform-docs-samples
- No diretório
terraform-docs-samples
, navegue até o diretórioalloydb
.cd terraform-docs-samples/alloydb
- Copie o exemplo de código no
main.tf
recém-criado. Substituacp SAMPLE_FILE
<var>SAMPLE_FILE</var>
pelo nome do arquivo de amostra a ser copiado, por exemplo,main.tf
. - Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve as alterações.
- Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
Opcional: para usar a versão mais recente do provedor do Google, inclua a opçãoterraform init
-upgrade
:terraform init -upgrade
Aplique as alterações
- Revise a configuração para confirmar se as atualizações do Terraform correspondem às suas expectativas:
Faça as correções necessárias na configuração.terraform plan
- Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yes
no prompt: Aguarde até que o Terraform mostre a mensagemterraform apply
Apply complete!
.
Abra seu projeto do Google Cloud para conferir os resultados. No console do Google Cloud, navegue até seus recursos na interface para verificar se foram criados ou atualizados pelo Terraform.
Configurar a conectividade de entrada
Depois de ativar o PSC para uma instância do AlloyDB, é possível receber o URL de anexo de serviço e configurar um endpoint na VPC de consumo para se conectar com segurança à instância do AlloyDB.
Acessar o anexo de serviço
Depois de criar uma instância do AlloyDB com o Private Service Connect ativado, acesse o URL do anexo de serviço e use-o para criar o endpoint do Private Service Connect.
Use o comando gcloud alloydb instances describe
para conferir detalhes sobre uma instância.
gcloud alloydb instances describe INSTANCE_ID \
--cluster=CLUSTER_ID --region=REGION_ID
Substitua:
INSTANCE_ID
: o ID da instância.CLUSTER_ID
: o ID do cluster.REGION_ID
: a região em que o cluster do AlloyDB é implantado.
Um exemplo de resposta para o comando é o seguinte:
"pscInstanceConfig": {
"serviceAttachmentLink:": "https://www.googleapis.com/compute/v1/projects/my-project/regions/my-region/serviceAttachments/my-service-attachment-id"
"allowedConsumerProjects": {
"45678",
"12345",
"67890",
},
"pscDnsName": "11111111-1111-1111-1111-111111111111.22222222-2222-2222-2222-222222222222.alloydb-psc.goog."
}
O parâmetro serviceAttachmentLink
contém o valor do URL do anexo de serviço.
Criar um endpoint do Private Service Connect
Para criar um endpoint do Private Service Connect, transmita o URL do anexo do serviço com um nome de endpoint exclusivo. Para mais informações sobre como criar um endpoint do Private Service Connect, consulte Criar um endpoint.
Também é possível reservar um endereço IP interno para o endpoint do Private Service Connect usando o comando gcloud compute addresses create
e, em seguida, usar o endereço IP reservado ao criar o endpoint.
Configurar a conectividade de saída
Para ativar a conectividade de saída, defina o URI de anexo de rede ao criar ou atualizar uma instância do AlloyDB. Esse URI permite a conectividade segura entre seu projeto e a instância do AlloyDB durante operações de saída, como migrações.
Criar o anexo de rede
É possível criar um anexo de rede que aceite conexões automaticamente(ACCEPT_AUTOMATIC
) ou manualmente (ACCEPT_MANUAL
). Para saber mais, consulte Criar e gerenciar anexos de rede.
Se você optar por criar um anexo de rede que aceite conexões automaticamente, não será necessário definir uma lista de projetos aceitos explicitamente. Para aceitar conexões manualmente, adicione o número do projeto de propriedade do serviço em que a instância do AlloyDB está localizada à lista de projetos aceitos.
Para encontrar o número do projeto de propriedade do serviço, execute o seguinte comando:
gcloud alpha alloydb clusters describe CLUSTER_ID --region=REGION_ID
Veja a seguir um exemplo de resposta:
pscConfig:
pscEnabled: true
serviceOwnedProjectNumber: 123456789012
Depois de identificar o número do projeto de propriedade do serviço, adicione o projeto à lista de projetos aceitos e crie o anexo de rede.
Verifique se a região do anexo de rede é a mesma da instância do AlloyDB. Além disso, a sub-rede usada para criar o anexo de rede precisa pertencer aos intervalos de IP do RFC 1918, que são 10.0.0.0/8
, 172.16.0.0/12
e 192.168.0.0/16
.
Atualizar uma instância para conectividade de saída
Para ativar a conectividade de saída de uma instância do AlloyDB com o Private Service Connect ativado, transmita o parâmetro --psc-network-attachment-uri
para o comando gcloud alloydb instances update
.
As instâncias do AlloyDB criadas antes de 1º de março de 2025 não podem ser atualizadas para ativar as conexões de saída. Como alternativa, recomendamos usar uma das seguintes opções:
- Crie uma réplica regional de Cross-Region Replica (CRR) da sua instância principal com a conectividade de saída ativada. Em seguida, faça uma alternância para designar a instância de réplica como a nova instância principal.
- Faça um backup do cluster e da instância principal do AlloyDB. Em seguida, crie um novo cluster e uma instância principal do AlloyDB com a conectividade de saída ativada. Por fim, restaure o backup criado anteriormente no novo cluster.
Desativar a conectividade de saída
Para desativar a conectividade de saída de uma instância do AlloyDB, transmita o parâmetro --clear-psc-network-attachment-uri
para o comando gcloud alloydb instances update
.
Conectar-se a uma instância do AlloyDB
É possível se conectar a uma instância do AlloyDB com o Private Service Connect ativado usando uma das seguintes opções:
- um endereço IP interno,
- um registro DNS
- Proxy de autenticação do AlloyDB
- Conectores de linguagem do AlloyDB
Para se conectar usando registros DNS, é necessário criar um registro DNS em uma zona de DNS particular na rede VPC correspondente. Depois de criar um registro DNS, você pode usá-lo para se conectar a uma instância ativada do Private Service Connect diretamente usando um registro DNS, o proxy de autenticação do AlloyDB ou os conectores de linguagem do AlloyDB.
Configurar uma zona gerenciada de DNS e um registro DNS
Para configurar uma zona gerenciada de DNS e um registro DNS na sua rede, siga estas etapas:
Para conferir informações resumidas sobre uma instância do AlloyDB, incluindo o nome DNS da instância, use o comando
gcloud alloydb instances describe
:gcloud alloydb instances describe INSTANCE_ID \ --cluster=CLUSTER_ID --region=REGION_ID
Substitua:
INSTANCE_ID
: o ID da instância.CLUSTER_ID
: o ID do cluster.
Na resposta, verifique se o nome DNS é exibido. O nome do DNS tem o padrão
INSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog.
.Para criar uma zona de DNS particular, use o comando
gcloud dns managed-zones create
. Essa zona está associada à rede VPC usada para se conectar à instância do AlloyDB pelo endpoint do Private Service Connect.gcloud dns managed-zones create ZONE_NAME \ --project=PROJECT_ID \ --description=DESCRIPTION \ --dns-name=DNS_NAME \ --networks=NETWORK_NAME \ --visibility=private
Substitua:
ZONE_NAME
: o nome da zona de DNS.PROJECT_ID
: o ID ou o número do projeto Google Cloud que contém a zona.DESCRIPTION
: uma descrição da zona (por exemplo, uma zona DNS para a instância do AlloyDB).DNS_NAME
: o nome DNS da zona, comoINSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog.
.NETWORK_NAME
: o nome da rede VPC.
Depois de criar o endpoint do Private Service Connect, use o comando gcloud dns record-sets create para criar um registro DNS na zona:
gcloud dns record-sets create DNS_NAME \ --project=PROJECT_ID \ --type=RRSET_TYPE \ --rrdatas=RR_DATA \ --zone=ZONE_NAME
Substitua:
DNS_NAME
: o nome de DNS que você recuperou anteriormente neste procedimento.RRSET_TYPE
: o tipo de registro de recurso do conjunto de registros DNS (por exemplo, A).RR_DATA
: o endereço IP alocado para o endpoint do Private Service Connect (por exemplo, 198.51.100.5). Também é possível inserir vários valores, como rrdata1 rrdata2 rrdata3 (por exemplo, 10.1.2.3 10.2.3.4 10.3.4.5).
Conectar-se diretamente usando um registro DNS
Depois de criar um endpoint do Private Service Connect e um registro DNS, você pode se conectar diretamente usando o registro DNS.
Para recuperar o registro DNS do endpoint do Private Service Connect, use o comando
gcloud compute addresses describe
:gcloud compute addresses describe DNS_RECORD \ --project=PROJECT_ID \ --region=REGION_NAME
Substitua:
DNS_RECORD
: o registro DNS do endpoint.PROJECT_ID
: o ID ou o número do projeto Google Cloud que contém o endpoint.REGION_NAME
: o nome da região do endpoint.
Para se conectar à instância do AlloyDB, use o registro DNS.
psql -U USERNAME -h DNS_RECORD
Substitua:
USERNAME
: o nome do usuário que está se conectando à instância.DNS_RECORD
: o registro DNS do endpoint.
Conectar usando o proxy de autenticação do AlloyDB
O proxy de autenticação do AlloyDB é um conector que permite fazer conexões autorizadas e criptografadas com bancos de dados do AlloyDB. O proxy de autenticação do AlloyDB funciona com um cliente local em execução no ambiente local. O aplicativo se comunica com o proxy de autenticação do AlloyDB com o protocolo de banco de dados padrão usado por seu banco de dados.
Quando você define a flag --psc
ao iniciar o cliente do proxy de autenticação, o proxy de autenticação do AlloyDB usa o registro DNS criado para se conectar à instância ativada do Private Service Connect.
Inicie o cliente do proxy de autenticação transmitindo o URI da instância que você extraiu usando o comando gcloud alloydb instances list
e defina a flag --psc
.
Para mais informações sobre como se conectar a uma instância usando o proxy de autenticação, consulte Conectar usando o proxy de autenticação.
Conectar usando os conectores de linguagem do AlloyDB
Os conectores de linguagem do AlloyDB são bibliotecas que fornecem mTLS automatizado com TLS 1.3 e autorização de Identity and Access Management (IAM) ao se conectar a uma instância do AlloyDB.
Depois que o conector de idioma determina que a instância oferece suporte ao Private Service Connect, ele usa o registro DNS que você criou para se conectar à instância.
Java
Se você estiver usando o Private Service Connect para se conectar à instância do AlloyDB, inclua o seguinte:
config.addDataSourceProperty("alloydbIpType", "PSC");
Para mais informações sobre como usar o endpoint do Private Service Connect nos conectores de linguagem Java, consulte o repositório do GitHub.
Python (pg8000)
Se você estiver usando o Private Service Connect para se conectar à instância do AlloyDB, inclua o seguinte:
def getconn() -> pg8000.dbapi.Connection:
conn: pg8000.dbapi.Connection = connector.connect(
inst_uri,
"pg8000",
user=user,
password=password,
db=db,
# use ip_type to specify PSC
ip_type=IPTypes.PSC,
)
return conn
Para mais informações sobre como usar o endpoint do Private Service Connect nos conectores de linguagem Python, consulte o repositório do GitHub.
Python (asyncpg)
Se você estiver usando o Private Service Connect para se conectar à instância do AlloyDB, inclua o seguinte:
async def getconn() -> asyncpg.Connection:
conn: asyncpg.Connection = await connector.connect(
inst_uri,
"asyncpg",
user=user,
password=password,
db=db,
# use ip_type to specify PSC
ip_type=IPTypes.PSC,
)
return conn
Para mais informações sobre como usar o endpoint do Private Service Connect nos conectores de linguagem Python, consulte o repositório do GitHub.
Go (pgx)
Se você estiver usando o Private Service Connect para se conectar à instância do AlloyDB, inclua o seguinte:
d.Dial(ctx, instURI, alloydbconn.WithPSC())
Para mais informações sobre como usar o endpoint do Private Service Connect nos conectores da linguagem Go, consulte o repositório do GitHub.
Go (database/sql)
Se você estiver usando o Private Service Connect para se conectar à instância do AlloyDB, inclua o seguinte:
cleanup, err := pgxv5.RegisterDriver(
"alloydb",
alloydbconn.WithDefaultDialOptions(alloydbconn.WithPSC())
)
Para mais informações sobre como usar o endpoint do Private Service Connect nos conectores da linguagem Go, consulte o repositório do GitHub.
Conectar diretamente por um endereço IP interno
Depois de criar um endpoint do Private Service Connect, você pode se conectar diretamente a uma instância do AlloyDB usando o endereço IP configurado.
Para recuperar o endereço IP do endpoint do Private Service Connect, use o comando
gcloud compute addresses describe
:gcloud compute addresses describe ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
Substitua:
ADDRESS_NAME
: o nome do endereço IP do endpoint.PROJECT_ID
: o ID ou o número do projeto Google Cloud que contém o endpoint.REGION_NAME
: o nome da região do endpoint.
Para se conectar à instância do AlloyDB, use o endereço IP interno.
psql -U USERNAME -h IP_ADDRESS"
Substitua:
USERNAME
: o nome do usuário que está se conectando à instância.IP_ADDRESS
: o endereço IP do endpoint.
Limitações
- É possível configurar até 20 endpoints do Private Service Connect que se conectam ao anexo de serviço de uma instância do AlloyDB com o Private Service Connect ativado.
- Não é possível usar a flag
--network
ao criar um cluster ativado para o Private Service Connect porque ela está associada ao acesso a serviços privados. - Não é possível ativar ou desativar o Private Service Connect em uma instância.
- Não é possível configurar uma instância que tenha o Private Service Connect ativado para usar o Acesso a serviços privados.