Esta página descreve como configurar o acesso a serviços privados na sua rede VPC.
O acesso a serviços privados é implementado como uma conexão de peering VPC entre sua rede VPC e a rede subjacente Google Cloud Rede VPC onde sua instância do Cloud SQL reside. A conexão privada permite que instâncias de VM na sua rede VPC e os serviços que você acessa se comuniquem exclusivamente usando endereços IP internos. As instâncias de VM não precisam de acesso à Internet ou endereços IP externos para acessar serviços disponíveis por meio do acesso privado a serviços .
Antes de começar
O Cloud SQL requer acesso a serviços privados para cada rede VPC usada para conexões IP privadas. Para gerenciar uma conexão de acesso a serviços privados , o usuário deve ter as seguintes permissões do IAM:
-
compute.networks.list
-
compute.addresses.create
-
compute.addresses.list
-
servicenetworking.services.addPeering
Se você não tiver essas permissões, poderá receber erros de permissões insuficientes.
Se estiver usando uma rede VPC compartilhada , você também deverá:
- Adicione seu usuário ao projeto host.
- Atribua as mesmas quatro permissões a esse usuário no projeto host.
- Conceda a permissão IAM
compute.globalAddresses.list
ao usuário.
Configurar acesso a serviços privados para o Cloud SQL
O processo de configuração de acesso a serviços privados tem duas partes:
- Selecionar um intervalo de endereços IP existente ou alocar um novo.
Você também tem a opção de permitir que o Google aloque o intervalo para você. Nesse caso, o Google alocará automaticamente um intervalo de IP de comprimento de prefixo /20 e usará o nome default-ip-range .
Se você for criar instâncias em várias regiões ou para diferentes tipos de banco de dados, precisará ter um intervalo mínimo /24 de endereços IP disponíveis para cada região ou tipo de banco de dados. Isso inclui outros aplicativos, como Filestore ou Memorystore . Para uma nova região ou tipo de banco de dados, o Cloud SQL precisa ter um intervalo /24 livre.
- Criando uma conexão privada da sua rede VPC para a rede do produtor de serviço subjacente.
Alocar um intervalo de endereços IP
Console
No Google Cloud console, vá para a página de redes VPC .
- Selecione a rede VPC que você deseja usar.
- Selecione o
Conexão de serviço privado aba. - Selecione o
Intervalos de IP alocados para serviços aba. - Clique
Alocar intervalo de IP . - Para o
Nome do intervalo alocado, especifiquegoogle-managed-services-VPC_NETWORK_NAME
, ondeVPC_NETWORK_NAME
é o nome da rede VPC que você está conectando (por exemplo,google-managed-services-default
). ODescrição é opcional. - Selecione o
Personalizado opção e insira o intervalo de endereços IP a ser alocado, em notação CIDR. - Clique
Alocar para criar o intervalo alocado.
gcloud
Faça um dos seguintes:
- Para especificar um intervalo de endereços e um comprimento de prefixo (máscara de sub-rede), use os sinalizadores
addresses
eprefix-length
. Por exemplo, para alocar o bloco CIDR192.168.0.0/16
, especifique192.168.0.0
para o endereço e16
para o comprimento do prefixo. - Para especificar apenas o comprimento do prefixo (máscara de sub-rede), use o sinalizador
prefix-length
. Ao omitir o intervalo de endereços, Google Cloudseleciona automaticamente um intervalo de endereços não utilizado na sua rede VPC. O exemplo a seguir seleciona um intervalo de endereços IP não utilizado com um comprimento de prefixo de16
bits.
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 que recursos na rede VPC my-vpc-network
se conectem 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 .
Aplicar as alterações
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.
Excluir as alterações
Remova os recursos aplicados anteriormente com sua configuração do Terraform executando o seguinte comando e digitando yes
no prompt:
terraform destroy
Crie uma conexão privada
Console
No Google Cloud console, vá para a página de redes VPC .
- Selecione a rede VPC que você deseja usar.
- Selecione a aba Conexão de serviço privada .
- Selecione a aba Conexões privadas para serviços .
- Clique em Criar conexão para criar uma conexão privada entre sua rede e um produtor de serviço.
- Para a alocação atribuída , selecione um ou mais intervalos alocados existentes que não estejam sendo usados por outros produtores de serviços.
- Clique em Conectar para criar a conexão.
gcloud
Crie uma conexão privada.
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 execuçã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 estiver esgotado, você pode atribuir intervalos alocados adicionais. O serviço usa endereços IP de todos os intervalos fornecidos na ordem que você especificou.
Terraform
Para criar uma conexão privada, use um recurso do Terraform .
Uma conta de serviço no service- HOST_PROJECT_NUMBER @service-networking.iam.gserviceaccount.com
o formato recebe a função servicenetworking.serviceAgent
enquanto a conexão privada é criada porque a conta é provisionada just-in-time .
Se você vir um erro sobre a permissão compute.globalAddresses.list
ou a permissão 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.iam.gserviceaccount.com \ --role=roles/servicenetworking.serviceAgent
Alterar a configuração de acesso ao serviço privado
Você pode alterar o intervalo de endereços alocados de uma conexão de serviço privada sem modificar nenhuma instância existente do Cloud SQL. Para alterar o endereço IP privado de uma instância existente do Cloud SQL, siga estas etapas .
Para alterar o intervalo de endereços alocado:
Console
No Google Cloud console, vá para a página de redes VPC .
- Selecione a rede VPC que você deseja usar.
- Selecione a aba Conexão de serviço privada .
- Selecione a aba Intervalos de IP alocados para serviços .
Selecione o nome do intervalo que você deseja excluir.
Clique em Liberar .
Clique em Alocar intervalo de IP .
Crie um novo intervalo com o mesmo nome e novo intervalo
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
Alterar o endereço IP privado de uma instância existente do Cloud SQL
Para alterar o endereço IP privado de uma instância existente do Cloud SQL, mova a instância de sua rede original para uma rede VPC temporária. Em seguida, altere a configuração de acesso ao serviço privado da rede original da instância e mova a instância do Cloud SQL de volta para sua rede original.
Para migrar para uma rede VPC diferente, siga todas as etapas, exceto a última (retornar a instância) do procedimento a seguir. Neste caso, TEMPORARY_VPC_NETWORK_NAME
é a nova rede VPC. Além disso, exclua a conexão privada antiga . Pode levar alguns dias para que a conexão privada excluída desapareça da rede.Google Cloud console.
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 deverão ser os nomes de rede VPC do projeto host. Para especificar uma rede com uma VPC compartilhada, use a URL completa da rede — por exemplo, projects/HOST_PROJECT/global/networks/NETWORK_NAME
.
Console
No Google Cloud console, vá para a página de redes VPC .
- Crie uma rede VPC temporária .
- Crie uma alocação de IP na rede VPC temporária .
- Crie uma conexão privada 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 ao serviço privado na rede original para adicionar um novo intervalo alocado ou excluir os existentes.
Mova a instância do Cloud SQL de volta 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