Configurar conectores em projetos de serviço de VPC compartilhada

Se a organização usa a VPC compartilhada, é possível configurar conectores de acesso VPC sem servidor no projeto de serviço ou no projeto host. Este guia mostra como configurar um conector no projeto de serviço.

Se você precisar configurar um conector no projeto host, consulte Configurar conectores no projeto host. Saiba mais sobre as vantagens de cada método em Como se conectar a uma rede VPC compartilhada.

Em geral, você precisa seguir estas etapas:

  1. Adicionar regras de firewall para permitir intervalos de IP obrigatórios
  2. Conceder permissões
  3. Criar uma sub-rede
  4. Na página Como configurar o Acesso VPC sem servidor, conclua as etapas nas seguintes seções:

Adicionar regras de firewall para permitir intervalos de IP

Para executar essas etapas, você precisa ter um dos seguintes papéis no projeto host:

É necessário criar regras de firewall para permitir que as solicitações dos seguintes intervalos de IP alcancem o conector e sejam alcançadas por ele:

  • Intervalos NAT
    • 107.178.230.64/26
    • 35.199.224.0/19
  • Intervalos de verificação de integridade
    • 130.211.0.0/22
    • 35.191.0.0/16
    • 108.170.220.0/23

Esses intervalos são usados pela infraestrutura do Google que serve como base para o Cloud Run functions, o Cloud Functions e o ambiente padrão do App Engine. Todas as solicitações desses IPs têm a garantia de se originar da infraestrutura do Google, o que garante que sua função se comunique apenas com o conector VPC a que ela está conectada.

Para uma configuração simples, aplique as regras para permitir que os serviços sem servidor em qualquer projeto de serviço conectado à rede VPC compartilhada enviem solicitações para qualquer recurso da rede.

Para aplicar essas regras, faça o seguinte:

  1. Execute os três comandos a seguir para definir regras que permitem que as solicitações do ambiente sem servidor alcancem todos os conectores de VPC na rede:

    gcloud compute firewall-rules create serverless-to-vpc-connector \
    --allow tcp:667,udp:665-666,icmp \
    --source-ranges 107.178.230.64/26,35.199.224.0/19 \
    --direction=INGRESS \
    --target-tags vpc-connector \
    --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-to-serverless \
    --allow tcp:667,udp:665-666,icmp \
    --destination-ranges 107.178.230.64/26,35.199.224.0/19 \
    --direction=EGRESS \
    --target-tags vpc-connector \
    --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-health-checks \
    --allow tcp:667 \
    --source-ranges 130.211.0.0/22,35.191.0.0/16,108.170.220.0/23 \
    --direction=INGRESS \
    --target-tags vpc-connector \
    --network=VPC_NETWORK

    Em que VPC_NETWORK é a rede VPC a que seu conector será anexado.

  2. Crie uma regra de entrada na sua rede VPC para permitir solicitações de conectores:

    gcloud compute firewall-rules create vpc-connector-requests \
    --allow tcp,udp,icmp \
    --direction=INGRESS \
    --source-tags vpc-connector \
    --network=VPC_NETWORK

    Esta regra concede ao conector da VPC acesso a todos os recursos da rede. Para limitar os recursos que seu ambiente sem servidor pode alcançar usando o acesso VPC sem servidor, especifique um destino para essas regras de firewall.

Criar regras de firewall para conectores específicos

Seguir o procedimento descrito em Adicionar regras de firewall para permitir intervalos de IP resulta em regras de firewall que se aplicam a todos os conectores, tanto os atuais quanto os criados no futuro. Se você não quiser fazer isso, mas quiser criar regras somente para conectores específicos, poderá definir o escopo das regras para que elas se apliquem apenas a esses conectores.

Para limitar o escopo das regras a conectores específicos, use um destes mecanismos:

  • Tags de rede. Cada conector tem duas tags de rede: vpc-connector e vpc-connector-REGION-CONNECTOR_NAME. Use o último formato para limitar o escopo das suas regras de firewall a um conector específico.
  • Intervalos de IP. Use esse método apenas para regras de saída, pois ele não funciona para entrada. É possível usar o intervalo de IP da sub-rede do conector para limitar o escopo das regras de firewall a um único conector de VPC.

Conceder permissões a contas de serviço nos projetos de serviço

Em cada projeto de serviço que usará conectores de VPC, o administrador de VPC compartilhada precisa conceder o papel de usuário de rede do Compute (compute.networkUser) no projeto host ao projeto de serviço cloudservices e às contas de serviço vpcaccess.

Para conceder o papel:

  1. Use os comandos a seguir:

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --role "roles/compute.networkUser" \
    --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --role "roles/compute.networkUser" \
    --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com"
  2. Se a conta de serviço @gcp-sa-vpcaccess não existir, ative a API de acesso VPC sem servidor no projeto de serviço e tente novamente:

    gcloud services enable vpcaccess.googleapis.com

Se você preferir não conceder o acesso a toda a rede VPC compartilhada para essas contas de serviço e quiser permitir o acesso apenas a sub-redes específicas, é possível conceder esses papéis a essas contas de serviço somente em sub-redes específicas.

Criar uma sub-rede

Ao usar a VPC compartilhada, o administrador de VPC compartilhada precisa criar uma sub-rede para cada conector. Siga a documentação sobre como adicionar uma sub-rede para adicionar uma sub-rede /28 na rede VPC compartilhada. Essa sub-rede precisa estar na mesma região que os serviços sem servidor que usarão o conector.

Próximas etapas