Configurar o acesso VPC sem servidor

O acesso VPC sem servidor permite que você se conecte a partir de um ambiente sem servidor no Google Cloud (Cloud Run, totalmente gerenciado, do Cloud Functions ou do ambiente padrão do App Engine), diretamente na sua rede VPC. Essa conexão possibilita que o ambiente sem servidor acesse instâncias de VM do Compute Engine, instâncias do Memorystore e qualquer outro recurso com um endereço IP interno. Por exemplo, ela pode ser útil nos seguintes casos:

  • O Memorystore é usado para armazenar dados de um serviço sem servidor.
  • Suas cargas de trabalho sem servidor usam softwares de terceiros que você executa em uma VM do Compute Engine.
  • Você executa um serviço de back-end em um grupo de instâncias gerenciadas no Compute Engine e precisa do ambiente sem servidor para se comunicar com esse back-end sem exposição na Internet pública.
  • Seu ambiente sem servidor precisa acessar dados do banco de dados local por meio do Cloud VPN.

A conexão com uma rede VPC permite que o ambiente sem servidor envie solicitações a nomes de DNS internos e endereços IP internos, conforme definido pela RFC 1918 e RFC 6598. Esses endereços internos só podem ser acessados pelos serviços do Google Cloud. O uso de endereços internos evita a exposição de recursos na Internet pública e melhora a latência de comunicação entre os serviços.

O acesso VPC sem servidor só permite que as solicitações sejam iniciadas pelo ambiente sem servidor. As solicitações iniciadas por uma VM precisam usar o endereço externo do serviço sem servidor. Consulte Acesso privado do Google para mais informações.

O acesso VPC sem servidor é compatível com VPC compartilhada e comunicação com as redes conectadas via Cloud Interconnect, Cloud VPN e Peering de rede VPC. O acesso VPC sem servidor não é compatível com redes legadas.

Conectores de acesso VPC sem servidor

O acesso VPC sem servidor é baseado em um recurso chamado conector. Um conector processa o tráfego entre o ambiente sem servidor e a rede VPC. Ao criar um conector no seu projeto do Google Cloud, é preciso anexá-lo a uma rede VPC e região específicas. Em seguida, configure os serviços sem servidor para usar o conector em tráfego de rede de saída.

Ao criar um conector, você também atribui a ele um intervalo de IP. O tráfego enviado por meio do conector para sua rede VPC terá origem em um endereço desse intervalo. O intervalo de IP precisa ser um intervalo CIDR /28 que ainda não esteja reservado na sua rede VPC. Uma regra de firewall implícita com prioridade 1.000 é criada na rede VPC para permitir a entrada do intervalo de IPs do conector para todos os destinos na rede.

O acesso VPC sem servidor provisiona automaticamente a capacidade de um conector em incrementos de 100 Mbps, dependendo da quantidade de tráfego enviada por ele. A capacidade provisionada automaticamente pode escalonar apenas verticalmente. Um conector sempre tem pelo menos 200 Mbps provisionados e pode escalonar até 1.000 Mbps. É possível configurar os limites de escalonamento de capacidade ao criar um conector. A capacidade real por meio de um conector pode exceder a capacidade provisionada, especialmente para bursts de tráfego curtos.

Os conectores de acesso VPC sem servidor estão sujeitos a uma cobrança mensal com base no uso. Consulte a página "Preço" para mais detalhes.

Exemplo de Acesso VPC sem servidor (clique para ampliar)
Exemplo de acesso VPC sem servidor (clique para ampliar)

Observações:

  • Um conector precisa estar localizado no mesmo projeto que o serviço sem servidor, como serviços do Cloud Run, aplicativos do App Engine ou Cloud Functions, que se conecta a ele, a menos que você use a VPC compartilhada. Na configuração da VPC compartilhada, o conector está no projeto de host, e o serviço sem servidor está no projeto de serviço.
  • Um conector precisa estar localizado na mesma região que o serviço sem servidor que se conecta a ele. Consulte a página Regiões compatíveis para ver uma lista com as regiões em que é possível criar um conector.
  • O tráfego para endereços IP internos e nomes DNS internos é roteado por meio do conector. Por padrão, o tráfego para endereços IP externos é roteado pela Internet.
  • É possível usar o mesmo conector com vários serviços sem servidor.
  • Para recursos, como instâncias de VM do Google Cloud ou clusters do GKE, que permitem acesso entre regiões, um conector pode estar em uma região diferente do recurso para a qual está enviando tráfego. Você receberá cobranças pela saída do conector. Consulte a seção Preços.

Como criar um conector

Para criar um conector, use o Console do Cloud ou a ferramenta de linha de comando gcloud:

