Utiliser les clés de chiffrement gérées par le client

Par défaut, Workflows chiffre vos données stockées au repos. Google Cloud traite et gère ce chiffrement par défaut sans intervention de votre part.

Si vous avez des exigences réglementaires ou de conformité spécifiques liées aux clés qui protègent vos données, vous pouvez utiliser clés de chiffrement gérées par le client (CMEK) pour Workflows Votre workflow et les données au repos associées protégées par une clé de chiffrement à laquelle vous seul avez accès et que vous pouvez et les gérer à l'aide de Cloud Key Management Service (Cloud KMS).

Éléments protégés par CMEK

Lors du déploiement d'un workflow, vous pouvez spécifier une clé Cloud KMS. Cette clé est utilisé pour chiffrer le workflow et ses exécutions:

  • Un workflow requiert un fichier source contenant un workflow valide définition. Ce fichier source est chiffré à l'aide de la clé.

  • Une exécution de workflow exécute la définition du workflow en cours (un processus spécifique révision du workflow). L'utilisation de la clé associée à la révision du workflow au niveau l'heure du déploiement, le workflow compilé, ainsi que toute exécution stockée les données d'entrée, de sortie et d'exécution sont chiffrées. Cela inclut les arguments d'exécution, les résultats, les erreurs et les exceptions ; livré Événements Eventarc ainsi que les requêtes et réponses HTTP et de rappel.

Avant de commencer

Avant d'utiliser des clés CMEK dans Workflows, procédez comme suit:

  1. Activez les API.

    Console

    1. Enable the Cloud KMS and Workflows APIs.

      Enable the APIs

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      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.

    2. Mettez à jour les composants gcloud :
      gcloud components update
      
    3. 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
      
  2. Cloud KMS génère des Cloud Audit Logs lorsque les clés sont activées. désactivée ou utilisée par les ressources Workflows pour chiffrer et déchiffrer données. Vérifiez que la journalisation est activée pour l'API Cloud KMS de votre projet et que vous avez décidé les autorisations et les rôles propres à la journalisation qui s'appliquent à votre cas d'utilisation. Pour plus pour en savoir plus, consultez 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.

  1. Créez un trousseau de clés.

  2. Créez une clé pour un trousseau de clés spécifié.

Récupérer l'ID de ressource d'une clé Cloud KMS

Veuillez indiquer l'ID de ressource d'une clé Cloud KMS lorsque vous activez CMEK pour un workflow. Dans ce document, consultez la section Activer les CMEK pour un workflow.

Console

  1. Dans la console Google Cloud, accédez à la page Gestion des clés.

    Accéder à la page "Gestion des clés"

  2. Cliquez sur le trousseau de clés contenant la clé.

  3. Pour la clé dont vous voulez récupérer l'ID de ressource, cliquez sur Plus.

  4. Cliquez sur Copier le nom de la ressource.

    L'ID de ressource de la clé est copié dans le presse-papiers. Son format est semblable à ce qui suit:

    projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    
  5. Une clé contient zéro ou plusieurs versions de clé. ID de ressource d'une clé "version" correspond à l'ID de clé suivi d'une barre oblique (/) et à l'ID de version. À lister toutes les versions d'une clé:

    1. Cliquez sur le nom de la clé.
    2. Pour obtenir une version spécifique, cliquez sur Plus.
    3. Cliquez sur Copier le nom de la ressource.

gcloud

  1. 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és
    • LOCATION: région du trousseau de clés

    Le résultat inclut l'ID de ressource de chaque clé. Exemple :

    NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
    
  2. Une clé comporte zéro ou plusieurs versions de clé. L'ID de ressource d'une version de clé est l'ID de clé suivi d'une barre oblique (/) et de l'ID de version. Répertorier toutes les versions pour une clé:

    gcloud kms keys versions list --location LOCATION --keyring RING_NAME --key KEY_NAME
    

    Le résultat inclut l'ID de ressource de 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 accorder à l'agent de service Workflows la Chiffreur/Déchiffreur de CryptoKeys Cloud KMS Identity and Access Management (IAM) afin qu'il puisse accéder à Cloud KMS clé:

Console

Lorsque vous activez CMEK pour un workflow via la console, vous êtes invité à et attribuez le rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS au service. de service. Pour plus d'informations, reportez-vous à la section Activez les CMEK pour un workflow.

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 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, données inaccessibles. Dans ce document, consultez Désactivez Cloud KMS.

Activer les CMEK pour un workflow

Lorsque vous créez un workflow ou après la mise à jour, vous pouvez spécifier la clé Cloud KMS doit utiliser pour le chiffrement des données.

Console

  1. Dans la console Google Cloud, accédez à la page Workflows.

    Accéder à "Workflows"

  2. Cliquez sur le nom du workflow que vous souhaitez mettre à jour.

    La page Détails du workflow s'affiche.

  3. Cliquez sur Modifier.

  4. Sélectionnez Clé de chiffrement gérée par le client (CMEK).

  5. Dans la liste Sélectionner une clé gérée par le client, sélectionnez ou filtrez Cloud KMS.

  6. Facultatif: Pour saisir manuellement le paramètre 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 la ressource de clé dans la dans le format spécifié.

  7. Si vous y êtes invité, attribuez le rôle cloudkms.cyptoKeyEncrypterDecrypter au Compte de service Workflows avec workflows.serviceAgent rôle de ressource.

  8. Cliquez sur Suivant.

  9. 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 workflow
  • SOURCE_FILE: fichier source de votre workflow avec un yaml pour un fichier YAML ou json pour un fichier JSON. Exemple : myWorkflow.yaml.
  • KEY: ID de ressource de la clé au format projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME Vous pouvez récupérer l'ID de clé.

  • LOCATION: emplacement du workflow

  • SERVICE_ACCOUNT: compte de service utilisé pour votre workflow utilisera pour accéder à d'autres services Google Cloud ; 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 ce champ n'est pas renseigné, le compte de service par défaut est utilisé. Pour en savoir plus, consultez Autoriser un workflow à accéder aux ressources Google Cloud

