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:
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 URLrun.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:
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:
- Armazene dados com estado em serviços de armazenamento externo, como o Cloud SQL ou o Memorystore.
- Integre-se ao Secret Manager para realizar o armazenamento seguro de dados confidenciais, como chaves de API e senhas.
Além disso, o Cloud Run se integra a muitos outros sistemas do Google Cloud para gerenciar e acessar seus dados das seguintes maneiras:
- Os dados de configuração do serviço são armazenados no Spanner e no Bigtable.
- Os dados de monitoramento e geração de registros são enviados para o Google Cloud Observability.
- As imagens de contêiner são importadas de registros de contêiner compatíveis e podem ser criptografadas opcionalmente usando chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês).
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.
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:
- Aplique regras de firewall ao tráfego do serviço ou altere a maneira como ele é roteado.
- Ative os registros de fluxo de VPC para inspecionar o tráfego.
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.
O modelo de segurança de rede do Cloud Run inclui as seguintes propriedades de tráfego de entrada:
- Tráfego direto para o URL
run.app
: o URLrun.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:
- Bloqueie o tráfego direto da Internet pública para o URL
run.app
configurando a entrada como uma das opções internas. - Desative o URL
run.app
padrão. - Se quiser, é possível ativar recursos de segurança no balanceador de carga do Google Cloud, como Google Cloud Armor, IAP e políticas de SSL
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.