Configurer CMEK pour les buckets de journaux

Ce document explique comment configurer des clés de chiffrement gérées par le client (CMEK) pour les journaux stockés dans des buckets de journaux. Ce document explique également comment gérer ces clés et décrit les limites associées à l'utilisation de CMEK.

Pour les organisations et les dossiers, vous pouvez configurer CMEK comme paramètre de ressource par défaut pour Cloud Logging. Lorsqu'il est configuré, Cloud Logging s'assure que tous les nouveaux buckets de journaux de l'organisation ou du dossier sont chiffrés avec une clé gérée par le client. Si vous ne fournissez pas de clé lorsque vous créez un bucket de journaux, la clé spécifiée par les paramètres de ressources par défaut pour Cloud Logging est utilisée. Pour en savoir plus, consultez Configurer CMEK pour Cloud Logging.

Les informations de ce document ne s'appliquent pas aux buckets d'observabilité. Si vous êtes intéressé par les buckets d'observabilité, consultez Définir des valeurs par défaut pour les buckets d'observabilité.

Présentation

Par défaut, Cloud Logging chiffre le contenu client au repos. La journalisation 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 Logging. 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. Grâce à Cloud KMS, vous pouvez également afficher les journaux d'audit et 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 Logging 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).

Prérequis

Procédez comme suit :

  1. L'utilisation de CMEK comporte certaines limites. Avant de créer un bucket de journaux avec CMEK activé, consultez les limites.

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

  3. Configurez le projet Google Cloud dans lequel vous prévoyez de créer vos clés :

    1. Pour obtenir les autorisations nécessaires pour créer des clés, demandez à votre administrateur de vous accorder le rôle IAM Administrateur Cloud KMS (roles/cloudkms.admin) sur le projet ou une ressource parente. Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

      Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

    2. Activez l'API Cloud KMS.

    3. Créez un trousseau de clés et des clés.

      Cloud Logging vous permet d'utiliser une clé provenant de n'importe quelle région. Toutefois, lorsque vous créez un bucket de journaux, son emplacement doit correspondre à celui de la clé. Pour en savoir plus sur les régions prises en charge, consultez les pages suivantes :

      Vous ne pouvez pas activer la CMEK pour les buckets de journaux créés dans la région global.

  4. Assurez-vous de disposer des autorisations Cloud Logging suivantes sur le projetGoogle Cloud dans lequel vous prévoyez de créer des buckets de journaux :

    • logging.settings.get
    • logging.buckets.get
    • logging.buckets.list
    • logging.buckets.create
    • logging.buckets.update

Activer les CMEK

Une fois les étapes requises effectuées, suivez ces instructions pour activer CMEK pour un bucket de journaux individuel.

Identifier l'ID du compte de service

Pour déterminer l'ID du compte de service associé à la ressource Google Cloudà laquelle la CMEK s'appliquera, procédez comme suit :

  1. Exécutez la commande gcloud logging settings describe suivante :

    gcloud logging settings describe --project=BUCKET_PROJECT_ID
    

    Avant d'exécuter la commande précédente, effectuez le remplacement suivant :

    • BUCKET_PROJECT_ID : nom du projet Google Cloud dans lequel vous prévoyez de créer le bucket de journaux.

    La commande précédente génère un compte de service pour la ressource spécifiée, s'il n'en existe pas déjà un, et renvoie l'ID de ce compte de service dans le champ kmsServiceAccountId :

    kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
    loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
    name: projects/BUCKET_PROJECT_ID/settings
    

    Le champ kmsServiceAccountId liste le compte de service utilisé par Cloud Logging pour appeler Cloud Key Management Service.

  2. Si le champ KMS_SERVICE_ACCT_NAME est au format cmek-pPROJECT_NUMBER et si vous utilisez VPC Service Controls ou si vous activez le partage restreint au domaine, déterminez si vous devez migrer votre compte de service CMEK. Pour savoir quand vous devez migrer et connaître les étapes à suivre, consultez Résoudre les problèmes liés à VPC Service Controls et au partage restreint au domaine.

