Visão geral do design de segurança

Saiba como o Cloud Run implementa as práticas recomendadas de segurança para proteger seus dados e explore como usar esses recursos para atender aos requisitos de segurança.

Arquitetura

O Cloud Run é executado no Borg no mesmo ambiente em que o Google implanta bilhões de contêineres por semana, hospedando alguns dos maiores sites do mundo, incluindo o Gmail e o YouTube. Como os componentes do Cloud Run compartilham a mesma infraestrutura, eles são criados com os mesmos padrões de segurança que outros serviços do Google.

Para saber mais sobre nossa abordagem de segurança, leia o whitepaper Visão geral da segurança do Google.

A arquitetura do Cloud Run contém muitos componentes de infraestrutura diferentes. O diagrama a seguir mostra como esses componentes respondem a solicitações para seu serviço e chamadas da API Cloud Run Admin:

Diagrama dos componentes da infraestrutura do Cloud Run
Figura 1. Diagrama dos componentes da infraestrutura do Cloud Run.

Solicitações para seu serviço

Quando uma solicitação é feita ao serviço do Cloud Run por meio do domínio personalizado ou diretamente do URL run.app, a solicitação é processada pelos seguintes componentes:

  • Google Front End (GFE): o serviço de infraestrutura global do Google que encerra as conexões TLS e aplica proteções contra ataques DoS quando você faz uma solicitação ao URL run.app. O Cloud Run é um serviço regional. Portanto, quando uma solicitação é acessada por meio do URL run.app, o GFE encaminha a solicitação para o Cloud Run na região apropriada.
  • Balanceador de carga do Google Cloud: ao configurar o Cloud Load Balancing para lidar com seu domínio personalizado, ele inclui a funcionalidade do GFE mencionada anteriormente. Também é possível configurar balanceadores de carga do Google Cloud para executar outras funções, como gerenciamento de tráfego e controle de acesso.
  • Proxy HTTP: um componente zonal que faz o balanceamento de carga das solicitações HTTP recebidas para as instâncias dos aplicativos no sandbox.
  • Programador: seleciona os servidores de apps para hospedar instâncias dos aplicativos no sandbox.
  • Servidor de aplicativos: um nó de computação por zona e de vários locatários que cria e gerencia os sandboxes que executam as instâncias do contêiner de cada aplicativo.
  • Sandbox: isola o código do usuário do sistema e de outros clientes. Saiba mais na seção Segurança do Compute a seguir.
  • Armazenamento: expõe uma interface do servidor de arquivos para imagens de contêiner importadas dos registros de contêineres compatíveis.
  • Servidor de metadados: fornece credenciais e metadados específicos do sandbox.
  • Rede de saída: gerencia o tráfego de saída iniciado pelo sandbox.

Chamadas da API Cloud Run Admin

Quando uma solicitação é feita à API Cloud Run Admin, ela é processada pelos seguintes componentes:

  • Google Front End (GFE): o serviço de infraestrutura global do Google que encerra conexões TLS e aplica proteções contra ataques de DoS.
  • Plano de controle: valida e grava as configurações do aplicativo no armazenamento.
  • Armazenamento de configuração: armazena as configurações do aplicativo no Spanner e no Bigtable para acesso por outros componentes, como o servidor do aplicativo, programador e elementos de rede.

Segurança de computação

Os componentes do Cloud Run são executados no sistema de gerenciamento de contêineres do Google, o Borg. Para seus contêineres, o Cloud Run oferece dois ambientes de execução:

  • Primeira geração: com base na plataforma de segurança de contêineres gVisor, essa opção tem uma pequena base de código, que fornece uma superfície de ataque menor. Todas as alterações são revisadas com segurança, e a maioria delas é gravada com proteção da memória. Para aumentar a proteção, use a filtragem de chamadas do modo de computação segura (seccomp).

  • Segunda geração: baseada em microVMs do Linux, essa opção oferece mais compatibilidade e desempenho para cargas de trabalho personalizadas. Para aumentar a proteção, use a filtragem de chamadas do sistema seccomp e os namespaces do Linux Sandbox2.

