Configurar o acesso a serviços privados

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Nesta página, você verá como configurar o Acesso privado a serviços na sua rede VPC.

O acesso a serviços particulares é implementado como uma conexão de peering de VPC entre sua rede VPC e a rede VPC subjacente do Google que contém a instância do Cloud SQL. A conexão particular permite que as 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 de endereços IP externos para alcançar serviços disponíveis através do acesso a serviços privados.

Antes de começar

O Cloud SQL requer acesso a serviços particulares para cada rede VPC usada em conexões de IP particulares. Para gerenciar uma conexão de acesso a serviços particulares, o usuário precisa ter as seguintes permissões de IAM:

  • compute.networks.list
  • compute.addresses.create
  • compute.addresses.list
  • servicenetworking.services.addPeering

Se você não tiver essas permissões, verá um erro de permissões insuficientes.

Se você estiver usando uma rede VPC compartilhada, será necessário fazer o seguinte:

  • Adicionar o usuário ao projeto host
  • Atribuir as mesmas quatro permissões ao usuário no projeto host
  • Conceder a permissão compute.globalAddresses.list do IAM ao usuário

Configurar o acesso a serviços particulares para o Cloud SQL

Há duas partes no processo de configuração do acesso privado a serviços:

  • Selecionar um intervalo atual ou alocar um novo intervalo de endereços IP.

    Também é possível permitir que o Google aloque o intervalo para você. Nesse caso, o Google vai alocar automaticamente um intervalo de IP com tamanho de prefixo /20 e usar o nome default-ip-range.

    Se você for criar instâncias em várias regiões ou para tipos diferentes de banco de dados, use um intervalo de /20 ou maior.

  • Criar uma conexão privada pela sua rede VPC à rede do produtor de serviços.

Alocar um intervalo de endereços IP

Console

  1. No Console do Google Cloud, acesse a página redes VPC.

    Acessar redes VPC

  2. Selecione a rede VPC que você quer usar.
  3. Selecione a guia Conexão de serviço particular.
  4. Selecione a guia Intervalos de IP alocados para serviços.
  5. Clique em Alocar intervalo de IP.
  6. Para o Nome do intervalo alocado, especifique google-managed-services-VPC_NETWORK_NAME, em que VPC_NETWORK_NAME é o nome da rede VPC que você está conectando (por exemplo, google-managed-services-default). A Descrição é opcional.
  7. Na notação CIDR, selecione a opção Personalizado e insira o intervalo de endereços IP a ser alocado.
  8. 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 addresses e prefix-length. Por exemplo, para alocar o bloco CIDR 192.168.0.0/16, especifique 192.168.0.0 como endereço e 16 como tamanho de prefixo.
  •         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
            
  • Para especificar apenas um tamanho de prefixo (máscara de sub-rede), use a sinalização prefix-length. Quando você omitir o intervalo de endereços, o Google Cloud selecionará automaticamente um intervalo de endereços não utilizado na sua rede VPC. No exemplo a seguir, é selecionado um intervalo de endereços IP não utilizado com um tamanho de prefixo de 16 bits.
  •         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.

resource "google_compute_global_address" "private_ip_address" {
  name          = "private-ip-address"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 16
  network       = google_compute_network.peering_network.id
}

Aplique as alterações

Para aplicar a configuração do Terraform a um projeto do Google Cloud, siga estas etapas:

  1. Inicie o Cloud Shell.
  2. Defina o projeto do Google Cloud em que a configuração do Terraform será aplicada:
    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    
  3. Crie um diretório e abra um novo arquivo. O nome do arquivo precisa ter a extensão .tf, por exemplo: main.tf:
    mkdir DIRECTORY && cd DIRECTORY && nano main.tf
    
  4. Copie a amostra para main.tf.
  5. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  6. Salve as mudanças pressionando Ctrl-x e depois y.
  7. Inicialize o Terraform:
    terraform init
  8. 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.

  9. 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!".

  10. 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

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

  1. No Console do Google Cloud, acesse a página redes VPC.

    Acessar redes VPC

  2. Selecione a rede VPC que você quer usar.
  3. Selecione a guia Conexão de serviço particular.
  4. Selecione a guia Conexões particulares com os serviços.
  5. Clique em Criar conexão para criar uma conexão particular entre sua rede e um produtor de serviços.
  6. Em Alocação atribuída, selecione um ou mais intervalos alocados que não estejam sendo usados por outros fornecedores de serviços.
  7. Clique em Conectar para criar a conexão.

gcloud

  1. Crie uma conexão particular.

    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.

  2. 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.

resource "google_service_networking_connection" "default" {
  network                 = google_compute_network.peering_network.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.private_ip_address.name]
}

Se você vir um erro sobre a permissão compute.globalAddresses.list para o projeto, tente executar o comando gcloud a seguir:

gcloud projects add-iam-policy-binding HOST_PROJECT_NAME \
    --member=serviceAccount:service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com \
    --role=roles/servicenetworking.serviceAgent

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

  1. No Console do Google Cloud, acesse a página redes VPC.

    Acessar redes VPC

  2. Selecione a rede VPC que você quer usar.
  3. Selecione a guia Conexão de serviço particular.
  4. Selecione a guia Intervalos de IP alocados para serviços.
  5. Selecione o nome do intervalo que você quer excluir.
  6. Clique em Liberar.
  7. Clique em Alocar intervalo de IP.
  8. 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 mudar o endereço IP particular de uma instância existente do Cloud SQL, mova-a para uma rede VPC temporária. Em seguida, altere a configuração de acesso particular a serviços e mova a instância do Cloud SQL de volta:

Para migrar para uma rede VPC diferente, siga todas as etapas abaixo. Ignore a etapa final: como migrar a instância de volta. A [TEMPORARY_VPC_NETWORK_NAME] é a nova rede VPC, neste caso. Além disso, exclua a conexão particular antiga. Pode levar alguns dias para que a conexão particular excluída desapareça do Console do Google Cloud.

Console

  1. No Console do Google Cloud, acesse a página redes VPC.

    Acessar redes VPC

  2. Crie uma rede VPC temporária.
  3. 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
    
  4. Mude a configuração do acesso privado a serviços.

  5. 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