Sécurité de l'environnement d'exécution

Chaque fonction s'exécute sur une image d'exécution avec versions gérées dans l'environnement d'exécution sécurisé de Cloud Functions. Les images d'exécution contiennent des bibliothèques de systèmes d'exploitation, des environnements d'exécution de langages et d'autres packages système. Google conserve toutes les images d'exécution de Cloud Functions en publiant des correctifs de sécurité et des mises à jour de maintenance après une période de tests de stabilité.

Images d'exécution

Chaque environnement d'exécution est associé à une image d'exécution (également appelée image run) dans un dépôt public sur gcr.io. Pour obtenir la liste des ID d'exécution et de leurs images d'exécution, consultez la page Environnements d'exécution.

Identifier votre image d'exécution

Vous pouvez identifier l'image d'exécution utilisée pour créer votre fonction en inspectant les journaux de compilation de votre fonction.

Dans les journaux de compilation, recherchez google.run-image. Vous obtenez ainsi l'entrée de journal de l'étape de compilation qui décrit la version de l'image d'exécution utilisée pour compiler votre fonction. Par exemple, une entrée de journal pour une fonction Nodejs peut se présenter comme suit :

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

Règles concernant les mises à jour de sécurité

Vous pouvez choisir l'une des règles de mises à jour de sécurité suivantes:

  • Mises à jour automatiques (règle par défaut) : les mises à jour et les correctifs de sécurité de l'environnement d'exécution sont publiés dans de nouvelles versions de l'image d'exécution. Après une période de tests de stabilité et de fiabilité, l'environnement d'exécution mis à jour est déployé sur toutes les fonctions, ce qui évite les temps d'arrêt. Les mises à jour de sécurité automatiques sont disponibles avec Cloud Functions (1st gen) et Cloud Functions (2nd gen). Pour intégrer des correctifs de sécurité au niveau du langage, vous devrez peut-être recompiler des fonctions qui utilisent des langages compilés tels que Go ou Java.

  • Lors des mises à jour de déploiement : les mises à jour et les correctifs de sécurité ne sont appliqués aux environnements d'exécution que lorsque des fonctions sont déployées ou redéployées, sauf indication contraire. Les mises à jour sur déploiement sont disponibles à la fois sur Cloud Functions (1st gen) et sur Cloud Functions (2nd gen).

Vous pouvez modifier la stratégie de mise à jour de l'environnement d'exécution à l'aide de l'option --runtime-update-policy dans votre commande gcloud deploy.

Définir la règle de mise à jour de votre fonction

Vous pouvez modifier la règle de mise à jour de votre fonction en incluant l'option --runtime-update-policy dans votre commande gcloud deploy, comme indiqué ici:

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

Remplacez :

  • FUNCTION_NAME par le nom de votre fonction
  • POLICY par automatic ou on-deploy

La règle par défaut pour toutes les fonctions est automatic.

Inspecter la règle de mise à jour de votre fonction

Vous pouvez inspecter la règle de mise à jour de votre fonction à l'aide de la commande suivante :

  gcloud functions describe FUNCTION_NAME \

FUNCTION_NAME est le nom de la fonction.

  • Les fonctions pour lesquelles les mises à jour de sécurité automatiques sont activées auront la clé automaticUpdatePolicy
  • Les fonctions qui sont mises à jour lors du déploiement auront la clé onDeployUpdatePolicy.

Identifier l'image d'exécution utilisée après une mise à jour automatique

Lorsque vous activez les mises à jour automatiques, Cloud Functions remplace l'image d'exécution de votre fonction par une révision plus récente contenant des correctifs de sécurité et des mises à jour supplémentaires. Cette modification apparaît dans les journaux d'exécution de votre fonction.

Dans les journaux d'exécution, l'étiquette runtime_version vous indique lorsqu'une nouvelle image d'exécution est utilisée sur votre fonction. Une entrée de journal pour une fonction Nodejs mise à jour peut se présenter comme suit :

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

Analyses de sécurité sur Cloud Functions (2nd gen)

Les fonctions Cloud Functions (2nd gen) pour lesquelles les mises à jour automatiques sont activées sont basées sur une image scratch. Par conséquent, le conteneur qui représente votre fonction dans Artifact Registry ne possède pas d'image de base et est considérablement plus petit que les fonctions utilisant des mises à jour lors du déploiement. L'image de base est combinée à l'image de la fonction au moment de l'exécution pour créer une fonction complète.

Vous pouvez utiliser des analyseurs de sécurité pour surveiller les images de base gérées par Google qui alimentent votre fonction. Vous trouverez la dernière image de base de votre fonction sur gcr.io/serverless-runtimes/RUNTIME_ID/run.

Remplacez :

  • RUNTIME_ID par l'ID d'exécution utilisé par votre fonction, par exemple python310