Affecter le rôle Chiffreur/Déchiffreur

Lorsque vous configurez une CMEK au niveau du bucket de journaux, accordez au compte de service l'autorisation d'utiliser votre clé Cloud KMS en lui attribuant le rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS. Pour ce faire, utilisez le compte de service identifié par le champ kmsServiceAccountId :

gcloud kms keys add-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member=serviceAccount:KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING \
KMS_KEY_NAME

Avant d'exécuter la commande précédente, effectuez les remplacements suivants :

  • KMS_PROJECT_ID : identifiant alphanumérique unique, composé du nom de votre projet Google Cloud et d'un numéro attribué de manière aléatoire, du projet Google Cloud exécutant Cloud KMS. Pour savoir comment obtenir cet identifiant, consultez Identifier des projets.
  • KMS_SERVICE_ACCT_NAME : nom du compte de service affiché dans le champ kmsServiceAccountId de la réponse à la commande gcloud logging settings describe.
  • KMS_KEY_LOCATION : région de la clé Cloud KMS.
  • KMS_KEY_RING : nom du trousseau de clés Cloud KMS.
  • KMS_KEY_NAME : nom de la clé Cloud KMS. Il est mis en forme comme suit : projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY.

Créez un bucket de journaux et fournissez la clé Cloud KMS.

Pour créer un bucket de journaux et activer CMEK pour ce bucket, exécutez la commande gcloud logging buckets create suivante :

gcloud logging buckets create BUCKET_ID \
--location=LOCATION \
--cmek-kms-key-name=KMS_KEY_NAME \
--project=BUCKET_PROJECT_ID

Avant d'exécuter la commande précédente, effectuez les remplacements suivants :

  • BUCKET_ID : nom ou ID du bucket de journaux.
  • LOCATION : emplacement du bucket de journaux.
  • KMS_KEY_NAME : nom de la clé Cloud KMS. Il est mis en forme comme suit : projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY.
  • BUCKET_PROJECT_ID : nom du projet Google Cloud dans lequel le bucket de journaux sera créé.

Vérifier l'activation des clés de chiffrement

Pour vérifier que vous avez bien créé un bucket de journaux avec CMEK activé, exécutez la commande gcloud logging buckets list suivante :

gcloud logging buckets list --project=BUCKET_PROJECT_ID

Avant d'exécuter la commande précédente, effectuez le remplacement suivant :

  • BUCKET_PROJECT_ID : nom du projet Google Cloud qui stocke le bucket de journaux.

Dans le résultat tabulaire, vous voyez une colonne intitulée CMEK. Si la valeur de la colonne CMEK est TRUE, cela signifie que CMEK est activé pour le bucket de journaux.

Pour afficher les détails d'un bucket de journaux spécifique, y compris ceux de la clé, exécutez cette commande :

gcloud logging buckets describe BUCKET_ID --location=LOCATION --project=BUCKET_PROJECT_ID

Gérer votre clé Cloud KMS

Les sections suivantes décrivent comment mettre à jour un bucket de journaux pour qu'il utilise la dernière version de la clé primaire d'une clé Cloud KMS. Ils décrivent également comment modifier ou révoquer l'accès à votre clé Cloud KMS, ou la désactiver.

Effectuer une rotation de votre clé Cloud KMS

Lorsque vous créez une clé Cloud KMS, vous pouvez configurer une période de rotation. Vous pouvez également effectuer manuellement la rotation d'une clé Cloud KMS. Chaque fois qu'une clé est permutée, une nouvelle version de cette clé est créée.

Si vous alternez une clé Cloud KMS, la nouvelle version de clé ne s'applique qu'aux buckets de journaux créés après la rotation des clés. Si la clé est utilisée par un bucket de journaux existant, la rotation de la clé ne modifie pas la façon dont le bucket de journaux protège ses données.