Console

  1. Certifique-se de que a API de acesso VPC sem servidor esteja ativada para seu projeto:

    Ativar API

  2. Vá para a página de visão geral do acesso VPC sem servidor.

    Página do console sobre o acesso VPC sem servidor

  3. Clique em Criar conector.

  4. No campo Nome, insira um nome para o conector.

  5. No campo Região, selecione uma região para o conector. Ele precisa corresponder à região do serviço sem servidor. Consulte Regiões compatíveis.

  6. No campo Rede, selecione uma rede VPC para o conector.

  7. No campo Intervalo de IP, insira o primeiro endereço em um intervalo de IP interno CIDR /28 não reservado. Ele não pode sobrepor nenhuma reserva de endereço IP atual na rede VPC. Por exemplo, 10.8.0.0 (/28) funcionará na maioria dos novos projetos.

  8. (Opcional) Para ter controle adicional sobre a taxa de transferência do conector, edite os campos Capacidade mínima e Capacidade máxima.

  9. Clique em Criar.

Uma marca de seleção verde aparecerá ao lado do nome do conector quando ele estiver pronto para uso.

gcloud

  1. Atualize os componentes gcloud para a versão mais recente:

    gcloud components update
    
  2. Certifique-se de que a API de acesso VPC sem servidor esteja ativada para seu projeto:

    gcloud services enable vpcaccess.googleapis.com
    
  3. Crie um conector com o comando:

    gcloud compute networks vpc-access connectors create [CONNECTOR_NAME] \
    --network [VPC_NETWORK] \
    --region [REGION] \
    --range [IP_RANGE]
    

    Em que:

    • [CONNECTOR_NAME] é o nome do conector;
    • [VPC_NETWORK] é a rede VPC a que seu conector será anexado;
    • [REGION] é uma região para seu conector. Ele precisa corresponder à região do serviço sem servidor. Consulte Regiões compatíveis.
    • [IP_RANGE] é uma rede de IP interno não reservada, e é necessário ter "/28" de espaço não alocado. O valor fornecido é a rede na notação CIDR (10.8.0.0/28). Esse intervalo de IP não pode se sobrepor a nenhuma reserva de endereço IP atual na rede VPC. Por exemplo, 10.8.0.0/28 funciona na maioria dos projetos novos.

    Para mais detalhes e argumentos opcionais, como controles de capacidade, consulte a referência do gcloud.

  4. Verifique se o conector está no estado READY antes de usá-lo:

    gcloud compute networks vpc-access connectors describe [CONNECTOR_NAME] --region [REGION]
    

    A saída precisa conter a linha state: READY.

Como excluir um conector

Antes de excluir um conector, verifique se nenhum serviço ainda usando ele. Consulte a documentação do produto relevante para informações sobre como desconectar um conector de um serviço. Observe também que não é possível excluir uma rede VPC se um conector de acesso VPC sem servidor ainda estiver conectado a ela. É necessário excluir todos os conectores anexados antes de excluir a rede VPC.

Para excluir um conector, use o Console do Cloud ou a ferramenta de linha de comando gcloud:

Console

  1. Vá para a página de visão geral do acesso VPC sem servidor.

    Página do console sobre o acesso VPC sem servidor

  2. Selecione o conector que você quer excluir.

  3. Clique em Excluir.

gcloud

Use o seguinte comando gcloud para excluir um conector:

gcloud compute networks vpc-access connectors delete [CONNECTOR_NAME] --region [REGION]

Em que:

  • [CONNECTOR_NAME] é o nome do conector que você quer excluir;
  • [REGION] é a região onde o conector está localizado.

Como usar uma rede de VPC compartilhada

Caso sua organização tenha configurado a VPC compartilhada, conclua a configuração a seguir para permitir que ambientes sem servidor em projetos de serviço da VPC compartilhada se conectem a uma rede de VPC compartilhada:

  1. Um administrador do projeto host da VPC compartilhada precisa criar um conector de acesso VPC sem servidor no projeto host e anexá-lo à rede da VPC compartilhada.
  2. O administrador do projeto host precisa conceder o papel Usuário de acesso VPC sem servidor do IAM no projeto host às contas a seguir, conforme aplicável:

    • Cloud Run: o agente de serviço do Cloud Run do projeto de serviço (service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com)
    • Cloud Functions: o agente de serviço do Cloud Functions do projeto de serviço (service-SERVICE_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com)
    • App Engine: a pessoa ou a conta de serviço que realiza implantações do App Engine no projeto de serviço

    Esse papel do IAM permite que ambientes sem servidor em projetos de serviço usem conectores do projeto host.

    Console

    1. Acesse a página "IAM" no projeto host da VPC compartilhada:

      Acessar IAM

    2. Clique em Adicionar.

    3. No campo Novos membros, insira os endereços de e-mail das contas apropriadas. Veja mais informações acima.

    4. No campo Papel, selecione Usuário de acesso VPC sem servidor.

    5. Clique em Salvar.

    gcloud

    Conceda permissões no projeto host da VPC compartilhada com este comando:

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member MEMBER \
    --role roles/vpcaccess.user
    

    em que HOST_PROJECT_ID é o ID do projeto host da VPC compartilhada, e MEMBER é o endereço de e-mail da conta apropriada. Veja mais informações acima. Prefixe MEMBER com user: ou serviceAccount:, de acordo com o tipo de conta.

    Repita as etapas conforme necessário para várias contas.

