Como configurar o acesso privado a serviços

O Acesso a serviços privados é uma conexão privada entre sua rede VPC e uma rede de propriedade do Google ou de terceiros. O Google ou o terceiro, entidades que oferecem serviços, também são conhecidos como fornecedores de serviços. 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 por meio do acesso a serviços privados.

Para saber mais sobre o Acesso privado a serviços e alternativas similares, consulte Opções de acesso privado para serviços.

Em geral, para usar o Acesso privado a serviços, você precisa alocar um intervalo de endereços IP (bloco CIDR) na sua rede VPC e depois criar uma conexão particular com um fornecedor de serviços.

Antes de começar

Para estabelecer uma conexão particular, atenda aos seguintes pré-requisitos:

  • Verifique se o serviço que você está usando suporta o acesso a serviços privados.
  • Você precisa ter uma rede VPC para se conectar à rede do fornecedor de serviços. As instâncias de VM precisam usar essa rede VPC para se conectarem a serviços por meio de uma conexão particular.
  • Ative a API Service Networking no seu projeto. Ela é necessária para criar uma conexão particular.
  • Crie um projeto do Cloud ou escolha um já existente. Para saber como criar um projeto do Cloud, consulte Como criar e gerenciar projetos.
  • Instale o SDK do Cloud se desejar executar os exemplos de linhas de comando gcloud neste guia.

Permissões

Proprietários de projetos e membros do IAM com o papel de administrador de rede podem criar intervalos de endereços IP alocados e gerenciar conexões particulares.

Para mais informações sobre papéis, leia a documentação sobre papéis de IAM de VPC.

Cenário de VPC compartilhada

Caso você esteja usando a VPC compartilhada, crie o intervalo de IP alocado e a conexão particular no projeto host. Normalmente, o administrador de rede nesse projeto é quem realiza essas tarefas. Depois que o projeto host estiver configurado, as instâncias de VM em projetos de serviço poderão usar a conexão particular.

Cotas e limites

Uma conexão particular é implementada como uma conexão de peering VPC. Por isso, as cotas e os limites que se aplicam ao Peering de redes VPC também se aplicam ao Acesso privado a serviços.

Como criar intervalos de endereços IP alocados

Antes de criar uma conexão particular, é preciso alocar um intervalo de endereços IP que será usado pela rede VPC do fornecedor de serviços. Isso garante que não haja colisão de endereços IP entre sua rede VPC e a rede do fornecedor de serviços. Crie um intervalo alocado para cada fornecedor de serviços.

Quando você aloca um intervalo na sua rede VPC, ele deixa de ser aceito para sub-redes (intervalos primários e secundários) e destinos de rotas estáticas personalizadas.

Tamanho do intervalo de endereços IP

Intervalos do Acesso privado a serviços (clique para ampliar)

Quando um fornecedor de serviços cria uma sub-rede no seu lado da conexão, um intervalo aberto da alocação é selecionado para o intervalo de endereços IP da sub-rede.

Cada fornecedor de serviços exige um tamanho mínimo de intervalo de endereços IP. Para o Google, o tamanho mínimo é um único bloco /24 (256 endereços), mas o recomendado é um bloco /16 (65.536 endereços). O tamanho escolhido depende de fatores como o número de serviços e regiões que você usa. Pode ser um único serviço em várias regiões para cenários de redundância ou para reduzir a latência.

Por exemplo, se você usar dois serviços em três regiões diferentes, o fornecedor de serviços precisará criar seis sub-redes, cada uma com um bloco /24. A utilização de mais serviços ou regiões poderá esgotar rapidamente uma alocação /20. Caso você não tenha um bloco /16 contíguo, comece com uma alocação menor e adicione novas opções depois se precisar de mais endereços IP.

Sobre a sub-rede do fornecedor de serviços