Par exemple, supposons que vous créez un bucket de journaux et que vous activez CMEK, puis que vous faites alterner la clé Cloud KMS. Le bucket de journaux que vous avez créé n'utilise pas la nouvelle version de clé. Il continue plutôt à protéger ses données avec la version de clé qui était marquée comme principale lors de la création du bucket de journaux.

Pour mettre à jour un bucket de journaux de sorte qu'il utilise la version de clé primaire la plus récente d'une clé Cloud KMS, procédez comme suit :

  1. Identifiez la clé Cloud KMS actuelle du bucket de journaux. Pour en savoir plus, consultez Vérifier l'activation des clés.
  2. Identifiez une autre clé Cloud KMS que vous pouvez utiliser. Si votre trousseau de clés ne contient qu'une seule clé, cliquez sur Créer une clé.
  3. Modifiez la clé Cloud KMS du bucket de journaux en remplaçant celle par défaut par la clé Cloud KMS créée à l'étape précédente.
  4. Modifiez la clé Cloud KMS du bucket de journaux pour revenir à la clé Cloud KMS d'origine.

Modifier votre clé Cloud KMS

Pour modifier la clé Cloud KMS associée à votre bucket de journaux, créez une clé et mettez à jour les paramètres CMEK du bucket de journaux :

gcloud logging buckets update BUCKET_ID --location=LOCATION \
--cmek-kms-key-name=NEW_KMS_KEY_NAME --project=BUCKET_PROJECT_ID
  • BUCKET_ID : nom ou ID du bucket de journaux.
  • LOCATION : emplacement du bucket de journaux.
  • NEW_KMS_KEY_NAME : nom de la nouvelle clé.
  • BUCKET_PROJECT_ID : nom du projet Google Cloud qui stocke le bucket de journaux.

Révoquer l'accès à la clé Cloud KMS

Pour révoquer l'accès de Logging à la clé Cloud KMS à tout moment, supprimez l'autorisation IAM du compte de service configuré pour cette clé.

Si vous supprimez l'accès de Logging à une clé, la prise en compte de la modification peut prendre jusqu'à une heure.

Si vous avez associé un ensemble de données BigQuery, BigQuery ne peut pas utiliser cet accès pour appliquer une clé à une nouvelle table BigQuery. Si vous souhaitez utiliser une clé sur une table BigQuery qui n'est pas associée à Logging, consultez la documentation de BigQuery. Si vous révoquez l'accès de Logging à une clé et que vous disposez d'un ensemble de données BigQuery associé, vous révoquez également l'accès de BigQuery à la même clé.

Vous ne pouvez pas révoquer l'accès de BigQuery à la clé de l'ensemble de données BigQuery associé tout en conservant l'accès de Logging.

Pour en savoir plus sur l'impact de la révocation de l'accès, consultez Limites.

Pour supprimer l'accès de Logging à une clé, exécutez la commande suivante :

gcloud kms keys remove-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member=serviceAccount:KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING \
KMS_KEY_NAME

Avant d'exécuter la commande précédente, effectuez les remplacements suivants :

  • KMS_PROJECT_ID : identifiant alphanumérique unique, composé du nom de votre projet Google Cloud et d'un numéro attribué de manière aléatoire, du projet Google Cloud exécutant Cloud KMS. Pour savoir comment obtenir cet identifiant, consultez Identifier des projets.
  • KMS_SERVICE_ACCT_NAME : nom du compte de service affiché dans le champ kmsServiceAccountId de la réponse à la commande gcloud logging settings describe.
  • KMS_KEY_LOCATION : région de la clé Cloud KMS.
  • KMS_KEY_RING : nom du trousseau de clés Cloud KMS.
  • KMS_KEY_NAME : nom de la clé Cloud KMS. Il est mis en forme comme suit : projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY.

Limites

Voici les limites connues.

Les CMEK désactivent Error Reporting

Si vous souhaitez utiliser Error Reporting, n'activez pas les clés de chiffrement gérées par le client (CMEK) dans vos buckets de journaux. Pour en savoir plus, consultez la section Dépannage.

