Configure os VPC Service Controls (1.ª geração)
Os VPC Service Controls são uma Google Cloud funcionalidade que lhe permite configurar um perímetro seguro para se proteger contra a exfiltração de dados. Este guia mostra como usar os VPC Service Controls com as funções do Cloud Run para adicionar segurança adicional às suas funções.
Para ver as limitações desta integração, consulte a documentação do VPC Service Controls.
Configuração ao nível da organização
Para usar os VPC Service Controls com as funções do Cloud Run, pode configurar um perímetro de serviço ao nível da organização. Ao configurar políticas da organização adequadas, pode garantir que as verificações do VPC Service Controls são aplicadas quando usa funções do Cloud Run e que os programadores só podem implementar serviços em conformidade com o VPC Service Controls. Saiba mais acerca da herança e das violações quando define uma política organizacional.
Configure um perímetro do VPC Service Controls
Para configurar um perímetro de serviço, precisa das funções de
Visitante da organização
(roles/resourcemanager.organizationViewer
) e
Editor do Gestor de contexto de acesso
(roles/accesscontextmanager.policyEditor
).
Siga o guia de início rápido do VPC Service Controls para:
Crie um perímetro de serviço.
Adicione um ou mais projetos ao perímetro.
Restrinja a Cloud Functions API.
Depois de configurar o perímetro de serviço, todas as chamadas para a API restrita são verificadas para garantir que têm origem no mesmo perímetro.
Opcional: ative o acesso ao perímetro para máquinas de desenvolvimento
Uma vez que as verificações do VPC Service Controls são aplicadas à API Cloud Functions, as chamadas à API Cloud Functions falham, a menos que tenham origem no perímetro de serviço. Assim, para gerir funções com a API Cloud Functions, a IU de funções do Cloud Run na Google Cloud consola ou a CLI Google Cloud, escolha uma das seguintes opções:
Use uma máquina dentro do perímetro dos VPC Service Controls. Por exemplo, pode usar uma VM do Compute Engine ou uma máquina no local ligada à sua rede VPC através de uma VPN.
Conceder aos programadores de funções acesso ao perímetro. Por exemplo, pode criar níveis de acesso que ativem o acesso ao perímetro com base no endereço IP ou na identidade do utilizador. Consulte o artigo Permitir o acesso a recursos protegidos a partir do exterior de um perímetro para mais informações.
Configure políticas da organização
Para gerir políticas de organização, precisa da função
Administrador de políticas de organização
(roles/orgpolicy.policyAdmin
).
Para agir em conformidade com os VPC Service Controls e proteger contra a exfiltração de dados, configure as seguintes políticas da organização que controlam as definições de rede permitidas para funções do Cloud Run no perímetro de serviço.
Restrinja as definições de entrada permitidas
A política organizacional cloudfunctions.allowedIngressSettings
controla as
definições de entrada
que os programadores podem usar para as funções do Cloud Run. Defina esta política de organização para exigir que os programadores usem o valor ALLOW_INTERNAL_ONLY
:
Consola
Aceda à página da política Definições de entrada permitidas na Google Cloud consola:
Clique em Gerir política.
Na página Editar política, selecione Personalizar.
Em Aplicação de políticas, selecione Substituir.
Em Valores da política, selecione Personalizado.
Em Tipo de política, selecione Permitir.
Em Valores personalizados, introduza
ALLOW_INTERNAL_ONLY
.Clique em Definir política.
gcloud
Use o comando gcloud resource-manager org-policies allow
:
gcloud resource-manager org-policies allow \ cloudfunctions.allowedIngressSettings ALLOW_INTERNAL_ONLY \ --organization ORGANIZATION_ID
em que ORGANIZATION_ID
é o ID da sua organização.
Após a implementação desta política de organização, todas as funções têm de usar o valor
ALLOW_INTERNAL_ONLY
para as respetivas definições de entrada. Isto significa que as funções HTTP só podem aceitar tráfego proveniente de uma rede VPC dentro do perímetro de serviço. As implementações de funções que especifiquem um valor diferente falham.
Exigir conetor de VPC
A política da organização cloudfunctions.requireVPCConnector
controla se é necessário um
conetor do Acesso a VPC sem servidor
para as funções. Defina esta política de organização para aplicar esta restrição:
Consola
Aceda à página da política Exigir conetor de VPC na Google Cloud consola:
Clique em Gerir política.
Na página Editar política, selecione Personalizar.
Em Aplicação, selecione Ativar.
Clique em Definir política.
gcloud
Use o comando gcloud resource-manager org-policies enable-enforce
:
gcloud resource-manager org-policies enable-enforce \ cloudfunctions.requireVPCConnector \ --organization ORGANIZATION_ID
em que ORGANIZATION_ID
é o ID da sua organização.
Após a implementação desta política de organização, todas as funções têm de usar um conetor do Acesso a VPC sem servidor. As implementações de funções que não especificarem um conetor vão falhar.
Restrinja as definições de saída do conetor de VPC permitidas
A política da organização cloudfunctions.allowedVpcConnectorEgressSettings
controla as definições de saída que os programadores podem usar para as funções do Cloud Run. Defina esta política da organização para permitir apenas o valor ALL_TRAFFIC
:
Consola
Aceda à página da política Definições de saída do conetor de VPC permitidas na Google Cloud consola:
Clique em Gerir política.
Na página Editar política, selecione Personalizar.
Em Aplicação de políticas, selecione Substituir.
Em Valores da política, selecione Personalizado.
Em Tipo de política, selecione Permitir.
Em Valores personalizados, introduza
ALL_TRAFFIC
.Clique em Definir política.
gcloud
Use o comando gcloud resource-manager org-policies allow
:
gcloud resource-manager org-policies allow \ cloudfunctions.allowedVpcConnectorEgressSettings ALL_TRAFFIC \ --organization ORGANIZATION_ID
em que ORGANIZATION_ID
é o ID da sua organização.
Após a implementação desta política de organização, todas as funções têm de usar o valor
ALL_TRAFFIC
para as respetivas definições de saída. Isto significa que as funções têm de
encaminhar todo o tráfego de saída através da sua rede VPC. As implementações de funções que especifiquem um valor diferente falham.
Quando combinada com a política da organização cloudfunctions.requireVPCConnector
, esta opção força todo o tráfego de saída a atravessar a rede de VPC onde está sujeito às respetivas regras de firewall e de encaminhamento configuradas.
Configuração ao nível do projeto
Para projetos individuais dentro do perímetro de serviço, tem de fazer uma configuração adicional para usar os VPC Service Controls.
Configure redes VPC
Para aceder às APIs e aos serviços Google enquanto mitiga os riscos de exfiltração de dados, os pedidos devem ser enviados para o intervalo de IP virtual (VIP) restrito, 199.36.153.4/30
(restricted.googleapis.com
).
Para cada rede VPC num projeto, siga estes passos para bloquear o tráfego de saída, exceto o tráfego para o intervalo de VIPs restrito:
Configure regras de firewall para impedir que os dados saiam da rede de VPC:
Crie uma regra de negação de saída que bloqueie todo o tráfego de saída.
Crie uma regra de saída que permita o tráfego para
199.36.153.4/30
na porta TCP 443. Certifique-se de que tem uma prioridade antes da regra de saída de negação que acabou de criar. Isto permite a saída apenas para o intervalo de VIP restrito.
Configure o DNS para resolver
*.googleapis.com
pararestricted.googleapis.com
.Configure o DNS com um mapeamento de registo A
*.cloudfunctions.net
para o intervalo de IPs199.36.153.4/30
. Pode fazê-lo 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/VPC_NAME \ --description=none \ --dns-name=cloudfunctions.net gcloud dns record-sets transaction start --zone=ZONE_NAME gcloud dns record-sets transaction add --name=*.cloudfunctions.net. \ --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
Ative o acesso privado à Google para a sub-rede do conector de VPC.
Neste ponto, os pedidos originados na rede VPC:
- não conseguem sair da rede VPC, impedindo a saída fora do perímetro de serviço.
- Só podem alcançar as APIs e os serviços Google que verificam os VPC Service Controls, impedindo a exfiltração através das APIs Google.
Conceda à conta de serviço do Cloud Build acesso ao perímetro do VPC Service Controls
As funções do Cloud Run usam o Cloud Build para criar o seu código fonte num contentor executável. Para usar as funções do Cloud Run com os VPC Service Controls, tem de configurar a conta de serviço do Cloud Build para ter acesso ao seu perímetro de serviço:
Encontre o nome da conta de serviço
Use a página IAM na Google Cloud consola para encontrar a conta de serviço do Cloud Build.
Certifique-se de que o projeto correto é apresentado no menu pendente do projeto.
Pesquise
cloudbuild.gserviceaccount.com
. O endereço de email no formulárioPROJECT_NUMBER@cloudbuild.gserviceaccount.com
é o nome da conta de serviço.
Conceda à conta de serviço acesso ao perímetro de serviço
Depois de ter o nome da conta de serviço, siga o guia em Limite o acesso por utilizador ou conta de serviço para criar um nível de acesso para a conta de serviço. Em seguida, siga as instruções em "Adicionar um nível de acesso a um perímetro existente" para adicionar o nível de acesso ao seu perímetro de serviço.
Implemente funções compatíveis com os VPC Service Controls
Depois de configurar o VPC Service Controls para as funções do Cloud Run, tem de garantir que todas as funções implementadas no perímetro de serviço estão em conformidade com as políticas da organização especificadas. Isto significa que:
- Todas as funções têm de usar um conetor do Acesso a VPC sem servidor. Consulte o artigo Estabelecer ligação a uma rede VPC para mais informações.
- Todas as funções têm de permitir apenas tráfego de origens internas. Consulte as Definições de entrada para mais informações.
- Todas as funções têm de encaminhar todo o tráfego de saída através da rede VPC. Consulte as Definições de saída para mais informações.
As implementações de funções que não cumprirem estes critérios vão falhar.
Audite as funções existentes para garantir a conformidade com os VPC Service Controls
Após configurar o VPC Service Controls, as novas funções criadas em projetos dentro do perímetro de serviço são verificadas automaticamente quanto à conformidade. No entanto, para evitar a interrupção das cargas de trabalho existentes, as funções existentes continuam a funcionar e podem não estar em conformidade com as políticas da organização.
Recomendamos que audite as funções existentes e atualize ou volte a implementar as funções conforme necessário. Para facilitar este processo, pode criar um script que use a API Cloud Functions para listar as suas funções e realçar as que não especificam as definições de rede adequadas.
Usar os VPC Service Controls com funções fora de um perímetro
As secções anteriores aplicam-se ao cenário em que implementa funções do Cloud Run num perímetro de serviço do VPC Service Controls.
Se precisar de implementar uma função fora de um perímetro de serviço, mas a função requer acesso a recursos dentro de um perímetro, use a seguinte configuração:
- Conceda à conta de serviço do Cloud Build acesso ao perímetro do VPC Service Controls.
- Conceda à conta de serviço de tempo de execução da função acesso ao perímetro. Pode fazê-lo criando um nível de acesso e adicionando o nível de acesso ao perímetro de serviço ou criando uma política de entrada no perímetro.
- Associe a função a uma rede VPC.
- Encaminhar todo o tráfego de saída da função através da rede VPC. Consulte as Definições de saída para mais informações.
Depois de concluir esta configuração, a função vai poder aceder aos recursos protegidos pelo perímetro.