Protéger vos données avec des clés CMEK (1re génération)
Vous pouvez utiliser les clés de chiffrement gérées par le client (CMEK, customer-managed encryption keys) Cloud Key Management Service pour protéger les fonctions Cloud Run et les données au repos associées. Ces clés sont créées et gérées via Cloud KMS et stockées sous forme de clés logicielles, dans un cluster HSM ou en externe.
Le déploiement d'une fonction avec une CMEK protège les données qui lui sont associées en utilisant une clé de chiffrement que vous contrôlez entièrement. Ce type de chiffrement vous permet de répondre aux exigences de conformité de certains secteurs, tels que les services financiers. Étant donné que la clé vous appartient et n'est pas contrôlée par Google, personne (même pas vous) ne peut accéder aux données protégées par ces clés de chiffrement lorsque ces dernières sont désactivées ou détruites.
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.
- Données au repos pour les canaux de transport d'événements internes.
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 des fonctions Cloud Run ne s'applique qu'aux ressources Cloud Run Functions gérées par Google. Il vous incombe de protéger les données et les ressources que vous gérez, telles que vos dépôts de code source ou tout service utilisé par vos fonctions.
La configuration de CMEK pour Cloud Run Functions implique les tâches suivantes :
Autoriser les comptes de service nécessaires à accéder à la clé :
- Pour toutes les fonctions, vous devez autoriser les comptes de service Cloud Run Functions, Artifact Registry et Cloud Storage à accéder à la clé.
Créer un dépôt Artifact Registry protégé par CMEK pour stocker les images de votre fonction.
Activer le chiffrement CMEK sur votre fonction.
Vous pouvez éventuellement activer les règles d'administration CMEK pour forcer toutes les nouvelles fonctions à être compatibles avec CMEK.
Ces fichiers sont décrits plus en détail ci-dessous.
Avant de commencer
Créez une clé à région unique à utiliser pour chiffrer vos fonctions. Pour apprendre à créer une clé, consultez la page Créer des clés de chiffrement symétriques.
Créez un dépôt Artifact Registry sur lequel CMEK est activé. Vous devez utiliser la même clé pour le dépôt Artifact Registry que lorsque vous activez CMEK pour une fonction.
Accorder à la clé l'accès aux comptes de service
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
)
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
:
Console
Accédez à la page Cloud Key Management Service dans la console Google Cloud :
Accéder à la page Cloud KMSCliquez sur le nom du trousseau de clés 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 montrés plus tôt pour leur accorder des autorisations tous à la fois.
Dans le menu déroulant Sélectionner un rôle, sélectionnez Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS.
Cliquez sur Enregistrer.
gcloud
Pour chaque compte de service mentionné précédemment, exécutez la commande suivante :
gcloud kms keys add-iam-policy-binding KEY \ --keyring KEY_RING \ --location LOCATION \ --member serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Remplacez les éléments suivants :
KEY
: nom de la clé. Exemple :my-key
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, procédez comme suit :
Console
Accédez à la page Cloud Run Functions dans la console Google Cloud :
Accéder à la page Cloud Run FunctionsCliquez sur le nom de la fonction sur laquelle vous souhaitez activer CMEK.
Cliquez sur Modifier.
Cliquez sur Exécution, compilation... pour développer les options de configuration avancées.
Sélectionnez l'onglet Sécurité et dépôt d'images.
Dans la section Chiffrement, sélectionnez Clé de chiffrement gérée par le client (CMEK).
Sélectionnez la clé que vous avez choisie dans la liste déroulante.
Sous Emplacement des conteneurs, sélectionnez Artifact Registry géré par le client.
Dans le menu déroulant Artifact Registry, sélectionnez le dépôt protégé par CMEK.
Cliquez sur Suivant.
Cliquez sur Déployer.
gcloud
Exécutez la commande suivante :
gcloud functions deploy FUNCTION \ --no-gen2 \ --kms-key=KEY \ --docker-repository=REPOSITORY \ --source=YOUR_SOURCE_LOCATION FLAGS...
Remplacez les éléments suivants :
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.
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é.
Tester la protection CMEK
Pour vérifier que la protection CMEK fonctionne, vous pouvez désactiver la clé que vous avez utilisée pour activer pour une fonction, puis essayer de déclencher la fonction :
Désactivez la clé utilisée pour protéger votre fonction.
Essayez d'afficher le code source associé à cette fonction. La tentative doit échouer.
Essayez de déclencher la fonction protégée par CMEK. La tentative doit échouer.
Après avoir vérifié que la protection CMEK fonctionne, activez la clé.
La protection CMEK de la fonction est maintenant confirmée.
Étape suivante
- Découvrez comment alterner vos clés.
- Apprenez-en davantage sur le chiffrement par défaut de Google.
- Apprenez-en davantage sur CMEK.
- Apprenez-en davantage sur les règles d'administration CMEK.