Impossible de supprimer CMEK des buckets de journaux

Vous ne pouvez pas reconfigurer les buckets de journaux pour modifier ou supprimer la clé CMEK.

Dégradation due à l'indisponibilité de la clé Cloud KMS

Une clé Cloud KMS est considérée comme disponible et accessible par Logging si les deux conditions suivantes sont remplies :

  • La clé est activée.
  • Le compte de service Logging dispose des autorisations de chiffrement et de déchiffrement sur la clé.

La journalisation recommande vivement de s'assurer que toutes les clés sont correctement configurées et toujours disponibles.

Perte de la reprise après sinistre

En cas de défaillance critique du stockage principal de Cloud Logging, Logging réplique les données de journalisation dans des fichiers de reprise après sinistre. Lorsque la CMEK est activée pour une ressource, telle qu'une organisation Google Cloud , les journaux appartenant à cette ressource sont protégés par la clé CMEK configurée. Si la clé CMEK n'est pas accessible, les fichiers de reprise après sinistre ne peuvent pas être écrits pour cette ressource.

La perte de fichiers de reprise après sinistre n'a aucune incidence sur les opérations de journalisation normales. Toutefois, en cas de catastrophe de stockage, Cloud Logging peut ne pas être en mesure de récupérer les journaux des ressources dont la clé CMEK n'est pas correctement configurée.

Contraintes de compatibilité

Le service client Cloud ne peut pas lire les journaux de vos ressources si leur clé n'est pas correctement configurée ou devient indisponible.

Performances des requêtes dégradées

Lorsqu'une clé de chiffrement gérée par le client est inaccessible, Cloud Logging continue de chiffrer vos données et de les stocker dans des buckets de journaux. Toutefois, Cloud Logging ne peut pas effectuer d'optimisations en arrière-plan sur ces données. Si l'accès à la clé est rétabli, les données deviennent disponibles. Toutefois, elles sont initialement stockées dans un état non optimisé, ce qui peut nuire aux performances des requêtes.

Dégradation due à l'indisponibilité de la clé Cloud EKM

Lorsque vous utilisez une clé Cloud EKM, Google Cloud n'a aucun contrôle sur la disponibilité de votre clé gérée en externe dans le système partenaire de gestion des clés externes. Pour les CMEK au niveau du bucket, si une clé gérée en externe n'est pas disponible, Cloud Logging continue de stocker les journaux dans les buckets de journaux, mais les utilisateurs ne peuvent pas y accéder.

Pour en savoir plus sur les éléments à prendre en compte et les alternatives potentielles lorsque vous utilisez des clés externes, consultez la documentation Cloud External Key Manager.

Régionalité

Lorsque vous créez un bucket de journaux et que vous activez CMEK, vous devez utiliser une clé dont la région correspond au champ d'application régional de vos données. Vous ne pouvez pas configurer CMEK pour les buckets de journaux créés dans la région global.

Disponibilité des bibliothèques clientes

Les bibliothèques clientes de Logging ne fournissent pas de méthodes pour configurer CMEK.

Quotas

Lorsque vous utilisez des clés CMEK dans Logging, vos projets peuvent consommer des quotas de requêtes de chiffrement Cloud KMS. Par exemple, l'activation de CMEK sur un bucket de journaux peut consommer ces quotas. Les opérations de chiffrement et de déchiffrement à l'aide de clés CMEK n'affectent les quotas Cloud KMS que si vous utilisez des clés matérielles (Cloud HSM) ou externes (Cloud EKM). Pour en savoir plus, consultez la page Quotas Cloud KMS.

Pour en savoir plus sur les limites d'utilisation de Logging, consultez la page Quotas et limites.

Résoudre les erreurs de configuration

Pour savoir comment résoudre les erreurs de configuration CMEK, consultez Résoudre les erreurs liées aux paramètres CMEK et de l'organisation.