Par défaut, Workflows chiffre les contenus client au repos. Les workflows gèrent le chiffrement sans intervention de votre part. Cette option est appelée chiffrement par défaut de Google.
Si vous souhaitez contrôler vos clés de chiffrement, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK) dans Cloud KMS avec des services bénéficiant d'une intégration des CMEK, y compris les workflows. L'utilisation de clés Cloud KMS vous permet de contrôler leur niveau de protection, leur emplacement, leur calendrier de rotation, leurs autorisations d'utilisation et d'accès, ainsi que leurs limites cryptographiques. Cloud KMS vous permet également de suivre l'utilisation des clés, d'afficher les journaux d'audit et de contrôler le cycle de vie des clés. Au lieu de laisser Google posséder et gérer les clés de chiffrement de clés (KEK) symétriques qui protègent vos données, c'est vous qui vous chargez de cette tâche dans Cloud KMS.
Une fois que vous avez configuré vos ressources avec des clés CMEK, l'accès à vos ressources Workflows est semblable à l'utilisation du chiffrement par défaut de Google. Pour en savoir plus sur les options de chiffrement, consultez Clés de chiffrement gérées par le client (CMEK).
Vous pouvez protéger votre workflow et les données associées au repos à l'aide d'une clé de chiffrement à laquelle vous seul pouvez accéder, et que vous pouvez contrôler et gérer à l'aide de Cloud KMS.
Éléments protégés par CMEK
Lorsque vous déployez un workflow, vous pouvez spécifier une clé Cloud KMS. Cette clé permet de chiffrer le workflow et ses exécutions:
Un workflow nécessite un fichier source contenant une définition de workflow valide. Ce fichier source est chiffré à l'aide de la clé.
Une exécution de workflow exécute la définition actuelle du workflow (une révision de workflow spécifique). À l'aide de la clé associée à la révision du workflow au moment de son déploiement, le workflow compilé, ainsi que toutes les données d'entrée, de sortie et d'exécution stockées, sont chiffrées. Cela inclut les arguments d'exécution, les résultats, les erreurs et les exceptions, les événements Eventarc envoyés, ainsi que les requêtes et réponses HTTP et les rappels.
Avant de commencer
Avant d'utiliser CMEK dans les workflows, procédez comme suit:
Activez les API.
Console
-
Enable the Cloud KMS and Workflows APIs.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
- Mettez à jour les composants
gcloud
.gcloud components update
- Activez les API Cloud KMS et Workflows pour le projet qui stockera vos clés de chiffrement.
gcloud services enable cloudkms.googleapis.com workflows.googleapis.com
-
Cloud KMS génère des Cloud Audit Logs lorsque les clés sont activées, désactivées ou utilisées par les ressources Workflows pour chiffrer et déchiffrer les données. Assurez-vous que la journalisation est activée pour l'API Cloud KMS dans votre projet et que vous avez décidé des autorisations et des rôles spécifiques à la journalisation qui s'appliquent à votre cas d'utilisation. Pour en savoir plus, consultez la page Informations sur les journaux d'audit Cloud KMS.
Créer un trousseau et une clé Cloud KMS
Vous pouvez créer un trousseau de clés ou en utiliser un existant. Dans le trousseau de clés, vous pouvez ajouter une clé ou utiliser une clé existante.
Récupérer l'ID de ressource d'une clé Cloud KMS
L'ID de ressource d'une clé Cloud KMS est obligatoire lorsque vous activez CMEK pour un workflow. Dans ce document, consultez la section Activer CMEK pour un workflow.
Console
Dans la console Google Cloud, accédez à la page Gestion des clés.
Cliquez sur le trousseau de clés contenant la clé.
Pour la clé dont vous voulez récupérer l'ID de ressource, cliquez sur more_vert Plus.
Cliquez sur Copier le nom de la ressource.
L'ID de ressource pour la clé est copié dans votre presse-papiers. Son format est semblable à ce qui suit:
projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Une clé contient zéro ou plusieurs versions de clé. L'ID de ressource d'une version de clé correspond à l'ID de la clé, suivi d'une barre oblique (
/
) et de l'ID de version. Pour répertorier toutes les versions d'une clé:- Cliquez sur le nom de la clé.
- Pour une version spécifique, cliquez sur Plus.
- Cliquez sur Copier le nom de la ressource.
gcloud
Répertoriez toutes les clés d'un trousseau de clés donné :
gcloud kms keys list --keyring RING_NAME --location LOCATION
Remplacez les éléments suivants :
RING_NAME
: nom du trousseau de clésLOCATION
: région du trousseau de clés.
La sortie inclut l'ID de ressource pour chaque clé. Exemple :
NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
Une clé comporte zéro ou plusieurs versions de clé. L'ID de ressource d'une version de clé correspond à l'ID de la clé, suivi d'une barre oblique (
/
) et de l'ID de version. Répertoriez toutes les versions d'une clé:gcloud kms keys versions list --location LOCATION --keyring RING_NAME --key KEY_NAME
La sortie inclut l'ID de ressource pour chaque version de clé. Exemple :
NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME/2
Accorder à l'agent de service Workflows l'accès à la clé
Vous devez attribuer au agent de service Workflows le rôle IAM Chiffreur/Déchiffreur de CryptoKey Cloud KMS pour qu'il puisse accéder à la clé Cloud KMS:
Console
Lorsque vous activez CMEK pour un workflow via la console, vous êtes invité à attribuer le rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS au compte de service. Pour en savoir plus, consultez la section Activer CMEK pour un workflow dans ce document.
gcloud
gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring RING_NAME \ --location LOCATION \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Remplacez les éléments suivants :
KEY_NAME
: nom de la clé. Exemple :my-key
RING_NAME
: nom du trousseau de clés. Exemple :my-keyring
.LOCATION
: emplacement de la clé. Exemple :us-central1
.PROJECT_NUMBER
: numéro de votre projet Google Cloud. Vous pouvez trouver le numéro de votre projet sur la page Bienvenue de la console Google Cloud ou en exécutant la commande suivante :export PROJECT=$(gcloud info --format='value(config.project)') gcloud projects describe ${PROJECT} --format="value(projectNumber)"
Tant que l'agent de service dispose du rôle roles/cloudkms.cryptoKeyEncrypterDecrypter
, un workflow de votre projet peut chiffrer et déchiffrer ses données à l'aide de la clé CMEK. Si vous révoquez ce rôle, ou si vous désactivez ou détruisez la clé CMEK, ces données ne sont plus accessibles. Dans ce document, consultez la section Désactiver Cloud KMS.
Activer CMEK pour un workflow
Lorsque vous créez un workflow ou le mettez à jour par la suite, vous pouvez spécifier la clé Cloud KMS que le workflow doit utiliser pour le chiffrement des données.
Console
Dans la console Google Cloud, accédez à la page Workflows.
Cliquez sur le nom du workflow que vous souhaitez mettre à jour.
La page Détails des workflows s'affiche.
Cliquez sur
Modifier.Sélectionnez Clé Cloud KMS.
Sélectionnez un type de clé.
Vous pouvez gérer vos clés manuellement ou utiliser Autokey, qui vous permet de générer des trousseaux et des clés à la demande. Si l'option Autokey est désactivée, cela indique qu'elle n'est pas encore intégrée au type de ressource actuel.
Dans la liste Sélectionner une clé Cloud KMS, sélectionnez ou filtrez une clé Cloud KMS.
Facultatif: Pour saisir manuellement le nom de ressource de la clé, dans la liste Sélectionner une clé gérée par le client, cliquez sur Saisir la clé manuellement, puis saisissez le nom de ressource de la clé au format spécifié.
Si vous y êtes invité, attribuez le rôle
cloudkms.cyptoKeyEncrypterDecrypter
au compte de service Workflows avec le rôleworkflows.serviceAgent
.Cliquez sur Suivant.
Pour enregistrer vos modifications et déployer le workflow mis à jour, cliquez sur Déployer.
gcloud
gcloud workflows deploy WORKFLOW_NAME \ --source=SOURCE_FILE \ --kms-key=KEY \ --location LOCATION \ --service-account=SERVICE_ACCOUNT
Remplacez les éléments suivants :
WORKFLOW_NAME
: Nom de votre workflowSOURCE_FILE
: fichier source de votre workflow avec une extension de fichieryaml
pour un fichier YAML ou une extension de fichierjson
pour un fichier JSON (par exemple,myWorkflow.yaml
).KEY
: ID de ressource de la clé au formatprojects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
. Vous pouvez récupérer l'ID de clé.LOCATION
: emplacement du workflowSERVICE_ACCOUNT
: compte de service que votre workflow utilisera pour accéder à d'autres services Google Cloud (par exemple,SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com
). Nous vous recommandons vivement d'utiliser un compte de service ne bénéficiant que des privilèges les plus faibles nécessaires pour accéder aux ressources requises. Si vous ne renseignez pas ce champ, le compte de service par défaut est utilisé. Pour en savoir plus, consultez la section Accorder à un workflow l'accès aux ressources Google Cloud.
Veuillez noter les points suivants :
- Les révisions et les exécutions de workflow sont chiffrées avec la clé spécifiée au moment du déploiement. Les ressources chiffrées précédemment avec une clé antérieure restent chiffrées avec cette ancienne clé. Si un workflow est ensuite modifié et qu'une nouvelle clé est spécifiée, cette révision du workflow est chiffrée avec la nouvelle clé, et toutes les exécutions ultérieures utiliseront la nouvelle clé.
- Les révisions et les exécutions de workflow qui n'étaient pas chiffrées par CMEK ne le sont toujours pas.
- Si vous désactivez CMEK pour une révision de workflow, toutes les exécutions ultérieures sont créées sans chiffrement CMEK. Dans ce document, consultez la section Désactiver CMEK pour un workflow. Les révisions et les exécutions de workflow existantes restent chiffrées avec les clés avec lesquelles elles étaient précédemment chiffrées.
Vérifier l'intégration de Cloud KMS
Vous pouvez vérifier l'intégration de CMEK en affichant les métadonnées d'un workflow.
Console
Dans la console Google Cloud, accédez à la page Workflows.
Cliquez sur le nom du workflow que vous souhaitez vérifier.
La page Détails des workflows s'affiche.
Cliquez sur l'onglet Détails.
La valeur Chiffrement affiche l'ID de ressource de la clé Cloud KMS utilisée pour sécuriser le workflow et son exécution.
gcloud
gcloud workflows describe WORKFLOW_NAME \ --location=LOCATION
La sortie devrait ressembler à ce qui suit :
createTime: '2022-08-10T19:57:58.233177709Z' cryptoKeyName: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME name: projects/PROJECT_NAME/locations/LOCATION/workflows/WORKFLOW_NAME revisionCreateTime: '2022-11-18T19:44:04.933633237Z' revisionId: 000009-8be serviceAccount: projects/PROJECT_NAME/serviceAccounts/SA_NAME@PROJECT_NAME.iam.gserviceaccount.com sourceContents: [...] state: ACTIVE updateTime: '2022-11-18T19:44:05.171793128Z'
La valeur cryptokeyName
correspond à l'ID de ressource de la clé Cloud KMS utilisée pour sécuriser le workflow et son exécution.
Désactiver CMEK pour un workflow
Vous pouvez désactiver CMEK pour un workflow afin qu'il n'utilise plus la clé Cloud KMS associée.
Console
Dans la console Google Cloud, accédez à la page Workflows.
Cliquez sur le nom du workflow que vous souhaitez mettre à jour.
La page Détails des workflows s'affiche.
Cliquez sur
Modifier.Pour décocher la case d'option Clé Cloud KMS, sélectionnez Clé de chiffrement gérée par Google.
Cliquez sur Suivant.
Pour enregistrer vos modifications et déployer le workflow mis à jour, cliquez sur Déployer.
gcloud
gcloud workflows deploy WORKFLOW_NAME \ --source=SOURCE_FILE \ --clear-kms-key \ --service-account=SERVICE_ACCOUNT
Cela désactive CMEK pour la révision actuelle du workflow, et toutes les exécutions ultérieures sont créées sans chiffrement CMEK. Les révisions et les exécutions de workflow existantes restent chiffrées avec les clés avec lesquelles elles étaient précédemment chiffrées.
Désactiver Cloud KMS
Si vous souhaitez révoquer l'accès aux données à votre workflow ou à ses exécutions, vous pouvez désactiver Cloud KMS de deux manières:
Désactivez ou détruisez la version de clé principale de votre clé de chiffrement gérée par le client. La désactivation d'une version de clé gérée par le client entraîne la suspension de l'accès à toutes les données protégées par celle-ci. La destruction d'une version de clé est la contrepartie permanente de cette action. Les deux n'affectent que les workflows et les exécutions de workflow associés à la clé spécifique. Vous ne pouvez pas créer d'exécutions ni afficher les ressources associées à la clé désactivée ou détruite. Toutes les exécutions actives échouent avec un message d'erreur correspondant.
Révoquez le rôle IAM
cloudkms.cryptoKeyEncrypterDecrypter
de l'agent de service Workflows. Cela affecte tous les workflows du projet Google Cloud compatibles avec le chiffrement à l'aide de CMEK. Vous ne pouvez pas créer de workflows ni d'exécutions intégrés aux CMEK, ni afficher de ressources chiffrées avec des CMEK. Toutes les exécutions actives échouent et un message d'erreur correspondant s'affiche.
Même si aucune de ces opérations ne garantit une révocation immédiate des accès, les modifications de Cloud IAM se propagent généralement plus rapidement. Pour en savoir plus, consultez les pages Cohérence des ressources Cloud KMS et Propagation des modifications d'accès.
Dépannage
Vous pouvez rencontrer des erreurs lorsque vous utilisez Cloud KMS avec des workflows. Le tableau suivant décrit les différents problèmes et indique comment les résoudre.
Problème | Description |
---|---|
L'autorisation cloudkms.cryptoKeyVersions.useToEncrypt est refusée |
Soit la clé Cloud KMS fournie n'existe pas, soit l'autorisation n'est pas correctement configurée.
Solution :
|
La version de clé n'est pas activée | La version de clé Cloud KMS fournie a été désactivée.
Solution: Réactivez la version de clé Cloud KMS. |
La région du trousseau de clés ne correspond pas à la ressource à protéger | La région du trousseau de clés KMS fournie est différente de celle du workflow.
Solution: utilisez un trousseau de clés Cloud KMS et un workflow protégé de la même région. (Notez qu'ils peuvent se trouver dans des projets différents.) Pour en savoir plus, consultez les pages Emplacements Cloud KMS et Emplacements des workflows. |
La limite de quota Cloud KMS est dépassée | Votre limite de quota pour les requêtes Cloud KMS a été atteinte.
Solution: Limitez le nombre d'appels Cloud KMS ou augmentez la limite de quota. Pour en savoir plus, consultez la page Quotas Cloud KMS. |
Traitement de l'état d'indisponibilité d'une clé
Si, pour une raison quelconque, Cloud KMS n'est pas disponible, Workflows peut ne pas être en mesure de récupérer l'état de votre clé à partir de Cloud KMS.
Si l'état de la clé n'est pas disponible, le workflow ou son exécution renvoie une valeur state: UNAVAILABLE
et des informations associées dans le champ stateError
.
Si l'état de la clé n'est plus disponible au cours de l'exécution d'un workflow (par exemple, une autorisation est révoquée lors d'un rappel), une erreur d'exécution se produit, renvoyant une valeur state: FAILED
et des informations associées dans le champ error
.
Tarifs
Cette intégration n'entraîne pas de coûts supplémentaires, outre les frais liés aux opérations de clés qui sont facturés dans le cadre de votre projet Google Cloud. Pour en savoir plus sur les tarifs actuels, consultez la page Tarifs de Cloud KMS.