Como configurar o acesso privado a serviços

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

O Google Cloud e terceiros (juntos conhecidos como produtores de serviços) podem oferecer serviços com endereços IP internos hospedados em uma rede VPC. O acesso privado a serviços permite que você acesse esses endereços IP internos. Isso é útil quando você quer que as instâncias de VM na sua rede VPC utilizem endereços IP internos em vez de endereços IP externos. O Cloud SQL usa endereços IP internos para IPs privados.

Antes de começar

Se você estiver usando o IP privado em qualquer uma das instâncias do Cloud SQL, será necessário configurar o acesso privado a serviços uma vez para cada projeto do Google Cloud que tenha uma instância do Cloud SQL ou que precise se conectar a ela.

Caso seu projeto do Google Cloud tenha uma instância do Cloud SQL, configure-o manualmente ou permita que o Cloud SQL faça isso por você para usar o IP privado.

Com o Cloud SQL, você configura o acesso privado a serviços quando todos os casos abaixo são aplicáveis:

  • Você ainda não configurou o acesso a serviços particulares no projeto do Google Cloud.
  • Você está ativando o IP particular pela primeira vez para qualquer instância do Cloud SQL no projeto do Google Cloud.
  • Ao ativar o IP privado na página Connections da instância, você seleciona as opções Use an automatically allocated IP range e rede associada default.

É possível ver os resultados na página de redes VPC selecionando default da rede VPC e, em seguida, selecionando o link Private service connection.

Caso contrário, você precisará configurar o acesso privado a serviços manualmente, conforme descrito nas seções abaixo.

Como configurar acesso privado a serviços para o Cloud SQL

É possível configurar o acesso privado a serviços na opção default ou em sua própria rede VPC. Isso é recomendado se:

  • você quer controlar o tamanho do intervalo de endereços IP alocado. Por exemplo, se você antecipar a criação de muitas instâncias do Cloud SQL, poderá optar antecipadamente por alocar um intervalo de IP que possa conter todas elas. Se as instâncias forem criadas em várias regiões ou tipos de banco de dados diferentes, recomendamos um intervalo /20 ou maior.

  • Você quer configurar o acesso privado a serviços a partir da linha de comando (usando a gcloud).

  • Você está usando uma VPC compartilhada e sua organização tem um administrador de rede (papéis do IAM/compute.networkAdmin) no projeto host. O administrador da rede pode executar as etapas abaixo no projeto host para configurar o acesso privado a serviços. Os usuários que receberem privilégios delegados nos projetos de serviço poderão iniciar instâncias do Cloud SQL seguindo as instruções das seções anteriores.

Ele é implementado como uma conexão de peering de VPC entre sua rede VPC e a rede VPC de serviços do Google que contém a instância do Cloud SQL. Mesmo que vários intervalos de IP possam ser alocados, o intervalo de IP usado para o IP privado sempre será feito pelo Google.

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

  • Alocar um intervalo de endereços IP.
  • Criar uma conexão privada da sua rede VPC com a rede do produtor de serviços.

Como alocar um intervalo de endereços IP

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud.
  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 Intervalo de IP alocado.
  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. Clique em Alocar para criar o intervalo alocado.

gcloud

Siga uma destas açõ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=[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=[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 às 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=my-vpc-network \
    --project=my-project

Como criar uma conexão particular

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud.
  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]
    

    Substitua [VPC_NETWORK_NAME] pelo nome da rede VPC e [PROJECT_ID] pelo ID do projeto que contém a rede VPC.

    O comando inicia uma operação de longa duração, que retorna um nome de operação.

  2. Verifique se a operação foi bem-sucedida.

    gcloud services vpc-peerings operations describe \
        --name=[OPERATION_NAME]
    

    Substitua [OPERATION_NAME] pelo nome da operação retornado na etapa anterior.

É possível 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.

Como mudar a configuração do acesso privado a serviços

É 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. Acesse a página "Redes VPC" no Console do Google Cloud.
  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.

Como mudar o endereço IP particular de uma instância do Cloud SQL

Para mudar o endereço IP privado de uma instância do Cloud SQL, mova-a para uma rede VPC temporária. Em seguida, altere a configuração de acesso privado a serviços e mova a instância do Cloud SQL de volta:

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud.
  2. Crie uma rede VPC temporária.
  3. Mova a instância do Cloud SQL para a rede VPC temporária.
    gcloud --project=[PROJECT_ID] beta sql instances patch [INSTANCE_ID]
    --network=[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 --project=[PROJECT_ID] beta sql instances patch [INSTANCE_ID]
    --network=[ORIGINAL_VPC_NETWORK_NAME] --no-assign-ip

Como conceder o papel compute.networkAdmin

gcloud beta services identity create --service=servicenetworking.googleapis.com --project=project-id
gcloud projects add-iam-policy-binding project-id --member="service-account-prefix@service-networking.iam.gserviceaccount.com" --role="roles/servicenetworking.serviceAgent"