Segurança do ambiente de execução

Todas as funções são executadas sobre uma imagem de tempo de execução com controlo de versões no ambiente de execução seguro das funções do Cloud Run. As imagens de tempo de execução contêm bibliotecas do sistema operativo, tempos de execução de linguagem e outros pacotes do sistema. A Google mantém todas as imagens de tempo de execução das funções do Cloud Run, lançando patches de segurança e atualizações de manutenção após um período de testes de estabilidade.

Imagens do tempo de execução

Cada tempo de execução tem uma imagem de tempo de execução associada (também conhecida como imagem de execução) num repositório público no gcr.io. Para ver uma lista de IDs de tempo de execução e as respetivas imagens de tempo de execução, consulte tempos de execução.

Identifique a sua imagem de tempo de execução

Pode identificar a imagem de tempo de execução usada para criar a sua função inspecionando os registos de compilação da função.

Nos registos de compilação, pesquise google.run-image. Isto dá-lhe a entrada de registo do passo de compilação que descreve a versão da imagem do tempo de execução usada para compilar a sua função. Por exemplo, uma entrada de registo para uma função Nodejs pode ter o seguinte aspeto:

{
  ...
  "textPayload": "Step #2 - \"build\": Adding image label google.run-image:
    us.gcr.io/serverless-runtimes/google-22-full/runtimes/nodejs20:nodejs20_20241110_20_18_0_RC00
",
  ...
}

Política de atualizações de segurança

Pode escolher uma das seguintes políticas de atualização de segurança:

  • Atualizações automáticas (predefinição): as atualizações e os patches de segurança do 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 fiabilidade, o tempo de execução atualizado é implementado em todas as funções, o que resulta numa atualização sem tempo de inatividade. As atualizações de segurança automáticas estão disponíveis com as funções do Cloud Run (1.ª geração) e as funções do Cloud Run. Para implementar correções de segurança ao nível do idioma, pode ter de reconstruir funções que usam idiomas compilados, como Go ou Java.

  • Nas atualizações de implementação: as atualizações e os patches de segurança são aplicados aos tempos de execução apenas quando as funções são implementadas ou reimplementadas, salvo indicação em contrário. As atualizações sobre a implementação estão disponíveis nas funções do Cloud Run (1.ª geração) e nas funções do Cloud Run.

Pode alterar a política de atualização de tempo de execução através da flag --runtime-update-policy no comando gcloud functions deploy.

Defina a política de atualização da sua função

Se estiver a usar funções do Cloud Run (1.ª geração), pode alterar a política de atualização da função incluindo a flag --runtime-update-policy no comando gcloud deploy, conforme mostrado aqui:

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

Substituição:

  • FUNCTION_NAME com o nome da sua função
  • POLICY com automatic ou on-deploy

Inspeccione a política de atualização da sua função

Pode inspecionar a política de atualização da sua função com o seguinte comando:

  gcloud functions describe FUNCTION_NAME \

Onde FUNCTION_NAME é o nome da sua função

  • As funções com atualizações de segurança automáticas ativadas têm a chave automaticUpdatePolicy
  • As funções que são atualizadas na implementação têm a chave onDeployUpdatePolicy

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

Quando ativa as atualizações automáticas, o Cloud Run Functions troca a imagem de tempo de execução da sua função por uma revisão mais recente que contenha patches e atualizações de segurança adicionais. Esta alteração aparece nos registos de tempo de execução da sua função.

Nos registos de tempo de execução, a etiqueta runtime_version indica quando está a ser usada uma nova imagem de tempo de execução na sua função. Uma entrada do registo para uma função Node.js que foi atualizada automaticamente pode ter o seguinte aspeto:

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