Segurança do ambiente de execução

Cada função é executada em uma imagem de ambiente de execução com controle de versões no ambiente de execução seguro do Cloud Functions. As imagens do ambiente de execução contêm bibliotecas do sistema operacional, ambientes de execução da linguagem e outros pacotes do sistema. O Google mantém todas as imagens do ambiente de execução do Cloud Functions, lançando patches de segurança e atualizações de manutenção após um período de testes de estabilidade.

Imagens do ambiente de execução

Cada ambiente de execução tem uma imagem associada (também conhecida como imagem de execução) em um repositório público em gcr.io. Para ver uma lista de IDs de ambiente de execução e as respectivas imagens, consulte Ambientes de execução.

Identificar a imagem do ambiente de execução

É possível identificar a imagem de ambiente de execução usada para criar a função inspecionando os registros de criação da função.

Nos registros de criação, pesquise google.run-image. Isso fornece a entrada de registro da etapa de criação que descreve a versão da imagem do ambiente de execução usada para criar a função. Por exemplo, uma entrada de registro de uma função do Nodejs pode ser assim:

{
  ...
  "textPayload": "Step #2 - \"build\": Adding image label google.run-image:
    us.gcr.io/gae-runtimes/buildpacks/nodejs20/run:nodejs20_20230924_20_6_1_RC00",
  ...
}

Política de atualização de segurança

Você pode escolher uma das seguintes políticas de atualização de segurança:

  • Atualizações automáticas: (padrão) as atualizações e os patches de segurança no ambiente de execução são publicados em novas versões da imagem do ambiente de execução. Após um período de testes de estabilidade e confiabilidade, o ambiente de execução atualizado é lançado para todas as funções, resultando em uma atualização sem inatividade. As atualizações automáticas de segurança estão disponíveis para o Cloud Functions (1ª geração) e Cloud Functions (2ª geração). Para assumir correções de segurança no nível de linguagem, pode ser necessário recriar funções que usam linguagens compiladas, como Go ou Java.

  • Atualizações na implantação: as atualizações e os patches de segurança são aplicados aos ambientes de execução somente quando as funções são implantadas ou reimplantadas, a menos que indicado de outra forma. As atualizações na implantação estão disponíveis no Cloud Functions (1ª geração) e no Cloud Functions (2ª geração).

É possível alterar a política de atualização do ambiente de execução usando a flag --runtime-update-policy no comando gcloud deploy.

Definir a política de atualização da função

É possível alterar a política de atualização da função incluindo a flag --runtime-update-policy no comando gcloud deploy, conforme mostrado abaixo:

  gcloud functions deploy FUNCTION_NAME \
    --runtime-update-policy=POLICY ...

Substitua:

  • FUNCTION_NAME pelo nome da função
  • POLICY por automatic ou on-deploy

A política padrão para todas as funções é automatic.

Inspecionar a política de atualização da função

É possível inspecionar a política de atualização da função com o seguinte comando:

  gcloud functions describe FUNCTION_NAME \

Em que FUNCTION_NAME é o nome da função

  • As funções com atualizações de segurança automáticas ativadas terão a chave automaticUpdatePolicy
  • As funções atualizadas na implantação terão a chave onDeployUpdatePolicy

Identificar a imagem do ambiente de execução usada após uma atualização automática

Quando você ativa as atualizações automáticas, o Cloud Functions troca a imagem do ambiente de execução da função por uma revisão mais recente que contém outros patches e atualizações de segurança. Essa alteração aparece nos registros do ambiente de execução da função.

Nos registros do ambiente de execução, o rótulo runtime_version informa quando uma nova imagem de ambiente de execução está em uso na função. Uma entrada de registro para uma função do Nodejs que foi atualizada automaticamente pode ser assim:

{
  ...
  "labels:" {
    runtime_version: nodejs20_20230924_20_6_1_RC00
    execution_id: ...
  }
  ...
}

Verificações de segurança no Cloud Functions (2ª geração)

O Cloud Functions (2ª geração) que tem atualizações automáticas ativadas é criado com base em uma imagem scratch. Como resultado, o contêiner que representa a função no Artifact Registry não terá uma imagem base e será consideravelmente menor do que as funções que usam atualizações na implantação. A imagem base é combinada com a imagem da função no ambiente de execução para criar uma função completa.

É possível usar verificações de segurança para monitorar as imagens base gerenciadas pelo Google que impulsionam sua função. A imagem base mais recente da função está disponível em gcr.io/serverless-runtimes/RUNTIME_ID/run.

Substitua:

  • RUNTIME_ID pelo ID do ambiente de execução usado pela função como, por exemplo, python310.

Como a imagem agora foi criada com base no scratch, a imagem armazenada no Artifact Registry não poderá ser executada diretamente. Se você precisar de uma imagem executável, use a política na implantação.