Quando você estabelece uma conexão particular e cria um recurso com um endereço IP privado, o serviço cria uma sub-rede para provisionar o recurso. O serviço seleciona um intervalo de endereços IP disponível no intervalo alocado. Não é possível selecionar ou modificar o intervalo de endereços IP da sub-rede do fornecedor de serviços. Mesmo que você exclua a conexão particular ou o intervalo de endereços IP alocado, a sub-rede permanecerá até que todos os recursos na sub-rede sejam excluídos.

À medida que você provisiona mais recursos, eles são provisionados pelo serviço nas sub-redes regionais criadas anteriormente. Se uma sub-rede estiver cheia, o serviço criará uma nova na região.

Considerações

Antes de alocar um intervalo de endereços IP, pense nas seguintes restrições:

  • Selecione um intervalo que não se sobreponha a intervalos, sub-redes ou rotas estáticas personalizadas. Dois intervalos não podem se sobrepor.
  • Se você estiver usando uma rede VPC de modo automático, não será possível criar um intervalo alocado que corresponda ou se sobreponha a 10.128.0.0/9. Esse intervalo é reservado para sub-redes criadas automaticamente.
  • Selecione um bloco CIDR grande o suficiente para atender às suas necessidades atuais e futuras. Se você descobrir depois que o intervalo não é suficiente, amplie-o, se possível. Embora você possa atribuir várias alocações a um único fornecedor de serviços, o Google impõe uma cota sobre o número de intervalos de endereços IP que podem ser alocados, mas não sobre o tamanho (máscara de rede) de cada um.
  • Não reutilize o mesmo intervalo alocado para vários produtores de serviço. Embora seja possível, isso pode levar à sobreposição de endereços IP. Cada fornecedor de serviços tem visibilidade apenas sobre a própria rede e não sabe quais endereços IP são usados por outros fornecedores.
  • Só é possível atribuir um bloco CIDR a um intervalo alocado ao criar a alocação. Se você ampliar o intervalo de endereços IP, não poderá adicionar mais blocos a uma alocação. Em vez disso, crie outra alocação ou recrie a atual usando um bloco maior que englobe os intervalos novos e os atuais.
  • Se você mesmo criar a alocação em vez de deixar que o Google faça isso (por meio do Cloud SQL, por exemplo), poderá usar a mesma convenção de nomenclatura para indicar a outros usuários ou serviços do Google que já existe uma alocação para o Google. Quando um serviço do Google aloca um intervalo em seu nome, o serviço usa o seguinte formato para nomear a alocação: google-managed-services-[your network name]. Se essa alocação já existir, os serviços do Google a utilizarão, em vez de criar outra.

Procedimento

Nas etapas a seguir, você aprende a criar um intervalo de endereços IP alocado.

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud.
    Acessar a página "Redes VPC"
  2. Selecione a rede VPC que se conectará a um produtor de serviços.
  3. Selecione a guia Conexão de serviço privado.
  4. Na guia Conexão de serviço privado, selecione Intervalos de IP alocados para serviços.
  5. Clique em Intervalo de IP alocado.
  6. Insira um Nome e uma Descrição para o intervalo alocado.
  7. Especifique um intervalo de IP para a alocação:

    • Para especificar um intervalo de endereços IP, selecione Personalizado e insira um bloco CIDR, como 192.168.0.0/16.
    • Para especificar o tamanho de um prefixo e permitir que o Google selecione um intervalo disponível, selecione Automático e insira um tamanho de prefixo, como 16.
  8. Clique em Alocar para criar o intervalo alocado.

gcloud

