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. O URL run.app padrão e os domínios personalizados estão sujeitos ao VPC Service Controls. 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 avisos

  • 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.

  • Quando os serviços do Cloud Run são invocados, a aplicação da política do VPC Service Controls não usa as informações de autenticação do IAM do cliente. Essas solicitações têm as seguintes limitações:

    • As regras da política de entrada do VPC Service Controls que usam os principais do IAM não são compatíveis.
    • Não há suporte aos níveis de acesso de perímetros do VPC Service Controls que usam principais do IAM.

Como configurar sua organização para dar suporte ao 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. Ao configurar políticas da organização apropriadas, é possível garantir que as verificações do VPC Service Controls sejam aplicadas ao usar o Cloud Run e que os desenvolvedores só possam implantar serviços compatíveis com o VPC Service Controls. Saiba mais sobre herança e violações ao definir uma política da organização.

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. No console do Google Cloud, acesse a página VPC Service Controls.

    Acessar a página "VPC Service Controls"

  3. Se solicitado, selecione a Organização.

  4. Clique em Gerenciar políticas de acesso. Selecione ou crie uma política de acesso. A política de acesso precisa incluir todos os projetos que você quer adicionar ao perímetro.

  5. Clique em Novo perímetro. Digite um nome para o perímetro.

  6. Selecione os projetos que você quer proteger no perímetro.

    1. Clique em Projetos.

    2. Na janela Adicionar projetos, selecione os projetos que você quer adicionar.

      Se você estiver usando uma VPC compartilhada, adicione o projeto host e os projetos de serviço.

    3. Clique no botão Adicionar projetos.

  7. Selecione o Cloud Run como o serviço que você quer proteger no perímetro.

    1. Clique em Serviços restritos.

    2. Clique em Adicionar serviços.

    3. Pesquise "Cloud Run". Em seguida, selecione API Cloud Run Admin.

    4. Clique em Adicionar API Cloud Run Admin.

  8. 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:

    1. Clique em Política de entrada.

    2. Especifique a Origem, Identidade, o Projeto e os Serviços.

    3. Clique em Add Rule.

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

  9. Clique em Criar perímetro.

Depois de concluir essas etapas, todas as chamadas para a API Cloud Run Admin serão verificadas para garantir que sejam originadas no mesmo perímetro.

Configurar políticas da organização

Para gerenciar as políticas da organização, é necessário ter 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.

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 Run. Definir essa política da organização para exigir que os desenvolvedores usem o valor internal Para permitir apenas solicitações internas ou internal-and-cloud-load-balancing Se você quiser permitir solicitações por meio de um balanceador de carga de aplicativo externo, 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 Google 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 Salvar.

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.

Restringir as configurações de saída de VPC permitidas

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 Google 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 a saída de VPC direta ou um conector de acesso VPC sem servidor e o valor all-traffic para as configurações de saída. Essa combinação roteia todo o tráfego de saída dessas revisões por uma rede VPC, aplicando a esse tráfego as regras de firewall da rede VPC e outras configurações. Novas implantações de revisão que especificam um valor diferente sã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 testar e lançar 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 sem 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.

Configurar redes VPC

Esta seção mostra como configurar sua rede VPC para que as solicitações enviadas ao IP virtual regular googleapis.com sejam roteadas automaticamente para o intervalo de IPs virtuais (VIP) restrito, 199.36.153.4/30 (restricted.googleapis.com), em que o serviço do Cloud Run está sendo exibido. Nenhuma alteração no código será necessária.

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. Ative o Acesso privado do Google nas sub-redes que hospedam os recursos da rede VPC.

  2. 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 permissão de saída em que seja possível rotear o tráfego para 199.36.153.4/30 na porta 443 do TCP. Confira se ela tem uma prioridade antes da regra de negação de saída criada. Isso permite que o tráfego de saída seja enviado apenas ao intervalo VIP restrito.

  3. Crie uma política de resposta do Cloud DNS.

    gcloud dns response-policies create RESPONSE_POLICY \
    --networks=NETWORK \
    --description=DESCRIPTION
    

    Substitua:

    • RESPONSE_POLICY: um nome para a política de resposta.
    • NETWORK: o nome da rede a ser associada a essa política. Para especificar várias redes, separe os nomes de cada rede por vírgulas, por exemplo: network1,network2.
    • DESCRIPTION: uma descrição da política de resposta, como Cloud Run VPC Service Controls response policy.
  4. Adicione uma regra à política de resposta para resolver *.googleapis.com para restricted.googleapis.com. O intervalo de endereços IP de restricted.googleapis.com é 199.36.153.4/30.

    gcloud dns response-policies rules create RESPONSE_POLICY_RULE \
    --response-policy=RESPONSE_POLICY \
    --dns-name="*.googleapis.com." \
    --local-data=name="restricted.googleapis.com.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
    

    Substitua:

    • RESPONSE_POLICY_RULE: um nome para a regra de política de resposta.
    • RESPONSE_POLICY: o nome da política de resposta que você criou na etapa anterior, entre aspas.
  5. Adicione uma regra à política de resposta para resolver *.run.app para restricted.googleapis.com. O intervalo de endereços IP de restricted.googleapis.com é 199.36.153.4/30.

    gcloud dns response-policies rules create RESPONSE_POLICY_RULE \
    --response-policy=RESPONSE_POLICY \
    --dns-name="*.run.app." \
    --local-data=name="restricted.googleapis.com.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
    

    Substitua:

    • RESPONSE_POLICY_RULE: um nome para a regra de política de resposta.
    • RESPONSE_POLICY: o nome da política de resposta que você especificou na etapa anterior, entre aspas.

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.

Implantar serviços e jobs 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 e jobs do Cloud Run implantados no perímetro de serviço ativam o VPC Service Controls. Isso requer o seguinte:

  • Os serviços e jobs do Cloud Run precisam usar a saída VPC direta ou um conector de acesso VPC sem servidor. Consulte Como se conectar a uma rede VCP para mais informações.
  • Os serviços e jobs do Cloud Run precisam rotear todo o tráfego de saída pela rede VPC. Consulte Configurações de saída para mais informações.
  • Os serviços do Cloud Run precisam permitir apenas o tráfego de fontes internas. Consulte Configurações de entrada para mais informações. Definir a entrada como "todos" desativa a aplicação do VPC Service Controls.

Como fazer auditoria da conformidade de serviços atuais 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.