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

Par défaut, Eventarc chiffre le contenu client au repos. Eventarc 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 Eventarc. 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 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 clés CMEK, l'accès à vos ressources Eventarc 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).

Les clés de chiffrement gérées par le client sont stockées sous forme de clés logicielles, dans un cluster Cloud HSM ou en externe à l'aide de Cloud External Key Manager.

Éléments protégés par CMEK

Vous pouvez configurer CMEK pour chiffrer les messages d'événements qui transitent par les ressources suivantes:

  • MessageBus : bus Eventarc Advanced
  • Pipeline : pipeline Eventarc Advanced
  • GoogleApiSource : ressource représentant un abonnement aux événements de l'API Google pour un bus spécifique

Pour en savoir plus, consultez la présentation d'Eventarc Advanced.

Lorsque vous activez CMEK pour une ressource, il protège les données associées à la ressource dans cette région à l'aide d'une clé de chiffrement à laquelle vous seul pouvez accéder.

Cloud KMS et Eventarc sont des services régionalisés. La région de la clé Cloud KMS et de la ressource Eventarc Advanced protégée doivent être identiques.

Avant de commencer

Avant d'utiliser cette fonctionnalité dans Eventarc, vous devez effectuer les actions suivantes:

Console

  1. Enable the Cloud KMS and Eventarc APIs.

    Enable the APIs

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

gcloud

  1. Mettez à jour les composants gcloud.
    gcloud components update
  2. Activez les API Cloud KMS et Eventarc pour le projet qui stockera vos clés de chiffrement.
    gcloud services enable cloudkms.googleapis.com eventarc.googleapis.com
  3. Créez un trousseau de clés.
  4. Créez une clé pour un trousseau de clés spécifié.

Pour en savoir plus sur toutes les options et valeurs possibles, exécutez la commande avec l'option --help.

Accorder au compte de service Eventarc l'accès à une clé

Pour permettre au compte de service Eventarc d'accéder à la clé Cloud KMS, ajoutez-le en tant que compte principal de clé et attribuez-lui le rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS:

Console

Lorsque vous activez CMEK pour un bus ou un pipeline à l'aide de la console Google Cloud, vous êtes invité à attribuer le rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS au compte de service. Pour en savoir plus, consultez les sections Activer CMEK pour un bus ou Activer CMEK pour un pipeline dans ce document.

gcloud

 gcloud kms keys add-iam-policy-binding KEY_NAME \
     --keyring KEY_RING \
     --location REGION \
     --member serviceAccount:SERVICE_AGENT_EMAIL \
     --role roles/cloudkms.cryptoKeyEncrypterDecrypter

Remplacez les éléments suivants :

  • KEY_NAME: nom de la clé (par exemple, my-key)
  • KEY_RING: nom du trousseau de clés (par exemple, my-keyring)
  • REGION: emplacement de la clé (par exemple, us-central1)
  • SERVICE_AGENT_EMAIL: adresse e-mail du compte de service avec le rôle eventarc.serviceAgent

    Par exemple, service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com. Pour plus d'informations, consultez la page Agents de service.

Activer CMEK pour un bus

Lorsque vous activez le chiffrement CMEK pour un bus Eventarc Advanced, tous les messages qui transitent par le bus sont entièrement chiffrés avec cette clé CMEK.

