Esta página descreve como configurar o acesso a serviços privados e o Private Service Connect .
Ao configurar o acesso a serviços privados , você pode alocar um intervalo de endereços IP e criar uma conexão de serviço privada para a rede Virtual Private Cloud (VPC) em seu Google Cloud projeto. Isso permite que recursos na rede VPC se conectem às suas instâncias do Cloud SQL.
Ao configurar o Private Service Connect , você pode se conectar a uma instância primária do Cloud SQL ou a qualquer uma de suas réplicas de leitura de várias redes VPC que pertencem a diferentes grupos, equipes, projetos ou organizações.
Crie uma instância que suporte acesso a serviços privados e Private Service Connect
Ao criar uma instância do Cloud SQL compatível com acesso a serviços privados e o Private Service Connect, você obtém os benefícios de ambos os serviços. Para obter mais informações, consulte Opções de conexão para instâncias .
Ao usar o Private Service Connect, você pode se conectar a uma instância do Cloud SQL de várias redes VPC que pertencem a diferentes grupos, equipes, projetos ou organizações.
Você pode criar uma instância do Cloud SQL que ofereça suporte ao acesso a serviços privados e ao Private Service Connect usando gcloud CLI ou a API.
gcloud
Para criar uma instância que suporte acesso a serviços privados e Private Service Connect, use o comando gcloud beta sql instances create
:
gcloud beta 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 \ --allocated-ip-range-name=RANGE_NAME \ --enable-google-private-path \ --tier=MACHINE_TYPE \ --database-version=DATABASE_VERSION \ --network=VPC_PSA_NETWORK_PATH \ --psc-auto-connections=network=VPC_PSC_NETWORK_PATH,project=SERVICE_PROJECT
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 projeto 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 nessa lista, você não poderá criar endpoints do Private Service Connect no projeto para se conectar à instância.
- AVAILABILITY_TYPE : habilita alta disponibilidade para a instância. Para este parâmetro, especifique um dos seguintes valores:
-
REGIONAL
: habilita alta disponibilidade e é recomendado para instâncias de produção. A instância realiza failover para outra zona dentro da região selecionada. -
ZONAL
: não oferece capacidade de failover. Este é o valor padrão.
Para obter mais informações sobre como definir e remover alta disponibilidade para instâncias, consulte Configurar uma instância existente para alta disponibilidade e Desativar alta disponibilidade para uma instância .
-
- RANGE_NAME : para este parâmetro opcional, defina um nome de intervalo para o qual um intervalo de IP será alocado. O nome do intervalo deve estar em conformidade com
RFC 1035
e conter de 1 a 63 caracteres. - MACHINE_TYPE : o tipo de máquina para a instância.
- DATABASE_VERSION : a versão do banco de dados para a instância (por exemplo,
POSTGRES_13
). - VPC_PSA_NETWORK_PATH : o nome e o caminho da rede VPC à qual a instância se conecta (por exemplo,
"projects/ PROJECT_ID /global/networks/default"
). Essa rede é usada para conexões de acesso a serviços privados e para o endereço IP de acesso a serviços privados da instância do Cloud SQL. - VPC_PSC_NETWORK_PATH : o caminho para a rede VPC de onde o endpoint do Private Service Connect precisa ser criado. Por exemplo:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT : o projeto onde o endpoint do Private Service Connect é criado. Se a rede VPC não for uma VPC compartilhada, este poderá ser apenas o projeto host da rede. Se for uma VPC compartilhada, este poderá ser o projeto host ou o projeto de serviço.
Para saber como se conectar a uma instância que tenha o Private Service Connect habilitado, consulte Conectar a uma instância do Cloud SQL .
Para desativar o IP público, use o parâmetro --no-assign-ip
.
Além disso, opcionalmente, use o parâmetro --enable-google-private-path
para permitir outros Google Cloud Serviços como o BigQuery para acessar dados no Cloud SQL e realizar consultas nesses dados por meio de uma conexão IP privada. Este parâmetro é válido somente se:
- Use o parâmetro
--no-assign-ip
. - Use o parâmetro
--network
para especificar o nome da rede VPC que você deseja usar para criar uma conexão privada.
Terraform
Para criar uma instância com acesso a serviços privados e Private Service Connect habilitados, use o recurso google_sql_database_instance
do Terraform .
Para aplicar sua configuração do Terraform em um Google Cloud projeto, conclua as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell .
Defina o padrão Google Cloud projeto onde você deseja aplicar suas configurações do Terraform.
Você só precisa executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
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 deve ter seu 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 deve ter a extensão
.tf
— por exemplo,main.tf
Neste tutorial, o arquivo será chamado demain.tf
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Se estiver seguindo um tutorial, você pode copiar o código de exemplo em cada seção ou etapa.
Copie o código de exemplo no
main.tf
recém-criado.Opcionalmente, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução completa.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve suas 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
Aplicar as alterações
- Revise a configuração e verifique se os recursos que o Terraform irá criar ou atualizar correspondem às suas expectativas:
terraform plan
Faça correções na configuração conforme necessário.
- Aplique a configuração do Terraform executando o seguinte comando e digitando
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Aplicação concluída!".
- Abra seu Google Cloud projeto para visualizar os resultados. No Google Cloud console, navegue até seus recursos na interface do usuário para garantir que o Terraform os criou ou atualizou.
DESCANSAR
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- PROJECT_ID : o ID ou número do projeto do Google Cloud projeto que contém a instância.
- INSTANCE_NAME : o nome da instância.
- REGION_NAME : o nome da região da instância.
- AVAILABILITY_TYPE : habilita alta disponibilidade para a instância. Para este parâmetro, especifique um dos seguintes valores:
-
REGIONAL
: habilita alta disponibilidade e é recomendado para instâncias de produção. A instância realiza failover para outra zona dentro da região selecionada. -
ZONAL
: não oferece capacidade de failover. Este é o valor padrão.
Para obter mais informações sobre como definir e remover alta disponibilidade para instâncias, consulte Configurar uma instância existente para alta disponibilidade e Desativar alta disponibilidade para uma instância .
-
- VPC_PSA_NETWORK_PATH : o caminho da rede VPC à qual a instância se conecta (por exemplo,
"projects/ PROJECT_ID /global/networks/default"
). Essa rede é usada para conexões de acesso a serviços privados e para o endereço IP de acesso a serviços privados da instância do Cloud SQL. - RANGE_NAME : para este parâmetro opcional, defina um nome de intervalo para o qual um intervalo de IP será alocado. O nome do intervalo deve estar em conformidade com
RFC 1035
e conter de 1 a 63 caracteres. ALLOWED_PROJECTS : uma lista de IDs ou números de projetos permitidos, separados por vírgulas. Se um projeto não estiver nessa lista, você não poderá criar endpoints do Private Service Connect no projeto para se conectar à instância.
- VPC_PSC_NETWORK_PATH : o caminho para a rede VPC de onde o endpoint do Private Service Connect precisa ser criado. Por exemplo:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT : o projeto onde o endpoint do Private Service Connect é criado. Se a rede VPC não for uma VPC compartilhada, este poderá ser apenas o projeto host da rede. Se for uma VPC compartilhada, este poderá ser o projeto host ou o projeto de serviço.
- MACHINE_TYPE : o tipo de máquina para a instância.
Para saber como se conectar a uma instância que tenha o Private Service Connect habilitado, consulte Conectar a uma instância do Cloud SQL .
Você definiu o parâmetro ipv4Enabled
como false
porque sua instância tem um endereço IP interno.
Se você definir o parâmetro opcional enablePrivatePathForGoogleCloudServices
como true
, você permitirá outros Google Cloud serviços, como o BigQuery, para acessar dados no Cloud SQL e fazer consultas a esses dados por meio de uma conexão IP interna. Ao definir este parâmetro como false
, outros Google Cloud os serviços não podem acessar dados no Cloud SQL por meio de uma conexão IP interna.
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": "POSTGRES_13", "kind": "sql#instance", "settings": { "availabilityType": "AVAILABILITY_TYPE", "ipConfiguration": { "ipv4Enabled": false, "privateNetwork": VPC_PSA_NETWORK_PATH, "allocatedIpRange": "RANGE_NAME", "enablePrivatePathForGoogleCloudServices": true, "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscAutoConnections": [ { "consumerProject":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_PSC_NETWORK_PATH" } ], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "tier": "MACHINE_TYPE" } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "[email protected]", "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" }
Desativar o Private Service Connect para uma instância
Você pode desativar o Private Service Connect para uma instância que tenha acesso a serviços privados e o Private Service Connect habilitado para ela.
Ao desativar o Private Service Connect para a instância, você pode esperar que essa operação leve 8 minutos, com aproximadamente 45 segundos de inatividade na sua instância. Após a conclusão da operação, os caminhos de acesso aos serviços privados e de conectividade do Private Service Connect não coexistirão mais na mesma instância. Você não poderá se conectar à instância usando o Private Service Connect.
Você pode desativar o Private Service Connect para uma instância usando gcloud CLI ou a API.
gcloud
Para desativar o Private Service Connect para uma instância, use o comando gcloud beta sql instances patch
:
gcloud beta sql instances patch INSTANCE_NAME \ --project=PROJECT_ID \ --no-enable-private-service-connect \ --clear-allowed-psc-projects
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 projeto que contém a instância
Terraform
Para desativar o Private Service Connect para uma instância, use o recurso google_sql_database_instance
do Terraform .
DESCANSAR
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- PROJECT_ID : o ID ou número do projeto do Google Cloud projeto que contém a instância
- INSTANCE_NAME : o nome da instância
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Corpo JSON da solicitação:
{ "kind": "sql#instance", "name": "INSTANCE_NAME", "project": "PROJECT_ID", "settings": { "ipConfiguration": { "pscConfig": { "pscEnabled": "false", "allowedConsumerProjects": [{}] } }, "kind": "sql#settings" } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "[email protected]", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Habilitar Private Service Connect para uma instância
Você pode habilitar o Private Service Connect para uma instância que já tenha acesso a serviços privados habilitado. Você pode usar o Private Service Connect para se conectar a uma instância do Cloud SQL a partir de várias redes VPC.
Ao habilitar o Private Service Connect para a instância, você pode esperar que essa operação leve 8 minutos, com aproximadamente 45 segundos de inatividade na sua instância. Após a conclusão da operação, tanto o acesso aos serviços privados quanto os caminhos de conectividade do Private Service Connect coexistirão na mesma instância.
Você pode habilitar o Private Service Connect para uma instância usando gcloud CLI ou a API.
gcloud
Para habilitar o Private Service Connect para uma instância, use o comando gcloud beta sql instances patch
:
gcloud beta sql instances patch INSTANCE_NAME \ --project=PROJECT_ID \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --psc-auto-connections=network=VPC_PSC_NETWORK_PATH,project=SERVICE_PROJECT
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 projeto que contém a instância
ALLOWED_PROJECTS : uma lista de IDs ou números de projetos permitidos, separados por vírgulas. Se um projeto não estiver nessa lista, você não poderá criar endpoints do Private Service Connect no projeto para se conectar à instância.
- VPC_PSC_NETWORK_PATH : o caminho para a rede VPC de onde o endpoint do Private Service Connect é criado. Por exemplo:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT : o projeto onde o endpoint do Private Service Connect é criado. Se a rede VPC não for uma VPC compartilhada, este poderá ser apenas o projeto host da rede. Se for uma VPC compartilhada, este poderá ser o projeto host ou o projeto de serviço.
Para saber como se conectar a uma instância que tenha o Private Service Connect habilitado, consulte Conectar a uma instância do Cloud SQL .
Terraform
Para habilitar o Private Service Connect para uma instância, use o recurso google_sql_database_instance
do Terraform .
DESCANSAR
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- PROJECT_ID : o ID ou número do projeto do Google Cloud projeto que contém a instância.
- INSTANCE_NAME : o nome da instância.
- ALLOWED_PROJECTS : uma lista de IDs ou números de projetos permitidos, separados por vírgulas. Esses projetos substituem projetos que já estão configurados para usar o Private Service Connect. Se um projeto não estiver nessa lista, você não poderá criar endpoints do Private Service Connect no projeto para se conectar à instância.
- VPC_PSC_NETWORK_PATH : o caminho para a rede VPC de onde o endpoint do Private Service Connect é criado. Por exemplo:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT : o projeto onde o endpoint do Private Service Connect é criado. Se a rede VPC não for uma VPC compartilhada, este poderá ser apenas o projeto host da rede. Se for uma VPC compartilhada, este poderá ser o projeto host ou o projeto de serviço.
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Corpo JSON da solicitação:
{ "kind": "sql#instance", "name": "INSTANCE_NAME", "project": "PROJECT_ID", "settings": { "ipConfiguration": { "pscConfig": { "pscAutoConnections": [ { "consumerProject":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_PSC_NETWORK_PATH" } ], "pscEnabled": "true", "allowedConsumerProjects": [ALLOWED_PROJECTS] } }, "kind": "sql#settings" } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "[email protected]", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Para saber como se conectar a uma instância que tenha o Private Service Connect habilitado, consulte Conectar a uma instância do Cloud SQL .