Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Protéger vos données avec des clés CMEK
Cette page fournit des informations supplémentaires sur la protection de vos données avec des clés de chiffrement gérées par le client (CMEK) pour les fonctions créées à l'aide de commandes gcloud functions ou de l'API Cloud Functions v2.
Pour une description détaillée de CMEK, y compris la configuration manuelle, l'utilisation d'Autokey et le test de la protection CMEK, consultez la documentation Cloud Run.
Les types de données de fonctions Cloud Run suivants sont chiffrés lors de l'utilisation d'une CMEK :
Le code source de la fonction importé pour le déploiement et stocké par Google dans Cloud Storage, utilisé dans le processus de compilation.
Les résultats du processus de compilation de la fonction, y compris les éléments suivants :
L'image de conteneur créée à partir du code source de votre fonction.
Chaque instance de la fonction qui est déployée.
Le processus de compilation de la fonction est protégé par une clé éphémère générée de manière unique pour chaque compilation. Pour en savoir plus, consultez la page Conformité CMEK dans Cloud Build. Notez également les points suivants :
Les métadonnées des fichiers, telles que les chemins d'accès au système de fichiers ou les horodatages de modification, ne sont pas chiffrées.
Si une clé est désactivée, l'image de conteneur ne peut pas être déployée et les nouvelles instances ne peuvent pas démarrer.
La protection CMEK de Cloud Run Functions ne s'applique qu'aux ressources Cloud Run Functions gérées par Google. Vous êtes responsable de la protection des données et des ressources que vous gérez, telles que vos dépôts de code source, les canaux d'événements qui résident dans le projet client ou tout service utilisé par votre fonctions.
Pour toutes les fonctions, vous devez accorder aux comptes de service suivants l'accès à la clé :
Agent de service Cloud Run Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com)
Agent de service Artifact Registry (service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com)
Agent de service Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)
Agent de service Cloud Run (service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com)
Agent de service Eventarc (service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com)
Pour permettre à ces comptes de service d'accéder à la clé, ajoutez chaque compte de service en tant que compte principal de la clé, puis attribuez-lui le rôle Cloud KMS CryptoKey Encrypter/Decrypter :
Cliquez sur le nom du trousseau contenant la clé choisie.
Cliquez sur le nom de la clé pour afficher ses détails.
Dans l'onglet Autorisations, cliquez sur Accorder l'accès.
Dans le champ Nouveaux comptes principaux, saisissez les adresses e-mail des trois comptes de service évoqués plus tôt pour leur accorder des autorisations tous à la fois.
Dans le menu Sélectionner un rôle, sélectionnez Chiffreur/Déchiffreur de CryptoKeys Cloud KMS.
Cliquez sur Enregistrer.
gcloud
Pour chaque compte de service mentionné précédemment, exécutez la commande suivante:
KEY_RING : nom du trousseau de clés. Exemple : my-keyring.
LOCATION : emplacement de la clé. Exemple : us-central1.
SERVICE_AGENT_EMAIL : adresse e-mail du compte de service.
Activer CMEK pour une fonction
Après avoir configuré un dépôt Artifact Registry avec CMEK activé et accordé à Cloud Run Functions l'accès à votre clé, vous êtes prêt à activer CMEK pour votre fonction.
Pour activer CMEK pour une fonction, exécutez la commande suivante:
FUNCTION : nom de la fonction sur laquelle activer CMEK. Exemple :cmek-function
KEY : nom complet de la clé, au format suivant : projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME.
REPOSITORY : nom complet du dépôt Artifact Registry, au format suivant : projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY.
YOUR_SOURCE_LOCATION : lorsque vous activez CMEK pour une fonction préexistante, assurez-vous que le code source prévu est redéployé en spécifiant explicitement ce paramètre.
FLAGS... : options supplémentaires pouvant être nécessaires pour déployer votre fonction, en particulier pour les déploiements Pour en savoir plus, consultez Déployer une fonction Cloud Run.
CMEK est activé pour la fonction. Vous pouvez éventuellement activer les règles d'administration CMEK pour forcer toutes les nouvelles fonctions à être compatibles avec CMEK.
Notez que Cloud Run Functions utilise toujours la version principale d'une clé à des fins de protection CMEK. Vous ne pouvez pas spécifier une version de clé particulière à utiliser lorsque vous activez CMEK pour vos fonctions.
Si une clé est détruite ou désactivée, ou si les autorisations requises sur cette clé sont révoquées, les instances actives des fonctions protégées par cette clé ne sont pas arrêtées.
Les exécutions de fonction déjà en cours continueront d'être exécutées, mais les nouvelles exécutions échoueront tant que Cloud Run Functions n'aura pas accès à la clé.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/05 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/05 (UTC)."],[[["\u003cp\u003eCloud Run functions encrypts customer content at rest by default using Google default encryption, but offers the option to use customer-managed encryption keys (CMEKs) for greater control.\u003c/p\u003e\n"],["\u003cp\u003eUsing CMEKs with Cloud Run functions allows you to manage key protection level, location, rotation schedule, access permissions, and cryptographic boundaries, and view audit logs.\u003c/p\u003e\n"],["\u003cp\u003eCMEK protection in Cloud Run functions encrypts function source code, container images, and deployed function instances, while file metadata remains unencrypted.\u003c/p\u003e\n"],["\u003cp\u003eEnabling CMEK requires granting specific service accounts (Cloud Run, Artifact Registry, Cloud Storage, etc.) access to the encryption key and creating a CMEK-protected Artifact Registry repository.\u003c/p\u003e\n"],["\u003cp\u003eDisabling the CMEK key will prevent new function instances from starting and new executions from occurring, but existing function executions will continue until completion.\u003c/p\u003e\n"]]],[],null,["# Protect your data with CMEK\n===========================\n\nThis page provides supplemental information for protecting your data with\ncustomer-managed encryption keys (CMEKs) for functions created using\n[`gcloud functions`](/sdk/gcloud/reference/functions) commands or the\n[Cloud Functions v2 API](/functions/docs/reference/rest).\n\nFor a detailed description of CMEK, including manual setup, using Autokey,\nand testing CMEK protection, refer to [Cloud Run documentation](/run/docs/securing/using-cmek).\n\nThe following types of Cloud Run functions data are encrypted when using a\nCMEK:\n\n- Function source code uploaded for deployment and stored by Google in Cloud Storage, used in the build process.\n- The results of the function build process, including:\n - The container image built from your function source code.\n - Each instance of the function that is deployed.\n\nThe function build process itself is protected by an ephemeral key uniquely\ngenerated for each build. See\n[CMEK compliance in Cloud Build](/build/docs/securing-builds/cmek) for more\ninformation. Additionally, note the following:\n\n- File metadata, such as file system paths or modification timestamps,\n is not encrypted.\n\n- If a key is disabled, the container image cannot be deployed and new\n instances cannot start.\n\n- Cloud Run functions CMEK protection only applies to Google-managed\n Cloud Run functions resources; you are responsible for protecting data and\n resources managed by you, such as your source code repositories,\n [event channels](/eventarc/docs/third-parties/third-parties-overview#subscription-terms)\n that live in the customer project, or any services used by your\n functions.\n\nBefore you begin\n----------------\n\n1. Create a single-region key to use to encrypt your functions. To learn how to\n create a key, see\n [Creating symmetric encryption keys](/kms/docs/creating-keys).\n\n2. [Create an Artifact Registry repository](/artifact-registry/docs/manage-repos#create)\n that has [CMEK enabled](/artifact-registry/docs/cmek). You must use the same\n key for the Artifact Registry repository as you do when enabling CMEK for a\n function.\n\n3. For event-driven functions, follow the additional setup steps\n outlined in\n [Enable CMEK for a Google channel](/eventarc/docs/use-cmek#enable-cmek-google-channel).\n\nGranting service accounts access to the key\n-------------------------------------------\n\nFor all functions, you must grant the following service accounts access to the key:\n\n- Cloud Run functions service agent (`service-`\u003cvar translate=\"no\"\u003ePROJECT_NUMBER\u003c/var\u003e`@gcf-admin-robot.iam.gserviceaccount.com`)\n\n- Artifact Registry service agent (`service-`\u003cvar translate=\"no\"\u003ePROJECT_NUMBER\u003c/var\u003e`@gcp-sa-artifactregistry.iam.gserviceaccount.com`)\n\n- Cloud Storage service agent (`service-`\u003cvar translate=\"no\"\u003ePROJECT_NUMBER\u003c/var\u003e`@gs-project-accounts.iam.gserviceaccount.com`)\n\n- Cloud Run service agent (`service-`\u003cvar translate=\"no\"\u003ePROJECT_NUMBER\u003c/var\u003e`@serverless-robot-prod.iam.gserviceaccount.com`)\n\n- Eventarc service agent (`service-`\u003cvar translate=\"no\"\u003ePROJECT_NUMBER\u003c/var\u003e`@gcp-sa-eventarc.iam.gserviceaccount.com`)\n\nTo grant these service accounts access to the key, add each service account as a\nprincipal of the key and then grant the service account the\n`Cloud KMS CryptoKey Encrypter/Decrypter` role: \n\n### Console\n\n1. Go to the Cloud Key Management Service page in the Google Cloud console: \n\n [Go to the Cloud KMS page](https://console.cloud.google.com/security/kms)\n\n2. Click the name of the key ring that contains the chosen key.\n\n3. Click the name of the key to view the key details.\n\n4. In the **Permissions** tab, click **Grant access**.\n\n5. In the **New principals** field, enter the email addresses of all three\n service accounts discussed earlier to assign permissions to all three\n accounts at once.\n\n6. In the **Select a role** menu, select **Cloud KMS CryptoKey\n Encrypter/Decrypter**.\n\n7. Click **Save**.\n\n### gcloud\n\nFor each service account discussed earlier, run the following command: \n\n```bash\ngcloud kms keys add-iam-policy-binding KEY \\\n --keyring KEY_RING \\\n --location LOCATION \\\n --member serviceAccount:SERVICE_AGENT_EMAIL \\\n --role roles/cloudkms.cryptoKeyEncrypterDecrypter\n```\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eKEY\u003c/var\u003e: The name of the key. For example, `my-key`.\n\n- \u003cvar translate=\"no\"\u003eKEY_RING\u003c/var\u003e: The name of the key ring. For example,\n `my-keyring`.\n\n- \u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e: The location of the key. For example,\n `us-central1`.\n\n- \u003cvar translate=\"no\"\u003eSERVICE_AGENT_EMAIL\u003c/var\u003e: The email address of the\n service account.\n\n| **Important:** Some service agents, such as the Cloud Storage service agent (including its email address), are not initially available when you create a project. Instead, they are activated the first time you access them. For example, to activate the Cloud Storage service agent, you can [retrieve its email address](/storage/docs/getting-service-agent). The service agent must be activated prior to assigning permissions to it.\n\nEnabling CMEK for a function\n----------------------------\n\nAfter setting up an Artifact Registry repository with CMEK enabled and\ngranting Cloud Run functions access to your key, you're ready to enable\nCMEK for your function.\n\nTo enable CMEK for a function, run the following command: \n\n```bash\ngcloud functions deploy FUNCTION \\\n --kms-key=KEY \\\n --docker-repository=REPOSITORY \\\n --source=YOUR_SOURCE_LOCATION\n FLAGS...\n \n```\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eFUNCTION\u003c/var\u003e: The name of the function to enable CMEK\n on. For example, `cmek-function`.\n\n- \u003cvar translate=\"no\"\u003eKEY\u003c/var\u003e: The fully qualified key name, in the following\n format:\n `projects/`\u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e`/locations/`\u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e`/keyRings/`\u003cvar translate=\"no\"\u003eKEYRING_NAME\u003c/var\u003e`/cryptoKeys/`\u003cvar translate=\"no\"\u003eKEY_NAME\u003c/var\u003e.\n\n- \u003cvar translate=\"no\"\u003eREPOSITORY\u003c/var\u003e: The fully qualified Artifact Registry\n repository name, in the following format:\n `projects/`\u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e`/locations/`\u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e`/repositories/`\u003cvar translate=\"no\"\u003eREPOSITORY\u003c/var\u003e.\n\n- \u003cvar translate=\"no\"\u003eYOUR_SOURCE_LOCATION\u003c/var\u003e: When enabling CMEK for a\n pre-existing function, make sure that the intended source code is being\n re-deployed by specifying this parameter explicitly.\n\n- \u003cvar translate=\"no\"\u003eFLAGS\u003c/var\u003e`...`: Additional flags that may be\n required to deploy your function, particularly for create deployments. For\n details, see\n [Deploy a Cloud Run function](/functions/docs/deploy#basics).\n\nCMEK is enabled for the function. Optionally, enable\n[CMEK organization policies](/kms/docs/cmek-org-policy) to enforce all new\nfunctions to be CMEK compliant.\n| **Note:** First-time function deployments with CMEK enabled might fail due to IAM propagation delays. If you encounter an error upon deployment, ensure the permissions are set correctly and try again after a short period.\n\nNote that Cloud Run functions always uses the primary version of a key for CMEK\nprotection. You cannot specify a particular key version to use when enabling\nCMEK for your functions.\n\nIf a key is [destroyed](/kms/docs/destroy-restore) or\n[disabled](/kms/docs/enable-disable), or the requisite permissions on it are\nrevoked, active instances of functions protected by that key are not shut down.\nFunction executions already in progress will continue to run, but new executions\nwill fail as long as Cloud Run functions does not have access to the key."]]