Console

  1. Dans la console Google Cloud, accédez à la page Eventarc > Bus.

    Accéder à "Bus"

  2. Vous pouvez créer un bus ou, si vous mettez à jour un bus, cliquer sur son nom.

  3. Sur la page Détails du bus, cliquez sur Modifier.

  4. Sur la page Modifier le bus, sous Chiffrement, sélectionnez Clé Cloud KMS.

  5. Dans la liste Type de clé, sélectionnez une méthode pour gérer vos clés.

    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.

  6. Sélectionnez une clé gérée par le client.

  7. (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 clé au format spécifié.

  8. Si vous y êtes invité, attribuez le rôle cloudkms.cryptoKeyEncrypterDecrypter à l'agent de service Eventarc.

  9. Cliquez sur Enregistrer.

gcloud

Utilisez la commande gcloud beta eventarc message-buses update pour activer CMEK pour votre bus:

gcloud beta eventarc message-buses update BUS_NAME \
    --location=REGION \
    --crypto-key=KEY

Remplacez les éléments suivants :

  • BUS_NAME: l'ID ou l'identifiant complet de votre bus
  • REGION: un emplacement Eventarc Advanced compatible
  • KEY: nom complet de la clé Cloud KMS au format projects/PROJECT_NAME/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME

    Le REGION de la clé doit correspondre à l'emplacement du bus à protéger.

Vérifier l'utilisation de Cloud KMS

Vérifiez que le bus est désormais compatible avec CMEK.

Console

  1. Dans la console Google Cloud, accédez à la page Eventarc > Bus.

    Accéder à "Bus"

  2. Cliquez sur le nom du bus que vous avez protégé à l'aide du chiffrement CMEK.

  3. Sur la page Détails du bus, l'état Chiffrement affiche le message Event messages encrypted using customer-managed encryption keys.

gcloud

Utilisez la commande gcloud beta eventarc message-buses describe pour décrire votre bus:

 gcloud beta eventarc message-buses describe BUS_NAME \
     --location=REGION

La sortie devrait ressembler à ce qui suit :

 cryptoKeyName: projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
 name: projects/PROJECT_ID/locations/REGION/messageBuses/BUS_NAME
 updateTime: '2022-06-28T17:24:56.365866104Z'

La valeur cryptokeyName correspond à la clé Cloud KMS utilisée pour le bus.

Désactiver le chiffrement CMEK pour un bus

Vous pouvez désactiver la protection CMEK associée à un bus. Les événements distribués via le bus sont toujours protégés par des clés appartenant à Google et gérées par Google.

Console

  1. Dans la console Google Cloud, accédez à la page Eventarc > Bus.

    Accéder à "Bus"

  2. Cliquez sur le nom du bus.

  3. Sur la page Détails du bus, cliquez sur Modifier.

  4. Sur la page Modifier le bus, décochez la case Utiliser une clé de chiffrement gérée par le client (CMEK).

  5. Cliquez sur Enregistrer.

gcloud

Utilisez la commande gcloud beta eventarc message-buses update pour désactiver CMEK pour votre bus:

gcloud beta eventarc message-buses update BUS_NAME \
    --location=REGION \
    --clear-crypto-key

Activer CMEK pour un pipeline

Lorsque vous activez le chiffrement CMEK pour un pipeline Eventarc Advanced, tous les messages qui transitent par le pipeline sont entièrement chiffrés avec cette clé CMEK.

Console

  1. Dans la console Google Cloud, accédez à la page Eventarc > Pipelines.

    Accéder à la page Pipelines

  2. Vous pouvez créer un pipeline ou, si vous mettez à jour un pipeline, cliquer sur son nom.

  3. Sur la page Détails du pipeline, cliquez sur Modifier.

  4. Sur la page Modifier le pipeline, sous Chiffrement, sélectionnez Clé Cloud KMS.

  5. Dans la liste Type de clé, sélectionnez une méthode pour gérer vos clés.

    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.

  6. Sélectionnez une clé gérée par le client.

  7. (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 clé au format spécifié.

  8. Si vous y êtes invité, attribuez le rôle cloudkms.cryptoKeyEncrypterDecrypter à l'agent de service Eventarc.

  9. Cliquez sur Enregistrer.

gcloud

Utilisez la commande gcloud beta eventarc pipelines update pour activer le chiffrement CMEK pour un pipeline:

 gcloud beta eventarc pipelines update PIPELINE_NAME \
     --location=REGION \
     --crypto-key=KEY

Remplacez les éléments suivants :

  • PIPELINE_NAME: ID ou identifiant complet de votre pipeline
  • REGION: un emplacement Eventarc Advanced compatible
  • KEY: nom complet de la clé Cloud KMS au format projects/PROJECT_NAME/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME

    Le REGION de la clé doit correspondre à l'emplacement du pipeline à protéger.

Vérifier l'utilisation de Cloud KMS

Vérifiez que le pipeline est désormais compatible avec CMEK.

Console

  1. Dans la console Google Cloud, accédez à la page Eventarc > Pipelines.

    Accéder à la page Pipelines

  2. Cliquez sur le nom du pipeline que vous avez protégé à l'aide du chiffrement CMEK.

  3. Sur la page Détails du pipeline, l'état Chiffrement affiche le message Event messages encrypted using customer-managed encryption keys.

gcloud

Utilisez la commande gcloud beta eventarc pipelines describe pour vérifier CMEK pour votre pipeline:

 gcloud beta eventarc pipelines describe PIPELINE_NAME \
     --location=REGION

La sortie devrait ressembler à ce qui suit :

 createTime: '2022-06-28T18:05:52.403999904Z'
 cryptoKeyName: projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
 destinations: ...
 name: projects/PROJECT_ID/locations/REGION/pipelines/PIPELINE_NAME
 uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3
 updateTime: '2022-06-28T18:09:18.650727516Z'

La valeur cryptokeyName affiche la clé Cloud KMS utilisée pour le pipeline.

Désactiver le chiffrement CMEK pour un pipeline

Vous pouvez désactiver la protection CMEK associée à un pipeline. Les événements distribués via le pipeline sont toujours protégés par des clés appartenant à Google et gérées par Google.

Console

  1. Dans la console Google Cloud, accédez à la page Eventarc > Pipelines.

    Accéder à la page Pipelines

  2. Cliquez sur le nom du pipeline.

  3. Sur la page Détails du pipeline, cliquez sur Modifier.

  4. Sur la page Modifier le pipeline, décochez la case Utiliser une clé de chiffrement gérée par le client (CMEK).

  5. Cliquez sur Enregistrer.

gcloud

Utilisez la commande gcloud beta eventarc pipelines update pour désactiver le chiffrement CMEK pour votre pipeline:

gcloud beta eventarc pipelines update PIPELINE_NAME \
    --location=REGION \
    --clear-crypto-key

Activer CMEK pour les sources d'API Google

Lorsque vous activez le chiffrement CMEK pour une ressource GoogleApiSource, tous les messages collectés pour cette ressource sont entièrement chiffrés avec la clé CMEK.

Console

  1. Dans la console Google Cloud, accédez à la page Eventarc > Bus.

    Accéder à "Bus"

  2. Vous pouvez créer un bus ou, si vous mettez à jour un bus, cliquer sur son nom.

  3. Sur la page Détails du bus, cliquez sur Modifier.

  4. Pour ajouter une source de messages, cliquez sur  Ajouter une source.

    Si une source de messages existe déjà, vous devez d'abord la supprimer, puis ajouter une nouvelle source de messages.

  5. Dans le volet Ajouter une source de message, pour le fournisseur de messages de l'API Google, acceptez la valeur par défaut google-api-source.

  6. Pour Chiffrement, sélectionnez Clé Cloud KMS, puis procédez comme suit:

    1. Dans la liste Type de clé, sélectionnez une méthode pour gérer vos clés.

      Vous pouvez gérer vos clés manuellement ou utiliser Autokey, qui vous permet de générer des trousseaux de clés 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.

    2. Dans Sélectionner une clé gérée par le client, sélectionnez une clé.

      Vous devez sélectionner une région avant de pouvoir afficher vos clés gérées par le client.

    3. (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 clé au format spécifié.

    4. Si vous y êtes invité, attribuez le rôle cloudkms.cryptoKeyEncrypterDecrypter à l'agent de service Eventarc.

  7. Cliquez sur Créer.

    Cela permet de collecter automatiquement les événements provenant directement de sources Google, et tous les messages d'événement sont entièrement chiffrés avec la clé CMEK.

    Seuls les événements provenant de ressources du même projet Google Cloud que GoogleApiSource sont publiés. Pour en savoir plus, consultez la section Publier des événements à partir de sources Google.

  8. Cliquez sur Enregistrer.

gcloud

Utilisez la commande gcloud beta eventarc google-api-sources update pour activer CMEK pour votre ressource GoogleApiSource:

gcloud beta eventarc google-api-sources update GOOGLE_API_SOURCE_NAME \
    --location=REGION \
    --crypto-key=KEY

Remplacez les éléments suivants :

  • GOOGLE_API_SOURCE_NAME: ID ou identifiant complet de votre ressource GoogleApiSource
  • REGION: un emplacement Eventarc Advanced compatible
  • KEY: nom complet de la clé Cloud KMS au format projects/PROJECT_NAME/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME

    Le REGION de la clé doit correspondre à l'emplacement de la ressource à protéger.

Vérifier l'utilisation de Cloud KMS

Vérifiez que la ressource est désormais compatible avec CMEK.

Console

  1. Dans la console Google Cloud, accédez à la page Eventarc > Bus.

    Accéder à "Bus"

  2. Cliquez sur le nom du bus dont vous avez protégé la source de messages à l'aide d'une clé Cloud KMS.

  3. Sur la page Détails du bus, cliquez sur Modifier.

    La clé qui chiffre votre source de message doit être listée.

gcloud

Utilisez la commande gcloud beta eventarc google-api-sources describe pour vérifier la CMEK de votre ressource GoogleApiSource:

  gcloud beta eventarc google-api-sources describe GOOGLE_API_SOURCE_NAME \
      --location=REGION

La sortie devrait ressembler à ce qui suit :

  createTime: '2022-06-28T18:05:52.403999904Z'
  cryptoKeyName: projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
  destination: projects/PROJECT_ID/locations/REGION/messageBuses/BUS_NAME
  name: projects/PROJECT_ID/locations/REGION/googleApiSources/GOOGLE_API_SOURCE_NAME
  uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3
  updateTime: '2022-06-28T18:09:18.650727516Z'

La valeur cryptokeyName affiche la clé Cloud KMS utilisée pour le pipeline.

Désactiver CMEK pour les sources d'API Google

Vous pouvez désactiver la protection CMEK associée aux sources d'API Google. Les événements collectés via la ressource GoogleApiSource sont toujours protégés par des clés appartenant à Google et gérées par Google.

Console

  1. Dans la console Google Cloud, accédez à la page Eventarc > Bus.

    Accéder à "Bus"

  2. Cliquez sur le nom du bus dont vous avez protégé la source de message à l'aide de CMEK.

  3. Sur la page Détails du bus, cliquez sur Modifier.

  4. Pour supprimer la source de message chiffrée par une clé Cloud KMS, cliquez sur  Supprimer la ressource.

  5. Si nécessaire, ajoutez à nouveau la source du message.

gcloud

Utilisez la commande gcloud beta eventarc google-api-sources update pour désactiver le chiffrement CMEK pour votre ressource GoogleApiSource:

gcloud beta eventarc google-api-sources update GOOGLE_API_SOURCE_NAME \
    --location=REGION \
    --clear-crypto-key

Désactiver et activer des clés Cloud KMS

Une version de clé stocke le matériel de clé cryptographique que vous utilisez pour chiffrer, déchiffrer, signer et valider les données. Vous pouvez désactiver cette version de clé pour que les données chiffrées avec la clé ne soient pas accessibles.

Lorsque Eventarc ne peut pas accéder aux clés Cloud KMS, le routage des événements échoue avec des erreurs FAILED_PRECONDITION et la distribution des événements s'arrête. Vous pouvez activer une clé à l'état Désactivée afin que les données chiffrées soient à nouveau accessibles.

Désactiver des clés Cloud KMS

Pour empêcher Eventarc d'utiliser la clé pour chiffrer ou déchiffrer vos données d'événement, effectuez l'une des opérations suivantes :

  • Nous vous recommandons de désactiver la version de clé que vous avez configurée pour le bus ou le pipeline. Cela n'affecte que le bus ou le pipeline Eventarc Advanced associé à la clé spécifique.
  • (Facultatif) Révoquez le rôle cloudkms.cryptoKeyEncrypterDecrypter du compte de service Eventarc. Cela affecte toutes les ressources Eventarc du projet qui sont compatibles avec les événements chiffrés à l'aide de CMEK.

Même si aucune de ces opérations ne garantit une révocation immédiate des accès, les modifications de la gestion de l'authentification et des accès (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.

Réactiver des clés Cloud KMS

Pour reprendre la diffusion et l'acheminement des événements, rétablissez l'accès à Cloud KMS.

Journalisation et dépannage des audits

Cloud KMS génère des journaux d'audit Cloud lorsque les clés sont activées, désactivées ou utilisées par les ressources Eventarc Advanced pour chiffrer et déchiffrer les messages. Pour en savoir plus, consultez la page Informations sur la journalisation d'audit Cloud KMS.

Pour résoudre les problèmes que vous pouvez rencontrer lors de l'utilisation de clés gérées en externe via Cloud External Key Manager (Cloud EKM), consultez la documentation de référence sur les erreurs Cloud EKM.

Tarifs

L'intégration du bus 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. L'utilisation de CMEK pour un pipeline entraîne des frais d'accès au service Cloud KMS en fonction de la tarification Pub/Sub.

Pour en savoir plus sur les informations tarifaires les plus récentes, consultez la page Tarifs de Cloud KMS.

Étape suivante