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

Par défaut, Workflows chiffre le contenu client au repos. Workflows gère 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 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, de consulter les journaux d'audit et de contrôler les cycles 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 CMEK, l'accès à vos ressources Workflows est semblable à celui 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 au repos associées à 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). Le workflow compilé, ainsi que toutes les données d'exécution stockées (entrées, sorties et données d'exécution), sont chiffrés à l'aide de la clé associée à la révision du workflow au moment de son déploiement. Cela inclut les arguments d'exécution, les résultats, les erreurs et les exceptions, les événements Eventarc, ainsi que les requêtes et réponses de rappel et HTTP.

Avant de commencer

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

  1. Activez les API.

    Console

    1. Activez les API Cloud KMS et Workflows.

      Rôles requis pour activer les API

      Pour activer les API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

      Activer les API

    gcloud

    1. Dans la console Google Cloud , activez Cloud Shell.

      Activer Cloud Shell

      En bas de la console Google Cloud , une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

    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é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éterminé les autorisations et les rôles spécifiques à la journalisation qui s'appliquent à votre cas d'utilisation. 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 en utiliser une 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

L'ID de ressource d'une clé Cloud KMS est requis lorsque vous activez CMEK pour un workflow. Dans ce document, consultez la section Activer CMEK pour un workflow.

Console

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

    Accéder à 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 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
    
  5. 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 lister toutes les versions d'une clé :

    1. Cliquez sur le nom de la clé.
    2. Pour 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 pour 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é 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
    

    Le résultat 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 le rôle IAM (Identity and Access Management) Chiffreur/Déchiffreur de CryptoKeys Cloud KMS à l'agent de service Workflows 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 la CMEK pour un workflow

Lorsque vous créez un workflow ou que vous 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

  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 des workflows s'affiche.

  3. Cliquez sur  Modifier.