Crie um intervalo alocado na sua rede VPC.

  • 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 [RESERVED_RANGE_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --addresses=192.168.0.0 \
        --prefix-length=16 \
        --description=[DESCRIPTION] \
        --network=[VPC_NETWORK]
    
  • Para especificar apenas um tamanho de prefixo (máscara de sub-rede), basta usar 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 [RESERVED_RANGE_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --prefix-length=16 \
        --description=[DESCRIPTION] \
        --network=[VPC_NETWORK]
    

Substitua os seguintes marcadores de posição pelos valores relevantes:

  • [RESERVED_RANGE_NAME] é um nome para o intervalo alocado, como my-allocated-range.
  • [DESCRIPTION] é uma descrição para o intervalo, como allocated for my-service.
  • [VPC_NETWORK] é o nome da rede VPC, como my-vpc-network.

O exemplo a seguir cria uma conexão privada com o Google para que as instâncias de VM na rede VPC my-network possam usar serviços privados para acessar serviços do Google compatíveis.

gcloud compute addresses create google-managed-services-my-network \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --description="peering range for Google" \
    --network=my-network \
    --project=my-project

Como listar intervalos de endereços IP alocados

É possível listar intervalos com a sinalização --filter para ver quais intervalos podem ser usados para acesso a serviços privados. Filtre por intervalos com a finalidade VPC_PEERING, conforme mostrado no exemplo a seguir:

gcloud compute addresses list --global --filter="purpose=VPC_PEERING"

Como criar uma conexão particular

Depois de criar um intervalo alocado, crie uma conexão particular com um fornecedor de serviços. A conexão particular estabelece uma conexão com o Peering de redes VPC entre sua rede VPC e a rede do fornecedor de serviços.

Conexões particulares são um relacionamento um para um entre a rede VPC e o fornecedor de serviços. Se um único fornecedor de serviços oferecer vários serviços, você precisará apenas de uma conexão particular para todos eles.

Caso você se conecte a vários fornecedores de serviços, use uma alocação exclusiva para cada. Essa prática o ajuda a gerenciar suas configurações de rede, como regras de firewall e rotas, para cada fornecedor de serviços.

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud.
    Acessar a página "Redes VPC"
  2. Selecione a rede VPC que se conectará a um produtor de serviços.
  3. Selecione a guia Conexão de serviço privado.
  4. Na guia Conexão de serviço privado, selecione a guia Conexões privadas 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=[RESERVED_RANGE_NAME] \
        --network=[VPC_NETWORK] \
        --project=[PROJECT_ID]
    
    • [RESERVED_RANGE_NAME] é o nome de um ou mais intervalos alocados.
    • [VPC_NETWORK] é o nome da sua rede VPC.
    • [PROJECT_ID] é o código do projeto que contém sua 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 usará endereços IP de todos os intervalos fornecidos, na ordem que você especificou.

Como listar conexões particulares

Depois de criar uma conexão particular, liste-a para verificar se ela existe. A lista também mostra a lista de intervalos alocados associados a cada conexão. Por exemplo, se você não se lembrar qual intervalo alocado atribuiu a uma conexão, consulte a lista para descobrir.

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud.
    Acessar a página "Redes VPC"
  2. Selecione a rede VPC que contém as conexões.
  3. Selecione a guia Conexão de serviço privado.
  4. Na guia Conexão de serviço privado, selecione a guia Conexões privadas com os serviços para visualizar todas as conexões de rede privadas.

gcloud

Liste as conexões particulares na sua rede VPC.

gcloud services vpc-peerings list \
    --network=[VPC_NETWORK] \
    --project=[PROJECT_ID]

Substitua [VPC_NETWORK] e [PROJECT_ID] pelo nome da sua rede VPC e pelo ID do projeto dela.

Como modificar uma conexão particular

Nas conexões particulares, é possível adicionar ou remover intervalos de endereços IP alocados sem interromper o tráfego. Por exemplo, ao escalonar, é possível adicionar um intervalo alocado caso o atual esteja perto de esgotar.

Não é possível remover intervalos de IP alocados usando o Console do Google Cloud. Se você quiser remover um intervalo alocado, use as instruções do gloud para modificar a conexão. Quando você remove um intervalo de uma conexão particular, estas condições são aplicadas:

  • O intervalo alocado não está mais associado à conexão particular, mas não foi excluído.

  • Os recursos do produtor de serviços existentes podem continuar usando o intervalo removido.

  • O acesso a serviços privados não usará os intervalos removidos para alocar novas sub-redes.

Também é possível usar estas instruções do gcloud para recriar uma conexão particular excluída usando diferentes intervalos de IP alocados. Para mais informações, consulte recriar uma conexão particular excluída.

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud.
    Acessar a página "Redes VPC"
  2. Selecione a rede VPC que contém as conexões.
  3. Selecione a guia Conexão de serviço privado.
  4. Na guia Conexão de serviço privado, selecione a guia Conexões privadas com os serviços para visualizar todas as conexões de rede privadas.
  5. Clique no nome de uma conexão na lista.
  6. No menu suspenso Alocação atribuída, selecione os intervalos que você quer alocar.
  7. Clique em OK.

gcloud

Adicione ou remova intervalos de endereços IP alocados e atribuídos em uma conexão particular.

gcloud services vpc-peerings update \
    --service=servicenetworking.googleapis.com \
    --ranges=[RESERVED_RANGE_NAME] \
    --network=[VPC_NETWORK] \
    --project=[PROJECT_ID] \
    [--force]

Substitua os marcadores a seguir pelos valores relevantes:

  • [RESERVED_RANGE_NAME] é uma lista de um ou mais nomes de intervalos alocados a serem atribuídos à conexão particular. [RESERVED_RANGE_NAME] substitui a lista anterior de intervalos alocados. Se você omitir um intervalo que estava associado a essa conexão particular, o intervalo será removido da conexão. Use a opção --force para remover um intervalo.

  • [VPC_NETWORK] é o nome da sua rede VPC.

  • [PROJECT_ID] é o nome do ID do projeto da rede.

Como excluir uma conexão particular

Para excluir uma conexão particular, é preciso remover a conexão de peering de VPC correspondente. Sua rede VPC será desconectada da rede VPC do fornecedor de serviços. Os recursos atuais em ambas as redes permanecerão, mas perderão o acesso privado a serviços.

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud.
    Acessar a página "Redes VPC"
  2. Selecione a rede VPC que contém as conexões que você quer excluir.
  3. Selecione a guia Conexão de serviço privado.
  4. Em seguida, selecione a guia Conexão particular com serviços.
  5. Escolha a conexão particular a ser excluída.
  6. Clique em Excluir.
  7. Clique em Excluir novamente para confirmar a ação.

gcloud

Exclua a conexão de peering de rede VPC da conexão particular.

gcloud compute networks peerings delete [CONNECTION_NAME] \
    --network [VPC_NETWORK]

Substitua [CONNECTION_NAME] e [VPC_NETWORK] pelo nome da sua conexão particular e da sua rede VPC.

Como recriar uma conexão particular excluída

É possível recriar uma conexão particular excluída.

Se você quiser usar os mesmos intervalos de IP alocados que foram usados anteriormente, crie a conexão particular de novo. Especifique os mesmos intervalos de IP alocados que você usou para a conexão particular antes de excluí-la. Se você especificar diferentes intervalos de IP alocados, o Google Cloud retornará um erro Cannot modify allocated ranges.

Se você quiser recriar a conexão usando diferentes intervalos de IP alocados, use o comando gcloud services vpc-peerings update para modificar a conexão particular.

Por exemplo, se você já configurou uma conexão particular usando range1, é possível recriá-la com uma configuração diferente de intervalo de IP alocada, como range1 e range2.

gcloud services vpc-peerings update \
    --service=servicenetworking.googleapis.com \
    --ranges=range1,range2 \
    --network=vpc1 \
    --project=my-project-123

Também é possível recriar a conexão usando range2. Como isso exclui range1, que fazia parte da configuração da conexão particular anterior, use a opção --force.

gcloud services vpc-peerings update \
    --service=servicenetworking.googleapis.com \
    --ranges=range2 \
    --network=vpc1 \
    --project=my-project-123 \
    --force

Como excluir uma alocação

Antes de excluir um intervalo de endereços IP, verifique se ele não está sendo usado por alguma conexão particular. É possível excluir ou modificar uma conexão particular para desassociar o intervalo alocado. Caso contrário, as conexões atuais permanecerão ativas, mas nada impedirá que a VPC use endereços IP que se sobreponham à rede do fornecedor de serviços. Além disso, o serviço não poderá criar novas sub-redes porque não há intervalo de endereços IP para seleção.

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud.
    Acessar a página "Redes VPC"
  2. Selecione a rede VPC que contém as alocações que você quer excluir.
  3. Selecione a guia Conexão de serviço privado.
  4. Na guia Conexão de serviço privado, selecione Intervalos de IP alocados para serviços.
  5. Selecione a alocação que você quer excluir.
  6. Clique em Liberar para retornar o intervalo de endereços IP alocado ao pool de endereços IP internos disponíveis da rede.

    Se o intervalo de endereços IP alocado ainda estiver atribuído a uma conexão existente, será necessário confirmar mais uma vez antes de liberar a alocação.

  7. Clique em Liberar novamente para confirmar a exclusão.

gcloud

Para excluir a alocação, especifique o nome dela.

gcloud compute addresses delete [NAME] \
    --global

Solução de problemas

Quanto da minha alocação está sendo usada?

Ao criar uma conexão particular com um fornecedor de serviços, você aloca um intervalo de endereços IP para o uso do provedor. Se você usar vários serviços de um fornecedor, cada serviço reservará uma parte dos endereços IP desse intervalo alocado. É possível verificar quais serviços usam quais endereços IP, por exemplo, para ver quais serviços estão usando blocos grandes de endereços IP e evitar o esgotamento dos endereços.

Para ver qual serviço está usando um determinado intervalo de endereços IP, siga estas etapas:

  1. Liste suas conexões privadas.
  2. Encontre o nome da conexão de peering que conecta você ao fornecedor de serviços relevante.
  3. Liste as rotas para sua rede VPC.
  4. Encontre as rotas com um próximo salto que corresponda ao nome da conexão de peering. O intervalo de destino das rotas indica quais endereços IP são usados por cada serviço.

Esgotamento do intervalo de endereços IP

Se você esgotar o espaço de endereços IP alocado de uma determinada conexão particular, expanda a alocação atual ou adicione alocações novas. A alocação expandida precisa ser um intervalo contíguo de endereços IP que inclua o intervalo atual. A expansão de uma alocação é recomendada porque não há limite para o tamanho de uma alocação, mas há para o número de alocações que podem ser criadas.

Para expandir uma alocação atual, siga estas etapas:

  1. Liste suas conexões particulares e registre o nome do intervalo alocado que você precisa expandir.
  2. Exclua o intervalo alocado existente.
  3. Crie um novo intervalo alocado usando o mesmo nome que o intervalo excluído. Especifique um intervalo de endereços IP que inclua aquele que foi excluído. Dessa forma, os recursos com peering que estejam usando o intervalo alocado antigo poderão continuar utilizando os mesmos endereços IP sem colidir com os recursos da sua rede VPC. Por exemplo, se o intervalo alocado anterior for 192.168.0.0/20, crie um novo intervalo alocado como 192.168.0.0/16.

Para adicionar intervalos alocados a uma conexão particular, siga estas etapas:

  1. Crie um novo intervalo alocado. Ele não precisa ser contíguo aos intervalos alocados atuais.
  2. Adicione o intervalo alocado à conexão particular.

Hosts locais não podem se comunicar com a rede do provedor de serviços

A rede do fornecedor de serviços pode não ter as rotas corretas para direcionar o tráfego para sua rede local. Por padrão, a rede do produtor do serviço só aprende as rotas de sub-rede da sua rede VPC. Portanto, qualquer solicitação que não seja de um intervalo de IP de sub-rede será eliminada pelo produtor do serviço.

Na rede VPC, atualize a conexão de peering para exportar rotas personalizadas para a rede do fornecedor de serviços. A exportação de rotas envia para a rede do produtor do serviço todas as rotas dinâmicas e estáticas qualificadas que estão na sua rede VPC, como rotas para sua rede local. A rede do produtor do serviço as importa automaticamente e pode enviar o tráfego de volta para sua rede local por meio da rede VPC.