Como usar o VPC Service Controls (VPC SC)

O VPC Service Controls é um recurso do Google Cloud em que é possível configurar um perímetro seguro para evitar a exfiltração de dados. Neste guia, mostramos como usar o VPC Service Controls com o Cloud Run para aumentar a segurança dos seus serviços.

Limitações e orientações para esta versão de pré-lançamento

  • Para o Artifact Registry ou o Container Registry:

    • O registro em que você armazena seu contêiner precisa estar no mesmo perímetro de serviço do VPC Service Controls do projeto em que você está implantando.
    • O código que está sendo criado precisa estar no mesmo perímetro que o registro para que o contêiner está sendo enviado.
  • O recurso de implantação contínua não está disponível para projetos dentro de um perímetro do VPC Service Controls.

Como configurar sua organização para aceitar o VPC Service Controls

Para usar o VPC Service Controls com o Cloud Run, configure um perímetro de serviço no nível da organização. Com essa configuração, é possível confirmar se as verificações do VPC Service Controls foram aplicadas ao uso do Cloud Functions e se os desenvolvedores implantaram apenas funções compatíveis com o VPC Service Controls.

Configure um perímetro do VPC Service Controls

As etapas a seguir mostram como configurar um perímetro do VPC Service Controls.

  1. Verifique se você tem os papéis necessários para administrar o VPC Service Controls.

  2. Siga o Guia de início rápido do VPC Service Controls. Quando solicitado a especificar o serviço que você quer restringir, especifique a API Cloud Run.

  3. Ative o acesso para desenvolvedores.

    Ativar o VPC Service Controls para o Cloud Run impede todo o acesso de fora do perímetro, incluindo a visualização e a implantação de serviços a partir de máquinas que não estão no perímetro, como laptops da empresa. Para que desenvolvedores e operadores de aplicativos visualizem e implantem recursos dentro do perímetro, é necessário configurar a política de entrada do perímetro.

    Se a organização usa o Access Context Manager, também é possível ativar o acesso para desenvolvedores definindo níveis de acesso.

Como resultado da configuração do perímetro de serviço, todas as chamadas para a API Cloud Run Admin serão verificadas para garantir que as chamadas sejam originadas dentro do mesmo perímetro.

Como configurar as políticas da organização

Para gerenciar as políticas da organização, é necessário o papel de Administrador da política da organização (roles/orgpolicy.policyAdmin).

Para seguir o VPC Service Controls e evitar a exfiltração de dados, configure as seguintes políticas da organização que controlam as configurações permitidas de entrada e saída para o Cloud Run no perímetro de serviço.

Como restringir as configurações de entrada permitidas

A política da organização run.allowedIngress controla as configurações de entrada que os desenvolvedores podem usar para o Cloud Functions. Defina essa política da organização para exigir que os desenvolvedores usem o valor internal se você quiser permitir apenas solicitações internas ou internal-and-cloud-load-balancing se quiser permitir solicitações pelo Cloud Load Balancing, com os controles de acesso gerenciados pelo Cloud Load Balancing.

Para mais informações sobre essas configurações, consulte Como restringir a entrada para o Cloud Run

Console

  1. Acesse a página de políticas Configurações de entrada permitidas (Cloud Run) no Console do Cloud:

    Acessar a política da organização

  2. Clique em Editar.

  3. Na página Editar, selecione Personalizar.

  4. Em Aplicação da política, selecione Substituir.

  5. Em Valores da política, selecione Personalizada.

  6. Em Tipo de política, selecione Permitir.

  7. Em Valores personalizados, digite internal. Se você também quiser permitir o tráfego do Cloud Load Balancing, clique em Novo valor da política e insira internal-and-cloud-load-balancing.

  8. Clique em Save.

gcloud

Use o comando gcloud resource-manager org-policies allow:

gcloud resource-manager org-policies allow \
  run.allowedIngress internal \
  --organization ORGANIZATION_ID

ORGANIZATION_ID é o ID da organização. Se você também quiser permitir o tráfego do Cloud Load Balancing, substitua run.allowedIngress internal por run.allowedIngress internal-and-cloud-load-balancing.

Assim que essa política da organização estiver em vigor, todos os serviços precisarão usar valores permitidos para as configurações de entrada. Isso significa que os serviços do Cloud Run só podem aceitar tráfego proveniente de uma rede VPC dentro do perímetro de serviço. As tentativas de definir a entrada para um valor diferente serão bloqueadas pela política da organização.

Como restringir as configurações permitidas de saída do conector de VPC

A política da organização run.allowedVPCEgress controla as configurações de saída que os desenvolvedores têm permissão para usar no Cloud Run. Defina a política da organização para permitir apenas o valor all-traffic:

Console

  1. Acesse a página da política Configurações de saída permitidas de VPC (Cloud Run) no Console do Cloud:

    Acessar a política da organização

  2. Clique em Editar.

  3. Na página Editar, selecione Personalizar.

  4. Em Aplicação da política, selecione Substituir.

  5. Em Valores da política, selecione Personalizada.

  6. Em Tipo de política, selecione Permitir.

  7. Em Valores personalizados, digite all-traffic.

  8. Clique em Salvar.

gcloud

Use o comando gcloud resource-manager org-policies allow:

gcloud resource-manager org-policies allow \
  run.allowedVPCEgress all-traffic \
  --organization ORGANIZATION_ID

ORGANIZATION_ID é o ID da organização.

Comportamento depois que a política da organização for definida

Depois que a política da organização estiver em vigor, todas as novas revisões precisarão usar um conector de VPC e o valor all-traffic para as configurações de saída. Essa combinação de configurações roteia todo o tráfego de saída dessas revisões por uma rede VPC, respeitando esse tráfego para as regras de firewall da rede VPC e outras configurações. Novas implantações de revisão que especificam um valor diferente serão bloqueadas pela política da organização.

Migrações da política da organização e do tráfego

No caso dos serviços que já existiam antes de a política da organização ser definida, é possível continuar a migração do tráfego para revisões que não estão em conformidade até que todas as revisões que veiculam tráfego sejam compatíveis.

Esse comportamento permite que você teste e lance gradualmente novas revisões que estejam em conformidade com a política. Depois que todas as revisões que veiculam tráfego estiverem em conformidade com a política, qualquer tentativa de mover o tráfego para revisões de não conformidade será bloqueada pela política da organização.

Como configurar o projeto para ser compatível com o VPC Service Controls

Para projetos individuais no perímetro de serviço, realize outras configurações para usar o VPC Service Controls.

Como configurar redes VPC

Esta seção mostra como configurar sua rede VPC para que as solicitações enviadas para o endereço de e-mailgoogleapis.com o IP virtual é roteado automaticamente para o ambiente restrito,intervalo de IP virtual restrito (VIP) ,199.36.153.4/30 (restricted.googleapis.com ) em que seu serviço do Cloud Run está sendo exibido. Observe que não é necessário fazer alterações no código.

Para cada rede VPC de um projeto, siga estas etapas para bloquear o tráfego de saída, exceto o tráfego para o intervalo VIP restrito:

  1. Configure as regras de firewall para impedir que os dados saiam da rede VPC:

    • Crie uma regra de saída de negação que bloqueie todo o tráfego de saída.

    • Crie uma regra de saída de permissão em que seja possível rotear o tráfego para 199.36.153.4/30 na porta 443 do TCP. Confira se ele tem uma prioridade antes da regra de saída de negação criada. Isso permite a saída somente para o intervalo VIP restrito.

  2. Configure o DNS para resolver *.googleapis.com em restricted.googleapis.com.

  3. Configure o DNS com um mapeamento de registro A *.run.app no intervalo de IP 199.36.153.4/30. Faça isso com o Cloud DNS:

    gcloud dns managed-zones create ZONE_NAME \
    --visibility=private \
    --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/networks/default \
    --description=none \
    --dns-name=run.app
    
    gcloud dns record-sets transaction start --zone=ZONE_NAME
    
    gcloud dns record-sets transaction add --name=*.run.app. \
    --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
    --zone=ZONE_NAME \
    --ttl=300
    
    gcloud dns record-sets transaction execute --zone=ZONE_NAME
    

Nesta etapa, as solicitações provenientes da rede VPC:

  • não podem sair da rede VPC, impedindo a saída fora do perímetro de serviço;
  • só podem alcançar APIs e serviços do Google que verificam o VPC Service Controls, evitando a exfiltração pelas APIs do Google.

Como implantar serviços do Cloud Run em conformidade com o VPC Service Controls

Depois que o VPC Service Controls estiver configurado para o Cloud Run, verifique se todos os serviços implantados no perímetro de serviço ativam o VPC Service Controls. O que isso significa:

  • Todas as funções precisam usar um conector acesso VPC sem servidor. Consulte Como se conectar a uma rede VCP para mais informações.
  • Todas as funções precisam permitir somente o tráfego de fontes internas. Consulte Configurações de entrada para mais informações.
  • Todas as funções precisam rotear todo o tráfego de saída pela rede VPC. Consulte Configurações de saída para mais informações.

Como fazer auditoria de serviços atuais de conformidade com o VPC Service Controls

Depois de configurar o VPC Service Controls, os novos serviços criados em projetos dentro do perímetro de serviço são automaticamente verificados para fins de conformidade. No entanto, para evitar a interrupção das cargas de trabalho em andamento, os serviços atuais continuam funcionando e podem não estar em conformidade com as políticas da organização.

O Google recomenda que você audite periodicamente seus serviços para garantir que as configurações de entrada e saída estejam em conformidade com os requisitos e atualize ou reimplante os serviços conforme necessário. Por exemplo, é possível criar um script que use a API Cloud Run Admin para listar seus serviços e destacar aqueles que não especificam as configurações de rede adequadas.