Esses dois ambientes de execução usam duas camadas de sandbox que consistem em uma camada com suporte de hardware equivalente a VMs individuais (virtualização x86) e uma camada de kernel de software, conforme mostrado no diagrama a seguir:

Nos dois ambientes
      de execução, o contêiner do usuário é isolado de outras cargas de trabalho por meio de
      duas camadas de sandbox.
Figura 2. Nos dois ambientes de execução, o contêiner do usuário é isolado de outras cargas de trabalho por meio de duas camadas de sandbox.

Se seu serviço usa infraestrutura de terceiros para proteger contêineres, use o ambiente de execução de segunda geração.

Armazenamento e criptografia de dados

As instâncias do Cloud Run não têm estado. O encerramento de uma instância descarta o estado dela. Portanto, todas as novas instâncias são iniciadas a partir de um modelo limpo.

Se você tiver dados com estado, poderá gerenciá-los das seguintes maneiras:

Além disso, o Cloud Run se integra a muitos outros sistemas do Google Cloud para gerenciar e acessar seus dados das seguintes maneiras:

No Google Cloud, todos os dados são criptografados em repouso.

O Cloud Run está em conformidade com as iniciativas do Google Cloud de proteção e transparência de dados, incluindo transparência no acesso e residência de dados.

Segurança de rede

O Cloud Run e todos os outros serviços do Google Cloud criptografam todo o tráfego em trânsito. É possível incorporar controles de saída e entrada aos serviços ou jobs do Cloud Run para adicionar uma camada extra de restrição. Os administradores da organização também podem aplicar as políticas da organização para aplicar a saída e a entrada.

Tráfego de saída (envio)

O tráfego de saída que sai do Cloud Run é tratado como camada de transporte 4 (TCP e UDP).

Por padrão, o tráfego de saída segue um dos seguintes caminhos ao sair do Cloud Run:

  • O destino está na rede VPC: o tráfego viaja para uma rede VPC ou rede VPC compartilhada no projeto usando a saída direta da VPC ou uma Conector de acesso VPC sem servidor. O conector é um recurso regional localizado diretamente na rede VPC.
  • O destino não está na rede VPC: o tráfego é direcionado diretamente para o destino na rede do Google ou na Internet pública.
Diagrama dos componentes da infraestrutura do Cloud Run
Figura 3. O tráfego de saída pode ser encaminhado por proxy por um conector para uma rede VPC. Ela também pode ir diretamente para uma VPC ou uma rede não VPC (pré-lançamento).

Como controlar a saída

Para ter mais controle sobre o tráfego de saída, use a configuração de saída de VPC para encaminhar todo o tráfego para sua rede VPC usando conectores ou saída de VPC direta.

Quando ele estiver na rede VPC, será possível usar ferramentas de VPC para gerenciar o tráfego, por exemplo:

Os administradores da organização também podem aplicar a saída definindo a restrição da lista de configurações de saída da VPC permitidas (Cloud Run).

Tráfego de entrada (recebimento)

Ao contrário da saída, o tráfego de entrada do Cloud Run está na camada 7 do aplicativo (HTTP).

O Cloud Run aceita tráfego de entrada recebido das seguintes origens:

  • Internet pública: as solicitações são encaminhadas diretamente de fontes públicas para seus serviços do Cloud Run com a opção de rotear o tráfego por meio de um balanceador de carga HTTP(S) externo.

  • Rede VPC: é possível rotear o tráfego de uma rede VPC para os serviços do Cloud Run usando o Acesso privado do Google, o Private Service Connect ou um Balanceador de carga de aplicativo interno. O tráfego desse tipo sempre fica na rede do Google.

  • Serviços do Google Cloud: o tráfego viaja diretamente para o Cloud Run a partir de outros serviços do Google Cloud, como o BigQuery ou até mesmo o próprio Cloud Run. Em alguns casos, também é possível configurar esses serviços para rotear por uma rede VPC. O tráfego desse tipo sempre fica dentro da rede do Google.