Depois que a configuração for finalizada, os ambientes sem servidor associados nos projetos de serviço da VPC compartilhada poderão especificar o conector do projeto host para se conectar à rede da VPC compartilhada. Para saber mais, consulte Como configurar seu serviço para usar um conector.

Como configurar seu serviço para usar um conector

Depois de criar um conector, é possível configurar os serviços sem servidor para usá-lo. A forma como um serviço é configurado para usar um conector depende do produto. Para instruções específicas, consulte o guia correspondente:

Depois que o serviço estiver conectado a uma rede VPC, você alcançará instâncias de VM e outros recursos internos com o envio de solicitações para os endereços IP internos ou para os nomes DNS.

Como adicionar o VPC Service Controls

Depois de criar um conector e configurar o serviço, é possível reduzir o risco de exfiltração de dados e proteger recursos e dados usando o VPC Service Controls para a API Serverless VPC Access.

Para informações gerais sobre como ativar o VPC Service Controls, consulte Como criar um perímetro de serviço.

Serviços compatíveis

Use o acesso VPC sem servidor para acessar uma rede VPC a partir dos seguintes serviços:

Regiões compatíveis

É possível criar um conector de acesso VPC sem servidor nas seguintes regiões:

  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-southeast1
  • asia-southeast2
  • australia-southeast1
  • europe-north1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • northamerica-northeast1
  • southamerica-east1
  • us-central1
  • us-east1
  • us-east4
  • us-west1
  • us-west2
  • us-west3
  • us-west4

Protocolos de rede compatíveis

A tabela a seguir descreve os protocolos compatíveis com cada configuração de saída do conector de acesso VPC sem servidor. Consulte Como definir configurações de rede para mais informações sobre as configurações de saída disponíveis.

Protocolo Direcionar pelo conector VPC apenas solicitações para IPs privados Direcionar todo o tráfego pelo conector VPC
TCP
UDP
ICMP Compatível apenas com endereços IP externos

Papéis do IAM selecionados

Na tabela a seguir, descrevemos os papéis do gerenciamento de identidade e acesso (IAM, na sigla em inglês) associados ao acesso VPC sem servidor. Consulte Papéis de acesso VPC sem servidor na documentação do IAM para uma lista de permissões associadas a cada papel.

Papel Descrição
Administrador de acesso VPC sem servidor
roles/vpcaccess.admin
Acesso completo a todos os recursos de acesso VPC sem servidor
Usuário de acesso VPC sem servidor
roles/vpcaccess.user
Pode utilizar conectores de acesso VPC sem servidor
Visualizador de acesso VPC sem servidor
roles/vpcaccess.viewer
Pode ver todos os recursos de acesso VPC sem servidor

Conta de serviço

Para realizar operações no projeto do Cloud, o serviço de acesso VPC sem servidor usa a conta de serviço do Agente de serviço de acesso VPC sem servidor. O endereço de e-mail dessa conta de serviço tem o seguinte formato:

service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com

Por padrão, essa conta de serviço tem o papel Agente de serviço de acesso VPC sem servidor (roles/vpcaccess.serviceAgent). As operações de acesso VPC sem servidor podem falhar se você alterar as permissões dessa conta.

Geração de registros de auditoria

Consulte Informações sobre a geração de registros de auditoria de acesso VPC sem servidor.

Preços

Para ver os preços do acesso VPC sem servidor, consulte Acesso VPC sem servidor na página de preços.

Solução de problemas

Se a criação de um conector resultar em erro, tente o seguinte e recrie o conector:

  • Especifique um intervalo de IP interno RFC 1918 que não se sobreponha a nenhuma reserva de endereço IP existente na rede VPC.
  • Conceda permissão ao projeto para usar imagens de VM do Compute Engine do projeto com o ID serverless-vpc-access-images. Consulte Como configurar restrições de acesso a imagens para ver como atualizar a política da organização adequadamente.
  • Defina a política da organização constraints/compute.vmCanIpForward para permitir que as VMs ativem o encaminhamento de IP.

Se você especificou um conector para um serviço sem servidor, mas ainda não consegue acessar os recursos na rede VPC:

  • Verifique se não há regras de firewall na sua rede VPC com prioridade antes de 1.000 que negem a entrada do intervalo de IP do seu conector.