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.
Verifique se você tem os papéis necessários para administrar o VPC Service Controls.
No console do Google Cloud, acesse a página VPC Service Controls.
Se solicitado, selecione a Organização.
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.
Clique em Novo perímetro. Digite um nome para o perímetro.
Selecione os projetos que você quer proteger no perímetro.
Clique em Projetos.
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.
Clique no botão Adicionar projetos.
Selecione o Cloud Run como o serviço que você quer proteger no perímetro.
Clique em Serviços restritos.
Clique em Adicionar serviços.
Pesquise "Cloud Run". Em seguida, selecione API Cloud Run Admin.
Clique em Adicionar API Cloud Run Admin.
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:
Clique em Política de entrada.
Especifique a Origem, Identidade, o Projeto e os Serviços.
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.
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
Acesse a página de políticas Configurações de entrada permitidas (Cloud Run) no Console do Google Cloud:
Clique em Editar.
Na página Editar, selecione Personalizar.
Em Aplicação da política, selecione Substituir.
Em Valores da política, selecione Personalizada.
Em Tipo de política, selecione Permitir.
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 insirainternal-and-cloud-load-balancing
.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
Acesse a página da política Configurações de saída permitidas de VPC (Cloud Run) no Console do Google Cloud:
Clique em Editar.
Na página Editar, selecione Personalizar.
Em Aplicação da política, selecione Substituir.
Em Valores da política, selecione Personalizada.
Em Tipo de política, selecione Permitir.
Em Valores personalizados, digite
all-traffic
.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 um 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 a rede VPC para que
as solicitações enviadas aos domínios de googleapis.com
regular 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:
Ative o Acesso privado do Google nas sub-redes que hospedam os recursos da rede VPC.
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.
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, comoCloud Run VPC Service Controls response policy
.
Adicione uma regra à política de resposta para resolver
*.googleapis.com
pararestricted.googleapis.com
. O intervalo de endereços IP derestricted.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.
Adicione uma regra à política de resposta para resolver
*.run.app
pararestricted.googleapis.com
. O intervalo de endereços IP derestricted.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.