Nesta página, descrevemos como usar o Private Service Connect para se conectar a uma instância do Cloud SQL.
Use o Private Service Connect para se conectar a uma instância primária do Cloud SQL ou a qualquer uma das réplicas de leitura de várias redes de nuvem privada virtual (VPC) que pertencem a diferentes grupos, equipes, projetos ou organizações.
Antes de começar
O suporte para usar o Private Service Connect com uma instância do Cloud SQL está disponível para a versão 416.0.0 e posteriores do gcloud CLI
.
Papéis do usuário
A tabela a seguir contém informações sobre os papéis necessários para usar o Private Service Connect com uma instância do Cloud SQL:
Papel | Descrição |
---|---|
compute.networkAdmin |
Concede controle total sobre a rede VPC que inicia uma conexão com uma instância do Cloud SQL. É possível criar e gerenciar endereços IP, regras de firewall e endpoints do Private Service Connect. Se você usar o Private Service Connect para se conectar a uma instância do Cloud SQL 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. |
cloudsql.admin |
Concede controle total sobre uma instância do Cloud SQL e sobre o ciclo de vida dela. |
cloudsql.instanceUser |
Concede acesso à instância do Cloud SQL. Se você se conecta pelo cliente do proxy do Cloud SQL Auth, é necessário ter o papel de cliente do Cloud SQL. Se a conexão for direta, não serão necessários papéis e permissões do Identity and Access Management (IAM). |
Criar uma instância do Cloud SQL
Você pode criar uma instância e habilitar o Private Service Connect usandogcloud CLI, o Terraform ou a API.
gcloud
Para criar uma instância e ativar o Private Service Connect para ela, use o comando gcloud sql instances create
:
gcloud sql instances create INSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip \ --database-version=DATABASE_VERSION --cpu=NUMBER_OF_vCPUs \ --memory=MEMORY_SIZE \ --root-password=ROOT_PASSWORD
Faça as seguintes substituições:
- INSTANCE_NAME: o nome da instância.
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância.
- REGION_NAME: o nome da região da instância.
ALLOWED_PROJECTS: uma lista de IDs ou números de projetos permitidos, separados por vírgulas. Se um projeto não estiver na lista, não será possível usá-lo para criar uma instância e ativar o Private Service Connect para ele.
- AVAILABILITY_TYPE: ativa a alta disponibilidade para a promovida. Para esse parâmetro, especifique um dos seguintes valores:
REGIONAL
: ativa a alta disponibilidade e é recomendado para instâncias de produção. A instância faz o failover para outra zona na sua região selecionada.ZONAL
: não fornece capacidade de failover. Esse é o valor padrão.
Para mais informações sobre como configurar e remover a alta disponibilidade de instâncias, consulte Configurar uma instância existente para alta disponibilidade e Desativar a alta disponibilidade de uma instância.
- DATABASE_VERSION: a versão do banco de dados para a instância (por exemplo,
SQLSERVER_2019_STANDARD
). - NUMBER_OF_vCPUs: o número de núcleos da instância.
- MEMORY_SIZE: a quantidade de memória para a instância.
- ROOT_PASSWORD: a senha do usuário do Cloud SQL
root
.
Terraform
Para criar uma instância com o Private Service Connect ativado, use o google_sql_database_instance
recurso do Terraform.
Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.
Preparar o Cloud Shell
- 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 serã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 dentro dele. O nome do arquivo precisa ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o arquivo é chamado demain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
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 de ponta a ponta.
- 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.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade
:terraform init -upgrade
Aplique as alterações
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância.
- INSTANCE_NAME: o nome da instância.
- REGION_NAME: o nome da região da instância.
- ROOT_PASSWORD: a senha do usuário do Cloud SQL
root
. - AVAILABILITY_TYPE: ativar a alta disponibilidade para a promovida. Para esse parâmetro, especifique um dos seguintes valores:
REGIONAL
: ativa a alta disponibilidade e é recomendado para instâncias de produção. A instância faz o failover para outra zona na sua região selecionada.ZONAL
: não fornece capacidade de failover. Esse é o valor padrão.
Para mais informações sobre como configurar e remover a alta disponibilidade de instâncias, consulte Configurar uma instância para alta disponibilidade e Desativar a alta disponibilidade de uma instância.
ALLOWED_PROJECTS: uma lista de IDs ou números de projetos permitidos, separados por vírgulas. Se um projeto não estiver na lista, não será possível usá-lo para criar uma instância e ativar o Private Service Connect para ele.
- MACHINE_TYPE: um valor de string enumerado que representa o tipo de máquina da instância. Por exemplo:
db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE
, em que NUMBER_OF_vCPUs e MEMORY_SIZE são o número de núcleos e a quantidade de memória que você quer para a instância.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Corpo JSON da solicitação:
{ "name": "INSTANCE_NAME", "project": PROJECT_ID", "region": "REGION_NAME", "databaseVersion": "SQLSERVER_2019_STANDARD", "rootPassword": "ROOT_PASSWORD", "kind": "sql#instance", "settings": { "availabilityType": "AVAILABILITY_TYPE", "ipConfiguration": { "ipv4Enabled": false, "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "tier": "MACHINE_TYPE" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Acessar o anexo de serviço
Depois de criar uma instância do Cloud SQL com o Private Service Connect ativado, acesse o URI do anexo de serviço e use-o para criar o endpoint do Private Service Connect.
gcloud
Para acessar informações resumidas sobre uma instância com o Private Service Connect ativado, como o campo pscServiceAttachmentLink
, que mostra o URI que aponta para o anexo de serviço da instância, use o comando gcloud sql instances describe
:
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
Faça as seguintes substituições:
- INSTANCE_NAME: o nome da instância do Cloud SQL a que os endpoints do Private Service Connect em redes VPC podem se conectar
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
O exemplo a seguir é uma demonstração de saída desse comando:
gcloud sql instances describe myinstance \ --project=12345 ... pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment
Terraform
Para conseguir o URI do anexo de serviço, use o google_compute_address
recurso do Terraform.
Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.
Preparar o Cloud Shell
- 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 serã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 dentro dele. O nome do arquivo precisa ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o arquivo é chamado demain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
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 de ponta a ponta.
- 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.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade
:terraform init -upgrade
Aplique as alterações
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
- INSTANCE_NAME: o nome da instância
Método HTTP e URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ ... pscServiceAttachmentLink: "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME" }
O campo pscServiceAttachmentLink
exibe o URI que aponta para o anexo de serviço da instância.
Criar um endpoint do Private Service Connect
É possível reservar um endereço IP interno para o endpoint do Private Service Connect e criar um endpoint com esse endereço. Para criar o endpoint, você precisa do URI do anexo de serviço e dos projetos com permissão para a instância.
gcloud
Para reservar um endereço IP interno para o endpoint do Private Service Connect, use o comando
gcloud compute addresses create
:gcloud compute addresses create ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --subnet=SUBNET_NAME \ --addresses=INTERNAL_IP_ADDRESS
Faça as seguintes substituições:
- ADDRESS_NAME: o nome do endereço IP interno.
- PROJECT_ID: o ID ou número do projeto do Google Cloud para o endpoint.
- REGION_NAME: o nome da região do endpoint.
- SUBNET_NAME: o nome da sub-rede do endereço IP.
- INTERNAL_IP_ADDRESS: o endereço IP a ser reservado. Esse endereço IP precisa estar dentro do intervalo de IP principal da sub-rede. O endereço IP pode ser um endereço RFC 1918 ou uma sub-rede com intervalos não RFC.
Para verificar se o endereço IP está reservado, use o comando
gcloud compute addresses list
:gcloud compute addresses list ADDRESS_NAME \ --project=PROJECT_ID
Na resposta, verifique se o endereço IP tem um status
RESERVED
.Para criar o endpoint do Private Service Connect e apontá-lo para o anexo do serviço do Cloud SQL, use o comando
gcloud compute forwarding-rules create
:gcloud compute forwarding-rules create ENDPOINT_NAME \ --address=ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --network=NETWORK_NAME \ --target-service-attachment=SERVICE_ATTACHMENT_URI \ --allow-psc-global-access
Faça as seguintes substituições:
- ENDPOINT_NAME: o nome do endpoint.
- NETWORK_NAME: o nome da rede VPC do endpoint.
- SERVICE_ATTACHMENT_URI: o URI do anexo de serviço
Para verificar se o anexo de serviço aceita o endpoint, use o comando
gcloud compute forwarding-rules describe
:gcloud compute forwarding-rules describe ENDPOINT_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
Na resposta, verifique se um status
ACCEPTED
aparece para o campopscConnectionStatus
. O endpoint pode se conectar ao anexo de serviço.
Terraform
Para criar um endpoint do Private Service Connect, use o google_sql_database_instance
recurso do Terraform.
Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.
Preparar o Cloud Shell
- 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 serã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 dentro dele. O nome do arquivo precisa ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o arquivo é chamado demain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
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 de ponta a ponta.
- 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.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade
:terraform init -upgrade
Aplique as alterações
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.
REST
Reserve um endereço IP interno para o endpoint do Private Service Connect.
Verifique se o endereço IP está reservado.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém o endpoint do Private Service Connect
- REGION_NAME: o nome da região.
- ADDRESS_NAME: o nome do endereço IP
Método HTTP e URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "compute#address", "id": "ADDRESS_ID", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "addressType": "EXTERNAL" }
Na resposta, verifique se o endereço IP tem um status
RESERVED
.Crie o endpoint do Private Service Connect e aponte-o para o anexo de serviço do Cloud SQL.
Verifique se o anexo de serviço aceita o endpoint.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém o endpoint do Private Service Connect
- REGION_NAME: o nome da região.
- ENDPOINT_NAME: o nome do endpoint.
Método HTTP e URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "compute#forwardingRule", "id": "ENDPOINT_ID", "creationTimestamp": "2024-05-09T12:03:21.383-07:00", "name": "ENDPOINT_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "CONNECTION_ID", "pscConnectionStatus": "ACCEPTED", "allowPscGlobalAccess": true }
Na resposta, verifique se um status
ACCEPTED
aparece para o campopscConnectionStatus
. O endpoint pode se conectar ao anexo de serviço.
Conexão com uma instância do Cloud SQL
É possível se conectar a uma instância do Cloud SQL com o Private Service Connect ativado usando um endereço IP interno, um registro DNS, o proxy de autenticação do Cloud SQL, os conectores de linguagem do Cloud SQL ou outros aplicativos do Google Cloud.
Configurar uma zona gerenciada de DNS e um registro DNS
O Cloud SQL não cria registros DNS automaticamente. Em vez disso, a resposta da API de consulta da instância fornece um nome DNS sugerido. Recomendamos que você crie o registro DNS em uma zona de DNS particular na rede VPC correspondente. Isso proporciona uma maneira consistente de usar o proxy do Cloud SQL Auth para se conectar de diferentes redes.
gcloud
Para ver informações resumidas sobre uma instância do Cloud SQL, incluindo o nome DNS da instância, use o comando
gcloud sql instances describe
:gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
Faça as seguintes substituições:
- INSTANCE_NAME: o nome da instância do Cloud SQL
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
Na resposta, verifique se o nome DNS é exibido. Esse nome tem o seguinte padrão:
INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.
. Por exemplo,1a23b4cd5e67.1a2b345c6d27.us-central1.sql.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 Cloud SQL por meio do 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
Faça as seguintes substituições:
- ZONE_NAME: o nome da zona de DNS.
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a zona
- DESCRIPTION: uma descrição da zona (por exemplo, uma zona DNS para a instância do Cloud SQL
- DNS_NAME: o nome do sufixo DNS da zona, como
REGION_NAME.sql.goog.
(em que REGION_NAME é o nome da região da zona) - 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_RECORD \ --project=PROJECT_ID \ --type=RRSET_TYPE \ --rrdatas=RR_DATA \ --zone=ZONE_NAME
Faça as seguintes substituições:
- DNS_RECORD: o nome do registro DNS. Esse registro é definido como o nome DNS que você extraiu da instância do Cloud SQL anteriormente neste procedimento (por exemplo,
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
). - 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 diversos valores, comorrdata1 rrdata2 rrdata3
(por exemplo,10.1.2.3 10.2.3.4 10.3.4.5
).
- DNS_RECORD: o nome do registro DNS. Esse registro é definido como o nome DNS que você extraiu da instância do Cloud SQL anteriormente neste procedimento (por exemplo,
REST
- Conferir o nome do DNS de uma instância do Cloud SQL.
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
- INSTANCE_NAME: o nome da instância
- Crie uma zona de DNS particular. Essa zona está associada à rede VPC usada para se conectar à instância do Cloud SQL por meio do endpoint do Private Service Connect.
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a zona DNS
- ZONE_NAME: o nome da zona
- DESCRIPTION: uma descrição da zona (por exemplo, uma zona DNS para a instância do Cloud SQL
- DNS_NAME: o nome do sufixo DNS da zona, como
REGION_NAME.sql.goog.
(em que REGION_NAME é o nome da região da zona) - NETWORK_NAME: o nome da rede VPC.
- Depois de criar o endpoint do Private Service Connect, crie um registro DNS na zona.
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a zona de DNS.
- ZONE_NAME: o nome da zona.
- DNS_RECORD: o nome do registro DNS. Esse registro é definido como o nome DNS que você extraiu da instância do Cloud SQL anteriormente neste procedimento (por exemplo,
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
). - RRSET_TYPE: o tipo do conjunto de registros (por exemplo,
A
). - TTL: o tempo de vida (TTL) do conjunto de registros em número de segundos (por exemplo,
300
). - 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 diversos valores, comorrdata1 rrdata2 rrdata3
(por exemplo,10.1.2.3 10.2.3.4 10.3.4.5
).
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
Método HTTP e URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ ... "dnsName": "INSTANCE_ID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog." }
O campo dnsName
exibe o nome DNS da instância do Cloud SQL. os nomes DNS sempre terminam com um ponto (.
).
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
Método HTTP e URL:
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones
Corpo JSON da solicitação:
{ "name": "ZONE_NAME", "description": "DESCRIPTION", "dnsName": "DNS_NAME", "visibility": "private", "privateVisibilityConfig": { "kind": "dns#managedZonePrivateVisibilityConfig", "networks": [ { "kind": "dns#managedZonePrivateVisibilityConfigNetwork", "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME" } ] } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "ZONE_NAME", "dnsName": "DNS_NAME", "description": "DESCRIPTION", "id": "ID", "nameServers": [ "ns-gcp-private.googledomains.com." ], "creationTime": "2024-05-10T17:05:34.607Z", "visibility": "private", "privateVisibilityConfig": { "networks": [ { "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME", "kind": "dns#managedZonePrivateVisibilityConfigNetwork" } ], "gkeClusters": [], "kind": "dns#managedZonePrivateVisibilityConfig" }, "cloudLoggingConfig": { "kind": "dns#managedZoneCloudLoggingConfig" }, "kind": "dns#managedZone" }
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
Método HTTP e URL:
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/ZONE_NAME
Corpo JSON da solicitação:
{ "deletions": [] "additions": [ { "name": "DNS_RECORD", "type": "RRSET_TYPE", "ttl": TTL, "rrdatas": [ "RR_DATA" ] } ] }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "additions": [ { "name": "DNS_RECORD", "type": "RRSET_TYPE", "ttl": TTL, "rrdatas": [ "RR_DATA" ], "signatureRrdatas": [], "kind": "dns#resourceRecordSet" } ], "deletions": [], "startTime": "2024-05-10T17:29:44.375Z", "id": "CHANGE_ID", "status": "pending", "kind": "dns#change" }
Conectar-se diretamente usando um registro DNS
Antes de se conectar a uma instância do Cloud SQL usando um registro DNS, faça o seguinte:
- Crie um endpoint do Private Service Connect.
- Confirme se o anexo de serviço da instância aceita o endpoint. Para verificar se o status do endpoint é
ACCEPTED
, confira o status. - Configure uma zona gerenciada de DNS e um registro DNS.
Depois de atender a essas condições, use o registro DNS para se conectar à instância por qualquer rede VPC em que você criou o endpoint.
sqlcmd -S DNS_RECORD -d DATABASE_NAME -U USERNAME
Faça as seguintes substituições:
- DNS_RECORD: o registro DNS do endpoint
- DATABASE_NAME: o nome do banco de dados do Cloud SQL para SQL Server contido na instância
- USERNAME: o nome do usuário que está se conectando à instância
Conectar diretamente por um endereço IP interno
Antes de se conectar a uma instância do Cloud SQL com o Private Service Connect ativado, faça o seguinte:
- Crie um endpoint do Private Service Connect.
- Confirme se o anexo de serviço da instância aceita o endpoint. Para verificar se o status do endpoint é
ACCEPTED
, confira o status.
Depois de atender a essas condições, use o endereço IP do endpoint para acessar a instância por qualquer rede VPC em que você criou o endpoint.
Recupere o endereço IP interno do endpoint do Private Service Connect.
gcloud
Para recuperar o endereço IP, use o comando
gcloud compute addresses describe
:gcloud compute addresses describe ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
Faça as seguintes substituições:
- ADDRESS_NAME: o nome do endereço IP do endpoint
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém o endpoint
- REGION_NAME: o nome da região do endpoint
Na resposta, verifique se um endereço IP aparece para o campo
address
. Esse é o endereço IP interno.REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém o endpoint
- REGION_NAME: o nome da região do endpoint
- ADDRESS_NAME: o nome do endereço IP do endpoint
Método HTTP e URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "compute#address", "id": "ADDRESS_ID", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "addressType": "EXTERNAL" }
O endereço IP interno é o valor associado ao campo
address
.-
Para se conectar à instância do Cloud SQL, use o endereço IP interno.
sqlcmd -S IP_ADDRESS -d DATABASE_NAME -U USERNAME
Faça as seguintes substituições:
- IP_ADDRESS: o endereço IP do endpoint
- DATABASE_NAME: o nome do banco de dados do Cloud SQL para SQL Server contido na instância
- USERNAME: o nome do usuário que está se conectando à instância
Conectar usando o proxy do Cloud SQL Auth
O proxy de autenticação do Cloud SQL é um conector que fornece acesso seguro a uma instância com o Private Service Connect ativado sem a necessidade de redes autorizadas ou configuração de SSL.
Para permitir conexões de clientes do proxy do Cloud SQL Auth, configure um registro DNS que corresponda ao nome DNS recomendado fornecido para a instância. O registro DNS é um mapeamento entre um recurso de DNS e um nome de domínio.
Fazer o download e instalar o proxy de autenticação do Cloud SQL
Para se conectar a instâncias com o Private Service Connect ativado, faça o download e instale o binário do proxy do Cloud SQL Auth. O binário para download depende do sistema operacional e se ele usa um kernel de 32 ou 64 bits. Os modelos de hardware mais recentes usam kernel de 64 bits.
Se você não tiver certeza se a máquina
está executando um kernel de 32 ou 64 bits, use o comando uname -a
para Linux ou macOS. Para o Windows, consulte a
documentação do Windows.
Iniciar o proxy de autenticação do Cloud SQL
O proxy do Cloud SQL Auth é compatível com conexões a instâncias com o Private Service Connect ativado. Para mais informações, consulte Iniciar o proxy de autenticação do Cloud SQL.
- Exibir informações resumidas sobre uma instância do Cloud SQL, incluindo o nome de conexão da instância.
gcloud
Para conferir informações resumidas sobre uma instância do Cloud SQL, use o comando
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --format='value(connectionName)'
Faça as seguintes substituições:
- INSTANCE_NAME: o nome da instância do Cloud SQL
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
Esse nome de conexão está no formato
PROJECT_ID:REGION_NAME:INSTANCE_NAME
.REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
- INSTANCE_NAME: o nome da instância
Método HTTP e URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ ... "connectionName": "PROJECT_ID:REGION_NAME:INSTANCE_NAME" }
Esse nome de conexão está no formato
PROJECT_ID:REGION_NAME:INSTANCE_NAME
. - Copie o nome da conexão da instância.
Inicie o proxy do Cloud SQL Auth:
./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc
Substitua INSTANCE_CONNECTION_NAME pelo nome da conexão da instância copiado no passo anterior.
Conectar usando os conectores do Cloud SQL Language
Os conectores de linguagem do Cloud SQL são bibliotecas que fornecem acesso seguro a uma instância do Cloud SQL com o Private Service Connect ativado sem necessidade de redes autorizadas ou configuração de SSL.
Para permitir conexões com os conectores de linguagem do Cloud SQL, configure um registro DNS que corresponda ao nome DNS recomendado fornecido para a instância. O registro DNS é um mapeamento entre um recurso de DNS e um nome de domínio.
Os conectores de idioma do Cloud SQL são compatíveis com conexões do Private Service Connect pelo tipo de IP PSC
nas respectivas bibliotecas.
- Conector Python do Cloud SQL
- Conector do Cloud SQL para Go
- Conector Java do Cloud SQL
- Conector do Cloud SQL para Node.js
Conectar-se pelo App Engine Standard, Cloud Run ou funções do Cloud Run
Para se conectar a instâncias do Cloud SQL com o Private Service Connect ativado, use o ambiente padrão do App Engine, o Cloud Run ou funções do Cloud Run.
Nesses ambientes sem servidor compatíveis, há suporte tanto para os conectores de linguagem do Cloud SQL quanto para as conexões TCP diretas por meio de um endereço IP e de um número de porta. Para conexões TCP diretas, esse é o endereço IP que você reserva ao criar o endpoint do Private Service Connect. É possível especificar o endereço IP como o endereço do host do banco de dados.
Se você criar um registro DNS para o endpoint, poderá especificar esse registro para o host.
Conectar a partir do BigQuery
Para acessar dados no Cloud SQL e fazer consultas nesses
dados por uma conexão IP interna, use o parâmetro --enable-google-private-path
. Esse parâmetro só será válido se:
- Use o parâmetro
--no-assign-ip
. - Use o parâmetro
--network
para especificar o nome da rede VPC que você quer usar para criar uma conexão interna.
Testar a conectividade
Para testar a conectividade de entrada de uma instância do Cloud SQL com o Private Service Connect ativado, defina o endereço IP do endpoint do Private Service Connect como o endereço IP de destino.
gcloud
Para criar um teste de conectividade para uma instância do Cloud SQL com o Private Service Connect ativado, use o comando gcloud network-management connectivity-tests create
:
gcloud network-management connectivity-tests create CONNECTIVITY_TEST_NAME \ --source-instance=SOURCE_INSTANCE \ --destination-cloud-sql-instance=DESTINATION_CLOUD_SQL_INSTANCE \ --destination-network=DESTINATION_NETWORK \ --destination-port=DESTINATION_PORT \ --protocol=tcp
Faça as seguintes substituições:
- CONNECTIVITY_TEST_NAME: o nome do teste de conectividade.
- SOURCE_INSTANCE: o URI da instância do Compute Engine em que o endereço IP de origem está localizado (por exemplo,
projects/myproject/zones/myzone/instances/myinstance
). - DESTINATION_CLOUD_SQL_INSTANCE: o URL da instância do Cloud SQL (por exemplo,
projects/myproject/instances/myinstance
). - DESTINATION_NETWORK: o URI da rede VPC em que o endereço IP de destino está (por exemplo,
projects/myproject/global/networks/mynetwork
). - DESTINATION_PORT pelo número da porta reservada para a instância. Para instâncias do Cloud SQL para SQL Server, o número da porta é
1433
.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância.
- CONNECTIVITY_TEST_NAME: o nome do teste de conectividade.
- SOURCE_IP_ADDRESS: o endereço IP da instância de origem do Compute Engine.
- SOURCE_INSTANCE: o URI da instância do Compute Engine em que o endereço IP de origem está localizado (por exemplo,
projects/myproject/zones/myzone/instances/myinstance
). - SOURCE_NETWORK: o URI da rede VPC em que o endereço IP de origem está localizado (por exemplo,
projects/myproject/global/networks/mynetwork
). - DESTINATION_IP_ADDRESS: o endereço IP da instância de destino do Cloud SQL.
- DESTINATION_PORT pelo número da porta reservada para a instância. Para instâncias do Cloud SQL para SQL Server, o número da porta é
1433
. - DESTINATION_NETWORK: o URI da rede VPC em que o endereço IP de destino está (por exemplo,
projects/myproject/global/networks/mynetwork
).
Método HTTP e URL:
POST https://networkmanagement.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/connectivityTests?testId=CONNECTIVITY_TEST_NAME
Corpo JSON da solicitação:
{ "source": { "ipAddress": "SOURCE_IP_ADDRESS", "instance": "SOURCE_INSTANCE", "network": "SOURCE_NETWORK" }, "destination": { "ipAddress": "DESTINATION_IP_ADDRESS", "port": DESTINATION_PORT, "network": "DESTINATION_NETWORK", "projectId": "PROJECT_ID" }, "protocol": "TCP" }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_ID/locations/global/operations/operation-OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.networkmanagement.v1.OperationMetadata", "createTime": "2024-05-23T16:43:49.313981473Z", "target": "projects/PROJECT_ID/locations/global/connectivityTests/CONNECTIVITY_TEST_NAME", "verb": "create", "cancelRequested": false, "apiVersion": "v1" }, "done": false }
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 Cloud SQL com o Private Service Connect ativado.
- Não é possível usar backends para instâncias com o Private Service Connect ativado.
- As sinalizações a seguir são invalidadas ou afetadas:
--no-assign-ip:
usa essa flag porque as instâncias do Cloud SQL com o Private Service Connect ativado não têm suporte para usar outros tipos de conectividade, como conexões IP externas--authorized-networks:
não é possível usar esta flag para adicionar redes autorizadas.--network:
não é possível usar esta flag porque ela está associada ao acesso a serviços privados.--allocated-ip-range-name:
não é possível usar esta flag porque os nomes de intervalos de IP permitidos não são compatíveis.
- Não é possível criar uma réplica externa de uma instância com o Private Service Connect ativado.
- 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 ou conexões IP externas.
- Não é possível ativar conexões de IP externo em uma instância com o Private Service Connect ativado.
- Não é possível ativar o acesso a serviços privados ou adicionar redes autorizadas à instância.
- Não é possível alterar o tipo de conectividade da instância.
- Não é possível usar o comando
gcloud sql connect
, o Cloud Shell, o Cloud Build ou o Database Migration Service para se conectar a instâncias do Cloud SQL com o Private Service Connect ativado. - Ao testar a conectividade com uma instância do Cloud SQL com o Private Service Connect ativado, não é possível definir os seguintes itens:
- O endereço IP interno da instância ou o nome DNS como o destino diretamente
- A instância como a origem
- O endereço IP do endpoint do Private Service Connect como a origem
- Não há suporte para a lista de permissões baseada em IP usando redes autorizadas.
- Para instâncias do Cloud SQL com o Private Service Connect ativado, o serviço gerenciado para o Microsoft Active Directory (também chamado de Microsoft AD gerenciado) e os servidores vinculados não são compatíveis.
Resolver problemas
Esta seção contém informações sobre problemas associados a instâncias do Cloud SQL com o Private Service Connect ativado, além de etapas para solucionar os problemas.
Problema Solução de problemas O anexo de serviço da instância não aceita o endpoint do Private Service Connect. - Verifique o status do endpoint.
gcloud
Para verificar o status, use o comando
gcloud compute forwarding-rules describe
.gcloud compute forwarding-rules describe ENDPOINT_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ | grep pscConnectionStatus
Faça as seguintes substituições:
- ENDPOINT_NAME: o nome do endpoint.
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém o endpoint
- REGION_NAME: o nome da região do endpoint
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém o endpoint do Private Service Connect
- REGION_NAME: o nome da região.
- ENDPOINT_NAME: o nome do endpoint.
Método HTTP e URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "compute#forwardingRule", "id": "ENDPOINT_ID", "creationTimestamp": "2024-05-09T12:03:21.383-07:00", "name": "ENDPOINT_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "CONNECTION_ID", "pscConnectionStatus": "ACCEPTED", "allowPscGlobalAccess": true }
- Verifique se o status do endpoint é
ACCEPTED
. Se o status forPENDING
, a instância não está permitindo o projeto do Google Cloud que contém o endpoint. Verifique se o projeto de rede em que o endpoint foi criado é permitido. Para mais informações, consulte Editar uma instância com o Private Service Connect ativado.
A seguir
- Saiba mais sobre IP privado.
- Saiba mais sobre o Private Service Connect.
- Saiba mais sobre como criar uma réplica de leitura de uma instância com o Private Service Connect ativado.
- Saiba mais sobre como clonar uma instância com o Private Service Connect ativado.
- Saiba mais sobre como ver informações resumidas sobre instâncias com o Private Service Connect ativado.
- Saiba mais sobre como configurar e remover a alta disponibilidade de uma instância com o Private Service Connect ativado.
- Saiba mais sobre como editar e excluir uma instância com o Private Service Connect ativado.