Nesta página, você verá como configurar uma instância do Cloud SQL para usar IP particular.
Para informações sobre como o IP particular funciona, bem como sobre os requisitos de ambiente e gerenciamento, consulte IP particular.
Antes de começar
Requisitos de API e IAM
- Ative a API Service Networking no projeto do Google Cloud.
- Para gerenciar uma conexão de acesso a serviços privados, o usuário precisa
ter as seguintes permissões de gerenciamento de identidade e acesso. Se você não tiver as permissões
necessárias, é possível que receba erros de permissões insuficientes.
compute.networks.list
compute.addresses.create
compute.addresses.list
servicenetworking.services.addPeering
Se você estiver usando uma rede VPC compartilhada, também precisará adicionar seu usuário ao projeto host e atribuir as mesmas permissões a ele no projeto host.
Se você estiver usando uma rede VPC compartilhada, também precisará ativar essa API no projeto host.
Acesso privado a serviços
Ao criar uma nova rede de nuvem privada virtual (VPC) no projeto, você precisa configurar o acesso a serviços particulares para alocar um intervalo de endereços IP e criar uma conexão de serviço particular. Isso permite que os recursos na rede VPC se conectem às instâncias do Cloud SQL. O console do Google Cloud oferece um assistente para ajudar você a definir essa configuração.
Configurar uma instância para usar o IP particular
Ao criar uma instância do Cloud SQL, é possível configurá-la para usar o IP particular. Essa configuração também pode ser feita em uma instância atual.
Configurar o IP particular para uma nova instância
Para configurar uma instância do Cloud SQL para usar IP particular ao criar uma instância:
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Clique em Criar instância.
- Expanda Mostrar opções de configuração.
- Expanda Conexões.
- Selecione IP privado.
Uma lista suspensa exibirá 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 destas opções:
- Selecione um ou mais intervalos de IP ou crie um novo no menu suspenso. A lista suspensa inclui intervalos alocados anteriormente. Selecione Alocar um novo intervalo de IP e insira 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
. - Opcionalmente, é possível especificar um intervalo de IP alocado para as suas instâncias usarem em conexões.
- Expanda Mostrar opção de intervalo de IP alocado.
- Selecione um intervalo de IP no menu suspenso.
- Conclua a configuração da instância.
- Clique em Criar instância.
Se você vir 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 privados.
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-1035
e 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
.
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
Terraform
Para configurar o IP privado para uma nova instância, use os seguintes recursos do Terraform:
google_compute_network
google_compute_global_address
google_service_networking_connection
google_sql_database_instance
Aplique as alterações
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.
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_protection
comofalse
.deletion_protection = "false"
- Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
-
Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo
yes
no 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-1035
e conter de 1 a 63 caracteres. - AUTHORIZED_NETWORKS:: para conexões de 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.
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], } } }
Para enviar a solicitação, expanda uma destas opções:
Você 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-1035
e conter de 1 a 63 caracteres. - AUTHORIZED_NETWORKS:: para conexões de 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.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/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], } } }
Para enviar a solicitação, expanda uma destas opções:
Você 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 Google Cloud, 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 ou crie um novo no menu suspenso. A lista suspensa inclui intervalos alocados anteriormente. Selecione Alocar um novo intervalo de IP e insira 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_NAME
foi criado. - 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.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --no-assign-ip
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-1035
e conter de 1 a 63 caracteres. - AUTHORIZED_NETWORKS:: para conexões de 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.
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/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], } } }
Para enviar a solicitação, expanda uma destas opções:
Você 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-1035
e conter de 1 a 63 caracteres. - AUTHORIZED_NETWORKS: para conexões de 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.
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], } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Conectar-se a uma instância usando 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 Google Cloud que a instância do Cloud SQL, como o proxy do Cloud SQL Auth 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 Functions, o aplicativo ou a função se conecta diretamente à instância pelo acesso VPC sem servidor sem o proxy do Cloud SQL Auth.
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 do Cloud VPN e
os anexos 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, ela pode
criar uma ou mais das seguintes conexões de peering, mas não necessariamente
todas elas:
cloudsql-mysql-googleapis-com
cloudsql-postgres-googleapis-com
servicenetworking-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 de serviços particulares.
- Crie uma divulgação de rota personalizada do Cloud Router para o intervalo alocado nos Cloud Routers que gerencia sessões do BGP para os túneis do Cloud VPN ou anexos do Cloud Interconnect (VLANs).
Conectar a partir do Cloud Shell
No momento, o Cloud Shell não aceita se conectar a uma instância do Cloud SQL que tenha apenas um endereço IP particular.
Conectar-se usando endereços que não sejam RFC 1918
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 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 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 de serviços particulares entre sua rede VPC e a rede produtora 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 produtora 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
PEERING_CONNECTION
é o nome da conexão de peering produzida pela conexão de serviços particulares entre sua rede VPC e a rede produtora 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. Use o ID do projeto de host se você estiver usando a VPC compartilhada.
Substitua:
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.
A seguir
- Saiba mais sobre IP privado.
- Saiba mais sobre o acesso a serviços privados.
- Veja como usar o VPC Service Controls para adicionar um perímetro de serviço.
- Saiba mais sobre como configurar o acesso a serviços privados.
- Saiba mais sobre como configurar o Acesso a serviços privados no Cloud SQL.
- Saiba mais sobre o Cloud VPN.
- Saiba mais sobre as redes VPC.
- Saiba mais sobre o peering de rede VPC.
- Saiba mais sobre VPC compartilhada.