Diagrama dos componentes da infraestrutura do Cloud Run
Figura 4. Tráfego de entrada (recebimento) da rede HTTP da camada 7 para o Cloud Run.

O modelo de segurança de rede do Cloud Run inclui as seguintes propriedades de tráfego de entrada:

  • Tráfego direto para o URLrun.app: o URL run.app sempre requer HTTPS para que o tráfego entre no Cloud Run. A infraestrutura de serviços de front-end do Google encerra o TLS e encaminha o tráfego para o Cloud Run e o contêiner por meio de um canal criptografado.
  • Tráfego para um domínio personalizado associado ao seu balanceador de carga do Google Cloud: para o tráfego HTTPS, os balanceadores de carga internos e externos do Google Cloud encerram o TLS e encaminham o tráfego para o Cloud Run e o contêiner por meio de um canal criptografado. Os balanceadores de carga do Google Cloud também permitem aplicar outros recursos de segurança, como o IAP, o Google Cloud Armor e as políticas de SSL.

Para mais informações sobre como configurar o tráfego de rede VPC para o Cloud Run, consulte Receber solicitações de redes VPC.

Como controlar a entrada

Os controles de entrada do Cloud Run gerenciam qual tráfego entra no Cloud Run para garantir que ele venha apenas de fontes confiáveis.

Para os serviços do Cloud Run que atendem apenas clientes internos, é possível definir a configuração "interna" para que apenas o tráfego das seguintes fontes internas possa entrar no Cloud Run:

  • Redes VPC no seu projeto ou perímetro do VPC Service Controls, incluindo serviços do Cloud Run que encaminham todo o tráfego por meio da rede VPC.
  • A rede VPC compartilhada à qual o serviço do Cloud Run está anexado.
  • Alguns serviços do Google Cloud, como o BigQuery, que estão no projeto ou no perímetro do VPC Service Controls.
  • Tráfego de clientes locais que atravessam sua rede VPC para chegar ao Cloud Run.

Os administradores da organização também podem aplicar a entrada definindo as políticas da organização.

Para mais informações sobre como controlar a entrada, consulte Como restringir a entrada no Cloud Run.

Controle de acesso

Os controles de acesso são usados para restringir quem tem acesso aos serviços e jobs do Cloud Run.

Quem pode gerenciar seu serviço ou job

Para controlar quem gerencia o serviço ou job do Cloud Run, o Cloud Run usa o IAM para autorizar usuários e contas de serviço.

O que seu serviço ou job pode acessar

Para controlar o que as cargas de trabalho do Cloud Run podem alcançar pela rede, é possível forçar todo o tráfego pela rede VPC e aplicar regras de firewall da VPC, conforme descrito anteriormente em Segurança de rede.

Se você estiver usando a saída de VPC direta, será possível anexar tags de rede ao recurso do Cloud Run e fazer referência às tags de rede na regra de firewall. Se você estiver usando o acesso VPC sem servidor, poderá aplicar regras de firewall às instâncias do conector.

Use o IAM para controlar quais recursos o serviço ou job do Cloud Run pode acessar. Os serviços e os jobs usam a conta de serviço padrão do Compute Engine por padrão. Para cargas de trabalho confidenciais, use uma conta de serviço dedicada para que você possa conceder apenas as permissões necessárias para que a carga de trabalho funcione. Saiba mais sobre como usar a identidade por serviço para gerenciar uma conta de serviço dedicada. Para informações sobre como o Cloud Run lembra os usuários de criar uma conta de serviço dedicada, consulte Proteger serviços do Cloud Run com o Recomendador.

Quem pode invocar seu serviço ou executar seu job

O Cloud Run fornece várias opções diferentes para controlar quem invoca o serviço ou executa o job.

Controles de entrada

