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 ligação de intercâmbio da VPC entre a sua rede da VPC e a rede da VPC Google Cloud subjacente onde a sua instância do Cloud SQL reside. A ligação privada permite que as instâncias de VM na sua rede VPC e os serviços aos quais acede comuniquem exclusivamente através de endereços IP internos. As instâncias de VM não precisam de acesso à Internet nem de endereços IP externos para alcançar serviços disponíveis através do acesso privado a serviços.
Antes de começar
O Cloud SQL requer acesso privado a serviços para cada rede VPC usada para ligações de IP privado. Para gerir uma associação de acesso a serviços privados, o utilizador deve ter as seguintes autorizações do IAM:
compute.networks.list
compute.addresses.create
compute.addresses.list
servicenetworking.services.addPeering
Se não tiver estas autorizações, pode receber erros de autorizações insuficientes.
Se estiver a usar uma rede VPC partilhada, também tem de:
- Adicione o utilizador ao projeto anfitrião.
- Atribua as mesmas quatro autorizações a esse utilizador no projeto anfitrião.
- Conceda a autorização de IAM
compute.globalAddresses.list
ao utilizador.
Configure o acesso privado a serviços para o Cloud SQL
O processo de configuração do acesso a serviços privados tem duas partes:
- Selecionar um intervalo de endereços IP existente ou atribuir um novo.
Também tem a opção de permitir que a Google atribua o intervalo por si. Neste caso, a Google atribui automaticamente um intervalo de IP com o comprimento do prefixo /20 e usa o nome default-ip-range.
Se for criar instâncias em várias regiões ou para diferentes tipos de bases de dados, tem de ter um intervalo mínimo de /24 de endereços IP disponíveis para cada região ou tipo de base de dados. Isto inclui outras aplicações, como o Filestore ou o Memorystore. Para uma nova região ou tipo de base de dados, o Cloud SQL tem de ter um intervalo /24 gratuito.
- Criar uma ligação privada da sua rede VPC à rede do produtor de serviços subjacente.
Atribua um intervalo de endereços IP
Consola
-
Na Google Cloud consola, aceda à página Redes VPC.
- Selecione a rede de VPC que quer usar.
- Selecione o separador
Ligação de serviço privada . - Selecione o separador
Intervalos de IP atribuídos para serviços . - Clique em
Atribuir intervalo de IPs . - Para o
Nome do intervalo alocado, especifiquegoogle-managed-services-VPC_NETWORK_NAME
, ondeVPC_NETWORK_NAME
é o nome da rede VPC à qual está a estabelecer ligação (por exemplo,google-managed-services-default
). ADescrição é opcional. - Selecione a opção
Personalizado e, em seguida, introduza o intervalo de endereços IP a atribuir, na notação CIDR. - Clique em
Atribuir para criar o intervalo atribuído.
gcloud
Efetue um dos seguintes passos:
- Para especificar um intervalo de endereços e um comprimento do prefixo (máscara de sub-rede), use as flags
addresses
eprefix-length
. Por exemplo, para atribuir o bloco CIDR192.168.0.0/16
, especifique192.168.0.0
para o endereço e16
para o comprimento do prefixo. - Para especificar apenas um comprimento do prefixo (máscara de sub-rede), use a flag
prefix-length
. Quando omite o intervalo de endereços,o Google Cloud seleciona automaticamente um intervalo de endereços não usado na sua rede VPC. Google CloudO exemplo seguinte seleciona um intervalo de endereços IP não usado com um comprimento do 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 seguinte atribui um intervalo de IP que permite que os recursos na rede VPC my-vpc-network
se liguem a instâncias do Cloud SQL através de 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 atribuir um intervalo de endereços IP, use um recurso do Terraform.
Aplique as alterações
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.
Eliminar as alterações
Remova os recursos aplicados anteriormente com a sua configuração do Terraform executando o seguinte comando e introduzindo yes
no comando:
terraform destroy
Crie uma ligação privada
Consola
-
Na Google Cloud consola, aceda à página Redes VPC.
- Selecione a rede de VPC que quer usar.
- Selecione o separador Ligação de serviço privada.
- Selecione o separador Ligações privadas a serviços.
- Clique em Criar ligação para criar uma ligação privada entre a sua rede e um produtor de serviços.
- Para a Atribuição atribuída, selecione um ou mais intervalos atribuídos existentes que não estejam a ser usados por outros produtores de serviços.
- Clique em Associar para criar a associação.
gcloud
Crie uma ligaçã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 do Cloud SQL de longa duração e devolve um ID de operação.
Verifique se a operação foi bem-sucedida.
gcloud services vpc-peerings operations describe \ --name=OPERATION_ID
Pode especificar mais do que um intervalo atribuído quando cria uma ligação privada. Por exemplo, se um intervalo tiver sido esgotado, pode atribuir intervalos adicionais. O serviço usa endereços IP de todos os intervalos fornecidos na ordem que especificou.
Terraform
Para criar uma ligação privada, use um recurso do Terraform.
É concedida a função servicenetworking.serviceAgent
a uma conta de serviço no formato service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com
enquanto a ligação privada é criada, porque a conta é aprovisionada just-in-time.
Se vir um erro sobre a autorização compute.globalAddresses.list
ou a autorizaçã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
Altere a configuração do acesso privado ao serviço
Pode alterar o intervalo de endereços atribuído de uma ligação de serviço privada sem modificar nenhuma instância do Cloud SQL existente. Para alterar o endereço IP privado de uma instância do Cloud SQL existente, siga estes passos.
Para alterar o intervalo de endereços atribuído:
Consola
-
Na Google Cloud consola, aceda à página Redes VPC.
- Selecione a rede de VPC que quer usar.
- Selecione o separador Ligação de serviço privada.
- Selecione o separador Intervalos de IP atribuídos para serviços.
Selecione o nome do intervalo que quer eliminar.
Clique em Retirar.
Clique em Atribuir intervalo de IPs.
Crie um novo intervalo com o mesmo nome e novo intervalo
O nome é importante porque a ligação privada já foi estabelecida com esse nome de endereço.
gcloud services vpc-peerings update \ --network=VPC_NETWORK_NAME \ --ranges=ALLOCATED_RANGES \ --service=servicenetworking.googleapis.com \ --force
Altere o endereço IP privado de uma instância do Cloud SQL existente
Para alterar o endereço IP privado de uma instância do Cloud SQL existente, mova a instância da respetiva rede original para uma rede VPC temporária. Em seguida, altere a configuração do acesso privado ao serviço da rede original da instância e mova a instância do Cloud SQL de volta para a respetiva rede original.
Para mudar para uma rede VPC diferente, siga todos os passos, exceto o passo final (mover a instância novamente), no procedimento seguinte. Neste caso, a
TEMPORARY_VPC_NETWORK_NAME
é a nova rede de VPC. Além disso,
elimine
a ligação privada antiga.
A ligação privada eliminada pode demorar alguns dias a desaparecer daGoogle Cloud consola.
Se a instância do Cloud SQL estiver alojada numa rede de VPC partilhada, as variáveis usadas nas instruções seguintes têm de ser os nomes das redes de VPC do projeto anfitrião.VPC_NETWORK_NAME
Para especificar uma rede com uma rede VPC partilhada, use o URL completo da rede, por exemplo, projects/HOST_PROJECT/global/networks/NETWORK_NAME
.
Consola
-
Na Google Cloud consola, aceda à página Redes VPC.
- Crie uma rede de VPC temporária.
- Crie uma atribuição de IP na rede VPC temporária.
- Crie uma ligaçã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 do acesso a serviços privados na rede original para adicionar um novo intervalo atribuído ou eliminar 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