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 Run 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 Run 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 Artifact Registry. 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-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22: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 Run Functions (1re génération) et Cloud Run Functions. Pour appliquer des correctifs de sécurité au niveau du langage, vous devrez peut-être recréer 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 le déploiement sont disponibles à la fois sur Cloud Run Functions (1re génération) et Cloud Run Functions.
Vous pouvez modifier la stratégie de mise à jour de l'environnement d'exécution à l'aide de l'indicateur --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
ouon-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 \
Où 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 Run 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 les fonctions Cloud Run
Les fonctions Cloud Run 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 n'aura pas d'image de base et sera 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 outils d'analyse 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 REGION-docker.pkg.dev/serverless-runtimes/STACK/runtimes/RUNTIME_ID
.
Remplacez :
- REGION par la région souhaitée, par exemple
us-central1
. - STACK par la pile de système d'exploitation souhaitée, par exemple
google-22-full
- RUNTIME_ID par l'ID d'exécution utilisé par votre fonction, par exemple
python310
.
Par exemple, la dernière image de base Node.js 20 utilisant la pile google-22-full
, hébergée dans us-central1
, serait référencée avec l'URL suivante : us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22
Étant donné que votre image est désormais basée sur scratch
, l'image stockée dans Artifact Registry ne peut pas être directement exécutée. Si vous avez besoin d'une image exécutable, utilisez la règle de déploiement.