Neste documento, descrevemos como configurar conexões por IP privado com sua instância do Cloud SQL usando o acesso a serviços particulares.
Antes de começar
O Cloud SQL requer acesso a serviços particulares para cada rede VPC usada em conexões por IP particulares.
Ativar APIs obrigatórias
Ative a API Service Networking (servicenetworking.googleapis.com)
e a API Compute Engine (compute.googleapis.com) no projeto
que hospeda sua instância do Cloud SQL.
Se você estiver usando uma rede VPC compartilhada, também precisará ativar essas APIs no projeto host da VPC compartilhada.
Também é possível usar o comando a seguir para fazer a ativação:
gcloud services enable servicenetworking.googleapis.com compute.googleapis.com --project=PROJECT_ID
Substitua PROJECT_ID pelo ID do projeto (ou pelo ID do projeto host da VPC compartilhada).
Se a API Service Networking não estiver ativada, a operação de criação da instância do Cloud SQL com um endereço IP particular vai falhar com um erro SERVICE_NETWORKING_NOT_ENABLED.
Papéis e permissões necessárias
Para receber as permissões necessárias para criar e gerenciar uma conexão de acesso a serviços particulares,
peça ao administrador para conceder a você o papel do IAM de Administrador de rede do Compute (roles/compute.networkAdmin) no projeto que hospeda sua instância do Cloud SQL.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para criar e gerenciar uma conexão de acesso a serviços privados. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para criar e gerenciar uma conexão de acesso a serviços particulares:
-
compute.addresses.create -
compute.addresses.list -
compute.globalAddresses.create -
compute.globalAddresses.createInternal -
compute.globalAddresses.list -
compute.networks.list -
compute.networks.use -
servicenetworking.services.addPeering -
serviceusage.services.list
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Se você estiver usando uma rede VPC compartilhada, também precisará conceder o papel de Administrador de rede do Compute (roles/compute.networkAdmin) ao usuário no projeto host da VPC compartilhada.
Configurar o acesso a serviços particulares para o Cloud SQL
O processo de configuração do acesso a serviços particulares tem duas partes:
Selecione um intervalo de endereços IP atual ou aloque um novo.
Se você criar a instância do Cloud SQL no console Cloud de Confiance , também é possível deixar que o Google alocar um intervalo de endereços IP para você. Nesse caso, o Google vai alocar automaticamente um intervalo de IP com tamanho de prefixo
/24e usar o nome default-ip-range.Se você planeja criar instâncias do Cloud SQL em várias regiões ou para diferentes tipos de banco de dados, é preciso ter um intervalo mínimo
/24de endereços IP disponíveis para cada região ou tipo de banco de dados. Isso inclui outros aplicativos, como o Filestore ou o Memorystore. Para uma nova região ou tipo de banco de dados, o Cloud SQL precisa ter um intervalo/24livre.- Crie a conexão do Private Service Connect da sua rede VPC com a rede do produtor de serviços.
Para informações sobre os requisitos de rede e ambiente de aplicativo e as permissões do IAM necessárias para o acesso a serviços particulares, consulte Requisitos para conexões por IP particular.
Alocar um intervalo de endereços IP
Console
-
No console do Cloud de Confiance , acesse a página Redes VPC.
- Selecione a rede VPC que você quer usar.
- Selecione a guia Acesso a serviços particulares.
- Selecione a guia Intervalos de IP alocados para serviços.
- Clique em Alocar intervalo de IP.
- Para o Nome do intervalo alocado, especifique
google-managed-services-VPC_NETWORK_NAME, em queVPC_NETWORK_NAMEé o nome da rede VPC que você está conectando (por exemplo,google-managed-services-default). A Descrição é opcional. - Na notação CIDR, selecione a opção Personalizado e insira o intervalo de endereços IP a ser alocado.
- Clique em Alocar para criar o intervalo alocado.
gcloud
Escolha uma destas opções:
- Para especificar um intervalo de endereços e um tamanho de prefixo (máscara de sub-rede), use os sinalizadores
addresseseprefix-length. Por exemplo, para alocar o bloco CIDR192.168.0.0/16, especifique192.168.0.0como endereço e16como tamanho de prefixo. - Para especificar apenas um tamanho de prefixo (máscara de sub-rede), use a
sinalização
prefix-length. Quando você omite o intervalo de endereços,o Cloud de Confianceseleciona automaticamente um intervalo que não está sendo usado na rede VPC. No exemplo a seguir, é selecionado um intervalo de endereços IP não utilizado com um tamanho de prefixo de16bits.
gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \ --global \ --purpose=VPC_PEERING \ --addresses=192.168.0.0 \ --prefix-length=16 \ --network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME
gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME
Substitua VPC_NETWORK_NAME pelo nome da sua rede VPC, como my-vpc-network.
O exemplo a seguir aloca um intervalo de IP que permite aos recursos na rede VPC my-vpc-network conectarem-se a instâncias do Cloud SQL usando IP privado.
gcloud compute addresses create google-managed-services-my-vpc-network \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=projects/myprojectid/global/networks/myvpcnetwork \ --project=my-project
Terraform
Para alocar um intervalo de endereços IP, use um recurso do Terraform.
Aplique as alterações
Para aplicar a configuração do Terraform em um projeto Cloud de Confiance , siga as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto padrão do Cloud de Confiance 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.tfrecé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
yesno prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu projeto do Cloud de Confiance para ver os resultados. No console do Cloud de Confiance , navegue até seus recursos na UI para verificar se foram criados ou atualizados pelo Terraform.
Excluir as alterações
Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo yes no prompt:
terraform destroy
Crie uma conexão privada
Console
-
No console do Cloud de Confiance , acesse a página Redes VPC.
- Selecione a rede VPC que você quer usar.
- Selecione a guia Conexão de serviço particular.
- Selecione a guia Conexões particulares com os serviços.
- Clique em Criar conexão para criar uma conexão particular entre sua rede e um produtor de serviços.
- Em Alocação atribuída, selecione um ou mais intervalos alocados que não estão sendo usados por outros produtores de serviços.
- Clique em Conectar para criar a conexão.
gcloud
Crie uma conexão de acesso a serviços particulares para a rede VPC no seu projeto.
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=google-managed-services-VPC_NETWORK_NAME \ --network=VPC_NETWORK_NAME \ --project=PROJECT_ID
O comando inicia uma operação de instância de longa duração do Cloud SQL, retornando um ID de operação.
Verifique se a operação foi bem-sucedida.
gcloud services vpc-peerings operations describe \ --name=OPERATION_ID
Você pode especificar mais de um intervalo alocado ao criar uma conexão privada. Por exemplo, se um intervalo tiver sido esgotado, será possível atribuir mais intervalos alocados. O serviço usa endereços IP de todos os intervalos fornecidos na ordem que você especificou.
Terraform
Para criar uma conexão particular, use um recurso do Terraform.
Uma conta de serviço no formato service-HOST_PROJECT_NUMBER@service-networking.s3ns-system.iam.gserviceaccount.com recebe o papel servicenetworking.serviceAgent
enquanto a conexão particular é criada porque a conta é provisionada apenas na hora certa.
Se você vir um erro sobre a permissão compute.globalAddresses.list ou compute.projects.get para o projeto, execute este comando gcloud:
gcloud projects add-iam-policy-binding HOST_PROJECT_NAME \ --member=serviceAccount:service-HOST_PROJECT_NUMBER@service-networking.s3ns-system.iam.gserviceaccount.com \ --role=roles/servicenetworking.serviceAgent
Configurar uma instância para IP particular usando o acesso a serviços particulares
É possível configurar o acesso a serviços particulares para instâncias novas e existentes.
Configurar o IP particular para uma nova instância
Console
-
No console do Cloud de Confiance , acesse a página Instâncias do Cloud SQL.
- Clique em Criar instância.
- Na seção Personalizar sua instância, expanda Mostrar opções de configuração.
- Expanda Conexões.
- Selecione IP privado.
- Selecione Acesso a serviços particulares (PSA).
Uma lista suspensa mostra as redes VPC disponíveis no projeto. Se o projeto for o de serviço de uma VPC compartilhada, as redes VPC do projeto host também serão exibidas.
- Selecione a rede VPC a ser usada.
- Clique em Configurar conexão.
- Na seção Alocar um intervalo de IP, selecione uma das
seguintes opções:
- Selecione um ou mais intervalos de IP atuais ou crie um novo no menu suspenso. O menu suspenso inclui intervalos alocados anteriormente, se houver, ou você pode selecionar Alocar um novo intervalo de IP e inserir um novo intervalo e nome.
- Use um intervalo de IP alocado automaticamente na sua rede..
- Clique em Continuar.
- Clique em Criar conexão.
- Verifique se você vê a mensagem
Private service connection for network VPC_NETWORK_NAME has been successfully created. - Se quiser, especifique um intervalo de IP alocado para as instâncias
usarem nas conexões.
- Expanda Mostrar opção de intervalo de IP alocado.
- Selecione um intervalo de IP no menu suspenso.
- Opcional. Para dar permissão a fim de que outros serviços do Cloud de Confiance by S3NS , como o BigQuery, acessem dados no Cloud SQL e façam consultas neles por uma conexão por IP particular, marque Ativar caminho particular.
- Conclua a configuração da instância.
- Clique em Criar instância.
Se você receber uma mensagem indicando que precisa configurar uma conexão de serviço particular, faça o seguinte:
gcloud
Antes de criar uma instância usando um endereço IP particular, verifique se o projeto está configurado para acesso a serviços particulares.
Execute os seguintes comandos da CLI gcloud para configurar a rede de acesso a serviços particulares para o Cloud SQL:
- Ative as APIs necessárias:
gcloud services enable \ sqladmin.googleapis.com \ compute.googleapis.com \ servicenetworking.googleapis.com \ --project=PROJECT_ID
- Alocar um intervalo de endereços IP para o peering de rede VPC:
gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --project=PROJECT_ID
- Estabeleça a conexão de peering de rede VPC:
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=google-managed-services-VPC_NETWORK_NAME \ --network=VPC_NETWORK_NAME \ --project=PROJECT_ID
Antes de usar os dados da solicitação, faça as substituições a seguir:
INSTANCE_ID: o ID da instânciaPROJECT_ID: o ID do projetoNETWORK_PROJECT_ID: o ID do projeto da rede VPCVPC_NETWORK_NAME: o nome da rede VPCRANGE_NAME: opcional. Se especificado, define um nome de intervalo para o qual um intervalo de IP é alocado. O nome do intervalo precisa estar em conformidade comRFC-1035e conter de 1 a 63 caracteres.REGION_NAME: o nome da região
--network. Para desativar o IP público, use a sinalização --no-assign-ip.
Como opção, use o parâmetro --enable-google-private-path para permitir que outros serviços do Cloud de Confiance , como o BigQuery, acessem dados no Cloud SQL e façam consultas nesses dados em uma conexão por IP particular. Esse parâmetro só será válido se:
- Use o parâmetro
--no-assign-ip. - Use o parâmetro
--networkpara especificar o nome da rede VPC que você quer usar para criar uma conexão particular.
--enforce-new-sql-network-architecture. Verifique se você alocou endereços IP suficientes. Se você usar a aplicação da nova arquitetura de rede antes que um projeto seja totalmente atualizado, poderá ocorrer uma falha na criação da instância se não houver espaço de endereço IP suficiente disponível.
Para mais informações, consulte
Fazer upgrade
de uma instância para a nova arquitetura de rede e
Alocar um intervalo de endereços IP.
gcloud beta sql instances create INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --no-assign-ip \ --allocated-ip-range-name=RANGE_NAME \ --enable-google-private-path \ --enforce-new-sql-network-architecture
Terraform
Para configurar o IP privado para uma nova instância, use os seguintes recursos do Terraform:
google_compute_networkgoogle_compute_global_addressgoogle_service_networking_connectiongoogle_sql_database_instance
Aplique as alterações
Para aplicar a configuração do Terraform em um projeto Cloud de Confiance , siga as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto padrão do Cloud de Confiance 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.tfrecé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
yesno prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu Cloud de Confiance projeto para conferir os resultados. No console do Cloud de Confiance , navegue até seus recursos na UI para verificar se foram criados ou atualizados pelo Terraform.
Excluir as alterações
Para excluir as mudanças, faça o seguinte:
- Para desativar a proteção contra exclusão, no arquivo de configuração do Terraform, defina o argumento
deletion_protectioncomofalse.deletion_protection = "false"
- Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite
yesno prompt:terraform apply
-
Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo
yesno prompt:terraform destroy
REST v1
Crie uma instância nova com um endereço IP privado:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID:: o ID do projeto
- INSTANCE_ID:: o ID da instância
- VPC_NETWORK_NAME:: especifique o nome da rede de nuvem privada virtual (VPC) que você quer usar para essa instância. O acesso a serviços particulares já precisa estar configurado na rede.
- RANGE_NAME: Opcional. Se especificado, define um nome de intervalo para o qual um intervalo de IP é alocado. O nome do intervalo precisa estar em conformidade com
RFC-1035e conter de 1 a 63 caracteres. - AUTHORIZED_NETWORKS:: para conexões por IP público, especifique as conexões de redes autorizadas que podem se conectar à instância.
Para o parâmetro ipv4Enabled, defina o valor como true
se estiver usando um endereço IP público para a instância ou como false se a instância tiver um
endereço IP particular.
Se você definir o parâmetro enablePrivatePathForGoogleCloudServices como true,
permitirá que outros serviços do Cloud de Confiance by S3NS , como o BigQuery, acessem dados no
Cloud SQL e façam consultas nesses dados em uma conexão por IP particular. Ao definir esse parâmetro como
false, outros serviços do Cloud de Confiance by S3NS não podem acessar dados no Cloud SQL por uma conexão por IP particular.
É possível usar o campo sqlNetworkArchitecture para aplicar o uso da nova arquitetura de rede
à instância no momento da criação, mesmo que o projeto não tenha sido totalmente atualizado.
Para mais detalhes sobre a nova arquitetura de rede e as implicações dela, consulte
Fazer upgrade de uma instância para a nova arquitetura de rede e Alocar um intervalo de endereços IP.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Corpo JSON da solicitação:
{
"name": "INSTANCE_ID",
"region": "region",
"databaseVersion": "database-version",
"settings": {
"tier": "machine-type",
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
"allocatedIpRange": "RANGE_NAME"
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"enablePrivatePathForGoogleCloudServices": true
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
Para enviar a solicitação, expanda uma destas opções:
Você vai receber uma resposta JSON semelhante a esta:
REST v1beta4
Crie uma instância nova com um endereço IP privado:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID:: o ID do projeto
- INSTANCE_ID:: o ID da instância
- VPC_NETWORK_NAME:: especifique o nome da rede de nuvem privada virtual (VPC) que você quer usar para essa instância. O acesso a serviços particulares já precisa estar configurado na rede.
- RANGE_NAME: Opcional. Se especificado, define um nome de intervalo para o qual um intervalo de IP é alocado. O nome do intervalo precisa estar em conformidade com
RFC-1035e conter de 1 a 63 caracteres. - AUTHORIZED_NETWORKS:: para conexões por IP público, especifique as conexões de redes autorizadas que podem se conectar à instância.
Para o parâmetro ipv4Enabled, defina o valor como true
se estiver usando um endereço IP público para a instância ou como false se a instância tiver um
endereço IP particular.
Se você definir o parâmetro enablePrivatePathForGoogleCloudServices como true,
permitirá que outros serviços do Cloud de Confiance by S3NS , como o BigQuery, acessem dados no
Cloud SQL e façam consultas nesses dados em uma conexão por IP particular. Ao definir esse parâmetro como
false, outros serviços do Cloud de Confiance by S3NS não podem acessar dados no Cloud SQL por uma conexão por IP particular.
É possível usar o campo sqlNetworkArchitecture para aplicar o uso da nova arquitetura de rede
à instância no momento da criação, mesmo que o projeto não tenha sido totalmente atualizado.
Para mais detalhes sobre a nova arquitetura de rede e as implicações dela, consulte
Fazer upgrade de uma instância para a nova arquitetura de rede e Alocar um intervalo de endereços IP.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances
Corpo JSON da solicitação:
{
"name": "INSTANCE_ID",
"region": "region",
"databaseVersion": "database-version",
"settings": {
"tier": "machine-type",
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
"allocatedIpRange": "RANGE_NAME"
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"enablePrivatePathForGoogleCloudServices": true
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
Para enviar a solicitação, expanda uma destas opções:
Você vai receber uma resposta JSON semelhante a esta:
Configurar o IP particular para uma instância atual
Configurar uma instância atual do Cloud SQL para usar IP privado faz com que ela seja reiniciada, resultando em tempo de inatividade.
Configurar o uso de IP privado em uma instância atual:
Console
-
No console do Cloud de Confiance , acesse a página Instâncias do Cloud SQL.
- Para abrir a página Visão geral de uma instância, clique no nome da instância.
- Selecione Conexões no menu de navegação do Cloud SQL.
- Na guia Rede, marque a caixa de seleção IP particular.
Uma lista suspensa exibirá as redes disponíveis no projeto.
- Selecione a rede VPC a ser usada:
- Clique em Configurar conexão.
- Na seção Alocar um intervalo de IP, escolha uma destas opções:
- Selecione um ou mais intervalos de IP atuais ou crie um novo no menu suspenso. O menu suspenso inclui intervalos alocados anteriormente, se houver, ou você pode selecionar Alocar um novo intervalo de IP e inserir um novo intervalo e nome.
- Use um intervalo de IP alocado automaticamente na sua rede.
- Clique em Continuar.
- Clique em Criar conexão.
- Verifique se o status da Conexão de serviço particular
da rede
VPC_NETWORK_NAMEfoi criado. - Opcional. Para permitir que outros serviços Cloud de Confiance , como o BigQuery, acessem dados no Cloud SQL e façam consultas nesses dados por uma conexão por IP particular, marque a caixa de seleção Ativar caminho particular.
- Clique em Salvar.
Se você vir a mensagem Conexão de serviço particular obrigatória, siga estas instruções:
gcloud
Verifique se o projeto está configurado para acesso a serviços particulares.
Atualize a instância do Cloud SQL usando o parâmetro --network para especificar o nome da rede VPC selecionada.
Para aplicar o uso da nova arquitetura de rede
à instância ao adicionar uma configuração de rede de IP privado, use a flag --enforce-new-sql-network-architecture.
Verifique se você alocou espaço de endereço IP suficiente no intervalo de IP.
Quando você usa a aplicação da nova arquitetura de rede antes
que um projeto seja totalmente atualizado, pode ocorrer uma falha na criação da instância
se não houver espaço de endereço IP suficiente disponível.
Para mais informações, consulte Fazer upgrade de uma instância para a nova arquitetura de rede e Alocar um intervalo de endereços IP.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --no-assign-ip \ --enable-google-private-path \ --enforce-new-sql-network-architecture
REST v1
Crie uma instância nova com um endereço IP privado:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID:: o ID do projeto
- INSTANCE_ID:: o ID da instância
- VPC_NETWORK_NAME:: especifique o nome da rede de nuvem privada virtual (VPC) que você quer usar para essa instância. O acesso a serviços particulares já precisa estar configurado na rede.
- RANGE_NAME: Opcional. Se especificado, define um nome de intervalo para o qual um intervalo de IP é alocado. O nome do intervalo precisa estar em conformidade com
RFC-1035e conter de 1 a 63 caracteres. - AUTHORIZED_NETWORKS:: para conexões por IP público, especifique as conexões de redes autorizadas que podem se conectar à instância.
Para o parâmetro ipv4Enabled, defina o valor como true
se estiver usando um endereço IP público para a instância ou como false se a instância tiver um
endereço IP particular.
Se você definir o parâmetro enablePrivatePathForGoogleCloudServices como true,
permitirá que outros serviços do Cloud de Confiance by S3NS , como o BigQuery, acessem dados no
Cloud SQL e façam consultas nesses dados em uma conexão por IP particular. Ao definir esse parâmetro como
false, outros serviços do Cloud de Confiance by S3NS não podem acessar dados no Cloud SQL por uma conexão por IP particular.
É possível usar o campo sqlNetworkArchitecture para aplicar o uso da nova arquitetura de rede
à instância no momento da criação, mesmo que o projeto não tenha sido totalmente atualizado.
Para mais detalhes sobre a nova arquitetura de rede e as implicações dela, consulte
Fazer upgrade de uma instância para a nova arquitetura de rede e Alocar um intervalo de endereços IP.
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
Corpo JSON da solicitação:
{
"settings":
{
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
"allocatedIpRange": "RANGE_NAME"
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"enablePrivatePathForGoogleCloudServices": true
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
Para enviar a solicitação, expanda uma destas opções:
Você vai receber uma resposta JSON semelhante a esta:
REST v1beta4
Crie uma instância nova com um endereço IP privado:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID:: o ID do projeto
- INSTANCE_ID:: o ID da instância
- VPC_NETWORK_NAME:: especifique o nome da rede de nuvem privada virtual (VPC) que você quer usar para essa instância. O acesso a serviços particulares já precisa estar configurado na rede.
- RANGE_NAME: Opcional. Se especificado, define um nome de intervalo para o qual um intervalo de IP é alocado. O nome do intervalo precisa estar em conformidade com
RFC-1035e conter de 1 a 63 caracteres. - AUTHORIZED_NETWORKS: para conexões por IP público, especifique as conexões de redes autorizadas que podem se conectar à instância.
Para o parâmetro ipv4Enabled, defina o valor como true
se estiver usando um endereço IP público para a instância ou como false se a instância tiver um
endereço IP particular.
Se você definir o parâmetro enablePrivatePathForGoogleCloudServices como true,
permitirá que outros serviços do Cloud de Confiance by S3NS , como o BigQuery, acessem dados no
Cloud SQL e façam consultas nesses dados em uma conexão por IP particular. Ao definir esse parâmetro como
false, outros serviços Cloud de Confiance by S3NS não podem acessar dados no Cloud SQL por uma conexão por IP particular.
É possível usar o campo sqlNetworkArchitecture para forçar o uso da nova arquitetura de rede na instância após a criação, mesmo que o projeto não esteja totalmente atualizado.
Para mais detalhes sobre a nova arquitetura de rede e as implicações dela, consulte
Fazer upgrade de uma instância para a nova arquitetura de rede e Alocar um intervalo de endereços IP.
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
Corpo JSON da solicitação:
{
"settings":
{
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
"allocatedIpRange": "RANGE_NAME"
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"enablePrivatePathForGoogleCloudServices": true
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
Para enviar a solicitação, expanda uma destas opções:
Você vai receber uma resposta JSON semelhante a esta:
Mudar a configuração do acesso a serviços particulares
É possível mudar o intervalo de endereços alocado de uma conexão privada a serviços sem modificar nenhuma instância atual do Cloud SQL. Para mudar o endereço IP privado de uma instância do Cloud SQL, siga estas etapas.
Para modificar o intervalo de endereços alocado:
Console
-
No console do Cloud de Confiance , acesse a página Redes VPC.
- Selecione a rede VPC que você quer usar.
- Selecione a guia Conexão de serviço particular.
- Selecione a guia Intervalos de IP alocados para serviços.
Selecione o nome do intervalo que você quer excluir.
Clique em Liberar.
Clique em Alocar intervalo de IP.
Crie um novo intervalo com o mesmo nome.
O nome é importante porque a conexão privada já foi estabelecida usando esse nome de endereço.
gcloud services vpc-peerings update \ --network=VPC_NETWORK_NAME \ --ranges=ALLOCATED_RANGES \ --service=servicenetworking.googleapis.com \ --force
Mudar o endereço IP particular de uma instância do Cloud SQL
Para alterar o endereço IP particular de uma instância atual do Cloud SQL, mova-a da rede original para uma rede VPC temporária. Em seguida, altere a configuração de acesso do serviço particular da rede original da instância e mova a instância do Cloud SQL novamente para a rede original.
A fim de migrar para uma rede VPC diferente, siga todas as etapas,
exceto a final (remoção da instância), no procedimento a seguir. Nesse caso,
TEMPORARY_VPC_NETWORK_NAME
é a nova rede VPC. Além disso,
exclua
a conexão particular anterior.
Pode levar alguns dias para que a conexão particular excluída desapareça do
console doCloud de Confiance .
Se a instância do Cloud SQL estiver hospedada em uma rede VPC compartilhada,
as variáveis VPC_NETWORK_NAME
usadas nas instruções a seguir precisarão ser os nomes de rede VPC
do projeto host. Para especificar uma rede com uma rede VPC
compartilhada, use o URL completo da
rede, por exemplo, projects/HOST_PROJECT/global/networks/NETWORK_NAME.
Console
-
No console do Cloud de Confiance , acesse a página Redes VPC.
- Crie uma rede VPC temporária.
- Crie uma alocação de IP na rede VPC temporária.
- Crie uma conexão particular na rede VPC temporária.
Mova a instância do Cloud SQL para a rede VPC temporária.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/TEMPORARY_VPC_NETWORK_NAME \ --no-assign-ip
Altere a configuração de acesso do serviço particular na rede original para adicionar um novo intervalo alocado ou excluir os existentes.
Mova a instância do Cloud SQL novamente para a rede VPC original.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/ORIGINAL_VPC_NETWORK_NAME \ --no-assign-ip
Conectar-se a uma instância usando o endereço IP particular dela
Use o acesso a serviços particulares para se conectar a instâncias do Cloud SQL do Compute Engine ou do Google Kubernetes Engine na mesma rede VPC (definida aqui como origens internas) ou de fora dessa rede (uma origem externa).
Conectar-se usando uma fonte interna
Para se conectar por meio de uma origem no mesmo projeto do Cloud de Confiance que a instância do Cloud SQL, como o proxy de autenticação do Cloud SQL em execução em um recurso do Compute Engine, esse recurso precisa estar na mesma rede VPC em que o acesso a serviços particulares foi estabelecido para a instância do Cloud SQL.
Para se conectar por meio de uma origem sem servidor, como o ambiente padrão do App Engine, o Cloud Run, ou o Cloud Run functions, o aplicativo ou a função se conecta diretamente à instância pelo acesso VPC sem servidor sem o proxy de autenticação do Cloud SQL.
Conectar-se usando uma fonte externa
Se uma rede externa (por exemplo, uma rede local ou VPC) estiver conectada à rede VPC a que sua instância do Cloud SQL está conectada, será possível usar a Cloud VPN ou o Cloud Interconnect para se conectar à instância de um cliente na rede externa.
Para permitir conexões de uma rede externa, faça o seguinte:
- Verifique se a rede VPC está conectada à rede externa usando um Túnel do Cloud VPN ou um anexo da VLAN para Interconexão dedicada ou Interconexão por parceiro.
-
Verifique se as sessões do protocolo de gateway de borda (BGP) nos Cloud Routers que gerenciam os túneis de VPN do Cloud VPN e os anexos de interconexão do Cloud Interconnect (VLANs) receberam prefixos específicos (destinos) da rede local.
Não é possível importar rotas padrão (destino 0.0.0.0/0) para a rede VPC do Cloud SQL porque essa rede tem uma rota padrão local própria. As rotas locais de um destino são sempre usadas, mesmo que o peering do Cloud SQL esteja configurado para importar rotas personalizadas da rede VPC.
-
Identifique as conexões de peering produzidas pela conexão de
serviços particulares: Dependendo do serviço, a conexão do Private Service Connect pode
criar uma ou mais das seguintes conexões de peering, mas não necessariamente todas
elas:
cloudsql-mysql-googleapis-comcloudsql-postgres-googleapis-comservicenetworking-googleapis-com
- Atualize todas as conexões de peering para ativar a opção Exportar rotas personalizadas.
- Identifique o intervalo alocado usado pela conexão do Private Service Connect.
- Configure o modo de divulgação personalizada do Cloud Router para o intervalo alocado nos Cloud Routers que gerenciam sessões do BGP para os túneis do Cloud VPN ou anexos do Cloud Interconnect (VLANs).
Conectar a partir do Cloud Shell
O Cloud Shell usa uma máquina virtual do Compute Engine gerenciada por Cloud de Confiance by S3NS e fora da sua rede VPC. Portanto, não há um caminho de conectividade entre o Cloud Shell e o espaço de endereço IP particular da sua rede VPC.
Por isso, o Cloud Shell não aceita se conectar a uma instância do Cloud SQL que tenha apenas um endereço IP particular.
Para se conectar a instâncias do Cloud SQL de uma rede externa usando conectividade de IP particular, consulte Conectar-se a uma instância do Cloud SQL de fora da VPC.
Conectar-se usando endereços IP que não sejam RFC 1918
A RFC 1918 especifica os endereços IP que são atribuídos para uso interno (ou seja, em uma organização) e não são roteados na Internet. São eles:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
As conexões com uma instância do Cloud SQL usando um endereço IP privado são autorizadas automaticamente para intervalos de endereços RFC 1918. Dessa forma, todos os clientes particulares podem acessar o banco de dados sem passar pelo proxy.
Para se conectar a partir de um endereço IP que não seja RFC 1918, você precisa definir a autorização de IP por instância para permitir o tráfego de intervalos de endereços IP não RFC 1918.
Por exemplo, use um comando gcloud como este:
gcloud sql instances patch INSTANCE_NAME \ --authorized-networks=192.88.99.0/24,11.0.0.0/24
Por padrão, o Cloud SQL não aprende as rotas de sub-rede não RFC 1918 da sua rede VPC. É necessário atualizar o peering de rede para o Cloud SQL para exportar rotas que não sejam RFC 1918.
gcloud compute networks peerings update PEERING_CONNECTION \ --network=VPC_NETWORK_NAME \ --export-subnet-routes-with-public-ip \ --project=PROJECT_ID
PEERING_CONNECTIONé o nome da conexão de peering produzida pela conexão do Private Service Connect entre sua rede VPC e a rede do produtor de serviços.VPC_NETWORK_NAMEé o nome da sua rede VPC.PROJECT_IDé o ID do projeto da rede VPC. Se você estiver usando a VPC compartilhada, use o ID do projeto host.
Substitua:
Para reduzir o esgotamento de endereços IP, use endereços IP públicos utilizados de modo privado.
Conectar-se a partir de endereços IP públicos usados de modo privado
Se você quiser configurar a instância em um intervalo de endereços IP públicos usado de maneira particular, ative export-subnet-routes-with-public-ip no peering de rede entre sua rede e a rede do Cloud SQL.
gcloud compute networks peerings update PEERING_CONNECTION \ --network=VPC_NETWORK_NAME \ --export-subnet-routes-with-public-ip \ --project=PROJECT_ID
PEERING_CONNECTIONé o nome da conexão de peering produzida pela conexão de serviços particulares entre sua rede VPC e a rede produtor de serviços. Para saber o nome da conexão de peering, acesse a página Peering de redes VPC.VPC_NETWORK_NAMEé o nome da sua rede VPC.PROJECT_IDé o ID do projeto da rede VPC. Se você estiver usando a VPC compartilhada, use o ID do projeto host.
Substitua:
Conectar-se a uma instância configurada com endereços IP públicos usados de maneira particular
Se a instância estiver configurada em um intervalo de endereços IP públicos usado de maneira privada
e você quiser se conectar a ela,
ative import-subnet-routes-with-public-ip no peering de rede
entre sua rede e a rede do Cloud SQL.
gcloud compute networks peerings update PEERING_CONNECTION \ --network=VPC_NETWORK_NAME \ --import-subnet-routes-with-public-ip \ --project=PROJECT_ID
Substitua:
PEERING_CONNECTIONé o nome da conexão de peering produzida pela conexão de serviços particulares entre sua rede VPC e a rede produtor de serviços. Para encontrar o nome da conexão de peering, acesse a página Peering de redes VPC.VPC_NETWORK_NAMEé o nome da sua rede VPC.PROJECT_IDé o ID do projeto da rede VPC. Use o ID do projeto de host se você estiver usando a VPC compartilhada.
Conectar usando um endpoint de gravação
Além de um endereço IP particular, é possível usar um endpoint de gravação em uma string de conexão SQL. Um endpoint de gravação é um nome de serviço de nome de domínio (DNS) global que se refere automaticamente ao endereço IP da instância principal atual. Ao usar um endpoint de gravação, você evita ter que fazer mudanças na conexão do aplicativo quando ocorre uma falha na região.
Se ocorrer um failover ou switchover de réplica, o endpoint de gravação poderá ajudar a gerenciar endereços IP particulares de instâncias. Quando isso acontecer, use o endpoint de gravação para se conectar à instância que atua como principal.
Como o Cloud SQL cria um endpoint de gravação
Se você ativar a API Cloud DNS no seu projeto Cloud de Confiance e depois criar uma instância principal do Cloud SQL Enterprise Plus, promover a réplica da instância ou fazer upgrade da instância do Cloud SQL Enterprise, o Cloud SQL vai gerar um endpoint de gravação automaticamente e atribuí-lo à instância.
Se a instância principal mudar durante os processos de alternância ou failover, o Cloud SQL vai atribuir o endpoint de gravação à réplica de failover, porque ela é a nova instância principal.Para mais informações, consulte Ver o endpoint de gravação.
Atribuir um endpoint de gravação a uma instância
Se você não ativar a API Cloud DNS no projeto Cloud de Confiance e depois criar, promover ou fazer upgrade da instância, o Cloud SQL não vai atribuir o endpoint de gravação a ela automaticamente.
Para que o Cloud SQL gere um endpoint de gravação e o atribua à instância, consulte Gerar o endpoint de gravação.
Resolver problemas
Consulte solução de problemas para problemas de conectividade conhecidos e depuração de problemas de conexão para receber ajuda com o autodiagnóstico.