Veuillez noter les points suivants :

  • Les révisions et les exécutions de workflow sont chiffrées à l'aide de la clé spécifiée au niveau l'heure du déploiement ; les ressources précédemment chiffrées avec une clé précédente restent chiffré avec cette clé précédente. Si un flux de travail est modifié par la suite et qu'un nouveau est spécifiée, la révision du workflow est chiffrée avec la nouvelle clé, et toute exécution ultérieure utilisera la nouvelle clé.
  • Auparavant, les révisions et les exécutions de workflow chiffrées non CMEK ne sont pas conservées chiffrées.
  • Si vous désactivez les CMEK pour une révision de workflow, toutes les exécutions ultérieures sont créés sans chiffrement CMEK. Dans ce document, consultez Désactivez les CMEK pour un workflow. Les révisions du workflow existant les exécutions restent chiffrées avec les clés qu'elles chiffrées.

Vérifier l'intégration de Cloud KMS

Vous pouvez vérifier l'intégration de la CMEK en affichant les métadonnées d'un workflow.

Console

  1. Dans la console Google Cloud, accédez à la page Workflows.

    Accéder à "Workflows"

  2. Cliquez sur le nom du workflow que vous souhaitez vérifier.

    La page Détails du workflow s'affiche.

  3. Cliquez sur l'onglet Détails.

    La valeur Chiffrement indique l'ID de ressource de l'instance 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 l'instance Cloud KMS utilisée pour sécuriser le workflow et son exécution.

Désactiver les CMEK pour un workflow

Vous pouvez désactiver les clés CMEK pour un workflow afin qu'il n'utilise plus les clés Cloud KMS.

Console

  1. Dans la console Google Cloud, accédez à la page Workflows.

    Accéder à "Workflows"

  2. Cliquez sur le nom du workflow que vous souhaitez mettre à jour.

    La page Détails du workflow s'affiche.

  3. Cliquez sur Modifier.

  4. Pour décocher la case d'option Clé de chiffrement gérée par le client (CMEK) : sélectionnez Clé de chiffrement gérée par Google.

  5. Cliquez sur Suivant.

  6. 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

Cette action désactive les CMEK pour la révision de workflow actuelle et toute sont créées sans chiffrement CMEK. Workflow existant les révisions et les exécutions restent chiffrées à l'aide des clés qu'elles précédemment chiffrées.

Désactiver Cloud KMS

Si vous souhaitez révoquer l'accès aux données de votre workflow ou de ses exécutions, vous devez vous pouvez effectuer l'une des opérations suivantes pour désactiver Cloud KMS:

  • Désactiver ou détruire la version de clé primaire de votre de chiffrement gérée par le client. La désactivation d'une version de clé CMEK entraîne l'accès à toutes les données protégées par cette version de clé. La destruction d'une version de clé l'équivalent permanent de cette action. Les deux n’affectent que les flux de travail et de workflow associées à une clé spécifique. Vous ne pouvez pas créer de nouvelles exécutions ou afficher les ressources associées ou détruite. Toute exécution active échouera et affichera une erreur correspondante .

  • Révoquez le cloudkms.cryptoKeyEncrypterDecrypterle rôle IAM du Agent de service Workflows. Cela a un impact sur tous les workflows du Projet Google Cloud compatible avec le chiffrement à l'aide de CMEK. Vous ne pouvez pas créer des workflows et des exécutions intégrés à la CMEK, ou afficher les pour les ressources chiffrées par CMEK. Toutes les exécutions actives échouent avec une erreur 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 plus d'informations, consultez la page Cohérence des ressources Cloud KMS et Propagation des modifications des accès

Dépannage

Vous pouvez rencontrer des erreurs lorsque vous utilisez Cloud KMS avec Workflows Le tableau suivant décrit différents problèmes et comment les résoudre.

Problème Description
L'autorisation cloudkms.cryptoKeyVersions.useToEncrypt est refusé 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 le workflow de ML.

Solution: utilisez un trousseau de clés Cloud KMS protégé de la même région. Notez qu'ils peuvent se trouver dans différentes projects.) Pour en savoir plus, consultez Emplacements Cloud KMS Emplacements des workflows.

La limite de quota Cloud KMS est dépassée Vous avez atteint votre limite de quota pour les requêtes Cloud KMS.

Solution: limitez le nombre d'appels Cloud KMS ou d'augmenter la limite de quota. Pour en savoir plus, consultez Quotas Cloud KMS

Traitement de l'état d'indisponibilité d'une clé

Si, pour une raison quelconque, Cloud KMS n'est pas disponible, Workflows risque de ne pas pouvoir 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 les détails associés dans le champ stateError.

Si l'état de la clé devient indisponible au cours de l'exécution du 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 les détails associés dans le champ error.

Tarifs

Cette intégration n'entraîne pas de coûts supplémentaires au-delà des opérations de clés, qui sont facturés à votre projet Google Cloud. Pour le tarif actuel plus d'informations, consultez la page Tarifs de Cloud KMS.