Esta página descreve como configurar o acesso privado aos serviços e o Private Service Connect.
Ao configurar o acesso a serviços privados, pode atribuir um intervalo de endereços IP e criar uma ligação de serviço privado para a rede de nuvem privada virtual (VPC) no seu Google Cloud projeto. Isto permite que os recursos na rede VPC se liguem às suas instâncias do Cloud SQL.
Ao configurar o Private Service Connect, pode estabelecer ligação a uma instância principal do Cloud SQL ou a qualquer uma das respetivas réplicas de leitura a partir de várias redes da VPC pertencentes a diferentes grupos, equipas, projetos ou organizações.
Crie uma instância que suporte o acesso a serviços privados e o Private Service Connect
Ao criar uma instância do Cloud SQL que suporta o acesso privado aos serviços e o Private Service Connect, usufrui das vantagens de ambos os serviços. Para mais informações, consulte o artigo Opções de ligação para instâncias.
Ao usar o Private Service Connect, pode estabelecer ligação a uma instância do Cloud SQL a partir de várias redes VPC pertencentes a diferentes grupos, equipas, projetos ou organizações.
Pode criar uma instância do Cloud SQL que suporte o acesso a serviços privados e o Private Service Connect através da CLI gcloud ou da API.
gcloud
Para criar uma instância que suporte o acesso a serviços privados e o 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 o 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 incluído nesta lista, não pode criar pontos finais do Private Service Connect no projeto para estabelecer ligação à instância.
- AVAILABILITY_TYPE: ative a elevada disponibilidade para a instância. Para este parâmetro, especifique um dos seguintes valores:
REGIONAL
: ative a alta disponibilidade. Esta opção é recomendada para instâncias de produção. A instância comuta para outra zona na região selecionada.ZONAL
: não oferecem capacidade de comutação por falha. Este é o valor predefinido.
Para mais informações sobre como definir e remover a elevada disponibilidade para instâncias, consulte os artigos Configure uma instância existente para elevada disponibilidade e Desative a elevada disponibilidade para uma instância.
- RANGE_NAME: para este parâmetro opcional, defina um nome de intervalo para o qual é atribuído um intervalo de IPs. O nome do intervalo tem de estar em conformidade com
RFC 1035
e conter entre 1 e 63 carateres. - MACHINE_TYPE: o tipo de máquina da instância.
- DATABASE_VERSION: a versão da base 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 liga (por exemplo,
"projects/PROJECT_ID/global/networks/default"
). Esta rede é usada para ligações de acesso privado a serviços e o endereço IP de acesso privado a serviços para a instância do Cloud SQL. - VPC_PSC_NETWORK_PATH: o caminho para a rede VPC a partir da qual o ponto final do Private Service Connect tem de ser criado. Por exemplo:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT: o projeto onde o ponto final do Private Service Connect é criado. Se a rede da VPC não for uma VPC partilhada, só pode ser o projeto anfitrião da rede. Se for uma VPC partilhada, pode ser o projeto anfitrião ou o projeto de serviço.
Para saber como estabelecer ligação a uma instância que tenha o Private Service Connect ativado, consulte o artigo Estabeleça ligação 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 que outros serviços Google Cloud , como o BigQuery, acedam aos dados no Cloud SQL e façam consultas a estes dados através de uma ligação IP privada. Este parâmetro só é válido se:
- Usar o parâmetro
--no-assign-ip
. - Use o parâmetro
--network
para especificar o nome da rede VPC que quer usar para criar uma ligação privada.
Terraform
Para criar uma instância com o acesso privado aos serviços e o Private Service Connect ativados, use o
google_sql_database_instance
recurso do Terraform.
Para aplicar a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o ficheiro é denominadomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o ficheiro
main.tf
criado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade
:terraform init -upgrade
Aplique as alterações
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID ou o 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: ative a elevada disponibilidade para a instância. Para este parâmetro, especifique um dos seguintes valores:
REGIONAL
: ative a alta disponibilidade. Esta opção é recomendada para instâncias de produção. A instância comuta para outra zona na região selecionada.ZONAL
: não oferecem capacidade de comutação por falha. Este é o valor predefinido.
Para mais informações sobre como definir e remover a elevada disponibilidade para instâncias, consulte os artigos Configure uma instância existente para elevada disponibilidade e Desative a elevada disponibilidade para uma instância.
- VPC_PSA_NETWORK_PATH: o caminho da rede VPC à qual a instância se liga (por exemplo,
"projects/PROJECT_ID/global/networks/default"
). Esta rede é usada para ligações de acesso a serviços privados e o endereço IP de acesso a serviços privados para a instância do Cloud SQL. - RANGE_NAME: para este parâmetro opcional, defina um nome de intervalo para o qual é atribuído um intervalo de IPs. O nome do intervalo tem de estar em conformidade com
RFC 1035
e conter entre 1 e 63 carateres. ALLOWED_PROJECTS: uma lista de IDs ou números de projetos permitidos, separados por vírgulas. Se um projeto não estiver incluído nesta lista, não pode criar pontos finais do Private Service Connect no projeto para estabelecer ligação à instância.
- VPC_PSC_NETWORK_PATH: o caminho para a rede VPC a partir da qual o ponto final do Private Service Connect tem de ser criado. Por exemplo:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT: o projeto onde o ponto final do Private Service Connect é criado. Se a rede da VPC não for uma VPC partilhada, só pode ser o projeto anfitrião da rede. Se for uma VPC partilhada, pode ser o projeto anfitrião ou o projeto de serviço.
- MACHINE_TYPE: o tipo de máquina da instância.
Para saber como estabelecer ligação a uma instância que tenha o Private Service Connect ativado, consulte o artigo Estabeleça ligação a uma instância do Cloud SQL.
Definiu o parâmetro ipv4Enabled
como false
porque a sua instância tem um endereço IP interno.
Se definir o parâmetro enablePrivatePathForGoogleCloudServices
opcional como true
, permite que outros Google Cloud serviços, como o BigQuery, acedam aos dados no Cloud SQL e façam consultas a estes dados através de uma ligação IP interna. Se definir este parâmetro como false
, outros Google Cloud serviços não podem aceder a dados no Cloud SQL através de uma ligação IP interna.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Corpo JSON do pedido:
{ "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 o seu pedido, expanda uma destas opções:
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": "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" }
Desative o Private Service Connect para uma instância
Pode desativar o Private Service Connect para uma instância que tenha o acesso a serviços privados e o Private Service Connect ativados.
Quando desativa o Private Service Connect para a instância, esta operação demora 8 minutos, com aproximadamente 45 segundos de tempo de inatividade na instância. Após a conclusão da operação, os caminhos de conectividade do Private Service Connect e de acesso aos serviços privados deixam de coexistir na mesma instância. Não pode estabelecer ligação à instância através do Private Service Connect.
Pode desativar o Private Service Connect para uma instância através da CLI gcloud ou da 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 o 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
google_sql_database_instance
recurso do Terraform.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID ou o 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 do pedido:
{ "kind": "sql#instance", "name": "INSTANCE_NAME", "project": "PROJECT_ID", "settings": { "ipConfiguration": { "pscConfig": { "pscEnabled": "false", "allowedConsumerProjects": [{}] } }, "kind": "sql#settings" } }
Para enviar o seu pedido, expanda uma destas opções:
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": "user@example.com", "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" }
Ative o Private Service Connect para uma instância
Pode ativar o Private Service Connect para uma instância que já tenha o acesso a serviços privados ativado. Pode usar o Private Service Connect para estabelecer ligação a uma instância do Cloud SQL a partir de várias redes VPC.
Quando ativa o Private Service Connect para a instância, pode esperar que esta operação demore 8 minutos, com aproximadamente 45 segundos de tempo de inatividade na instância. Após a conclusão da operação, os caminhos de acesso aos serviços privados e de conetividade do Private Service Connect coexistem na mesma instância.
Pode ativar o Private Service Connect para uma instância através da CLI gcloud ou da API.
gcloud
Para ativar 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 o 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 incluído nesta lista, não pode criar pontos finais do Private Service Connect no projeto para estabelecer ligação à instância.
- VPC_PSC_NETWORK_PATH: o caminho para a rede VPC a partir da qual o ponto final do Private Service Connect é criado. Por exemplo:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT: o projeto onde o ponto final do Private Service Connect é criado. Se a rede da VPC não for uma VPC partilhada, só pode ser o projeto anfitrião da rede. Se for uma VPC partilhada, pode ser o projeto anfitrião ou o projeto de serviço.
Para saber como estabelecer ligação a uma instância que tenha o Private Service Connect ativado, consulte o artigo Estabeleça ligação a uma instância do Cloud SQL.
Terraform
Para ativar o Private Service Connect para uma instância, use o
google_sql_database_instance
recurso do Terraform.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID ou o 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. Estes projetos substituem os projetos que já estão configurados para usar o Private Service Connect. Se um projeto não estiver incluído nesta lista, não pode criar pontos finais do Private Service Connect no projeto para estabelecer ligação à instância.
- VPC_PSC_NETWORK_PATH: o caminho para a rede VPC a partir da qual o ponto final do Private Service Connect é criado. Por exemplo:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT: o projeto onde o ponto final do Private Service Connect é criado. Se a rede da VPC não for uma VPC partilhada, só pode ser o projeto anfitrião da rede. Se for uma VPC partilhada, pode ser o projeto anfitrião 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 do pedido:
{ "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 o seu pedido, expanda uma destas opções:
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": "user@example.com", "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 estabelecer ligação a uma instância que tenha o Private Service Connect ativado, consulte o artigo Estabeleça ligação a uma instância do Cloud SQL.