Para gerenciar a entrada dos serviços do Cloud Run no nível da rede, consulte Como controlar a entrada na seção anterior.

Os jobs do Cloud Run não veiculam solicitações e, portanto, não usam controles de entrada ao executar jobs.

IAM para seu serviço

O Cloud Run executa uma verificação do IAM em cada solicitação.

Use a permissão run.routes.invoke para configurar quem pode acessar o serviço do Cloud Run das seguintes maneiras:

  • Conceda a permissão para selecionar contas de serviço ou grupos para permitir o acesso ao serviço. Todas as solicitações precisam ter um cabeçalho de autorização HTTP com um token do código do OpenID Connect assinado pelo Google para uma das contas de serviço autorizadas.

  • Conceda a permissão a todos os usuários para permitir o acesso não autenticado.

Para garantir que apenas membros da sua organização possam invocar um serviço do Cloud Run, um administrador da organização pode definir a política da organização Compartilhamento restrito de domínio. Os administradores da organização também podem desativar serviços específicos do Cloud Run. Saiba como criar serviços públicos do Cloud Run quando o compartilhamento restrito de domínio for aplicado.

Saiba mais sobre casos de uso comuns para autenticação e como o Cloud Run usa o controle de acesso com o IAM.

Recursos de segurança do balanceador de carga para seu serviço

Se você configurou um serviço do Cloud Run como back-end para um balanceador de carga do Google Cloud, proteja esse caminho usando os seguintes métodos:

IAM para o job

Use a permissão run.jobs.run para configurar quem pode executar o job do Cloud Run das seguintes maneiras:

  • Conceda a permissão para selecionar contas de serviço ou grupos para permitir o acesso ao job. Se o job for acionado por outro serviço, como o Cloud Scheduler, a conta de serviço usada precisará ter a permissão run.jobs.run no job.

  • Conceda permissão ao usuário conectado para executar um job no console do Google Cloud. Se o job for acionado por outro serviço, como o Cloud Scheduler, a conta de serviço ou o grupo usado precisará ter a permissão run.jobs.run no job.

Para garantir que apenas os membros da sua organização possam executar um job do Cloud Run, um administrador da organização pode definir a restrição de Compartilhamento restrito de domínio. Os administradores da organização também podem desativar jobs específicos do Cloud Run.

VPC Service Controls

Os serviços do Cloud Run podem fazer parte de um perímetro do VPC Service Controls para que você possa usá-lo para bloquear o acesso e reduzir o risco de exportação. Saiba mais sobre como usar o VPC Service Controls.

Segurança da cadeia de suprimentos

Imagens de base gerenciadas por pacotes do Google Cloud

Os serviços implantados do código-fonte usando buildpacks do Google Cloud são criados usando imagens de base fornecidas pelo Google. O Google mantém essas imagens de base e fornece patches de rotina uma vez por semana. Em situações de emergência que envolvem vulnerabilidades de segurança críticas, disponibilizamos patches em horas.

Segurança da cadeia de suprimentos interna do Cloud Run

Por ser executado no Borg, o Cloud Run implementa a mesma segurança de cadeia de suprimentos padrão em todos os serviços do Google, como o Gmail e o YouTube. Leia mais sobre as práticas internas da cadeia de suprimentos do Google nos whitepapers BeyondProd e Autorização binária para o Borg.

Autorização binária

O Cloud Run tem suporte integrado para autorização binária para garantir que apenas imagens de contêiner confiáveis sejam implantadas no Cloud Run. Leia mais em Visão geral da configuração do Cloud Run.

Software Delivery Shield

Com o Software Delivery Shield, os administradores do Cloud podem ver informações de segurança sobre a cadeia de suprimentos de contêineres implantados diretamente em um painel no Console do Google Cloud. Leia mais em Ver detalhes do Software Delivery Shield.

A seguir

Para ver instruções completas de como configurar a rede, consulte o Guia de rede sem servidor do Cloud Run.