Configurer CMEK pour les buckets de journaux

Ce document fournit des instructions pour 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 des clés CMEK.

Vous pouvez configurer CMEK en tant que paramètre de ressource par défaut pour une organisation ou un dossier. En cas de configuration, Cloud Logging garantit 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é lors de la création du bucket de journaux, la clé par défaut est utilisée. Pour en savoir plus, consultez la page Configurer des clés CMEK pour Cloud Logging.

Présentation

Par défaut, Cloud Logging chiffre le contenu client stocké au repos. Les données stockées dans des buckets de journaux par Logging sont chiffrées à l'aide de clés de chiffrement de clés, un processus appelé chiffrement encapsulé. L'accès à vos données de journalisation nécessite l'accès à ces clés de chiffrement de clé, qui sont gérées par Google gère sans aucune action de votre part.

Votre organisation peut avoir des exigences de chiffrement réglementaires, de conformité ou avancées que notre chiffrement au repos par défaut ne fournit pas. Pour répondre aux exigences de votre organisation, au lieu de laisser Google gérer les clés de chiffrement qui protègent vos données, vous pouvez gérer vos clés.

Pour en savoir plus sur l'utilisation des clés CMEK, y compris leurs avantages et leurs limites, consultez la page Clés de chiffrement gérées par le client.

Pour le chiffrement symétrique, la rotation périodique et automatique des clés est recommandée en termes de sécurité. Pour en savoir plus, consultez la section Rotation des clés.

Prérequis

Procédez comme suit :

  1. L'utilisation des clés CMEK présente certaines limites. Avant de créer un bucket de journaux dans lequel l'option CMEK est activée, consultez la section Limites.

  2. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

    gcloud init

    Ce guide fournit des instructions pour utiliser Google Cloud CLI.

  3. Créez ou identifiez le projet Google Cloud dans lequel vous souhaitez exécuter Cloud KMS.

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

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

  5. Assurez-vous de disposer des autorisations Cloud Logging suivantes:

    • logging.settings.get
    • logging.buckets.get
    • logging.buckets.list
    • logging.buckets.create
    • logging.buckets.update
  6. Activez l'API Cloud KMS pour le projet Google Cloud qui exécute Cloud KMS.

  7. Créez des clés et un trousseau de clés pour le projet Google Cloud qui exécute Cloud KMS.

    Pour aligner les domaines de défaillance, vous devez utiliser un trousseau de clés dont l'emplacement correspond au champ d'application régional de vos données:

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

  8. Identifiez les valeurs des variables suivantes:

    • BUCKET_ID est l'identifiant numérique unique du bucket Logging à créer.
    • BUCKET_PROJECT_ID correspond au nom du projet Google Cloud contenant le nouveau bucket de journaux.
    • KMS_PROJECT_ID est l'identifiant alphanumérique unique du projet Google Cloud exécutant Cloud KMS, composé du nom de votre projet Google Cloud et d'un numéro attribué de manière aléatoire.
    • KMS_KEY_LOCATION est la région de la clé Cloud KMS.
    • KMS_KEY_RING est le nom du trousseau de clés Cloud KMS.
    • KMS_KEY_NAME par le nom de la clé Cloud KMS. Son format est le suivant : projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY

    Pour en savoir plus sur l'emplacement des identifiants de ressource, consultez Identifier des projets.

Activer les CMEK

Une fois les conditions préalables effectuées, suivez ces instructions pour activer les CMEK sur un bucket de journaux individuel.

Identifier l'ID du compte de service

Pour déterminer l'ID de compte de service associé à la ressource Google Cloud pour laquelle la clé 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
    

    La commande précédente génère un compte de service pour la ressource spécifiée, lorsqu'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 indique le compte de service utilisé par Cloud Logging pour appeler Cloud Key Management Service. Le format du champ KMS_SERVICE_ACCT_NAME est service-PROJECT_NUMBER ou cmek-pPROJECT_NUMBER.

  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 la migration doit être effectuée et connaître les étapes à suivre, consultez la page Résoudre les problèmes liés à VPC Service Controls et au partage restreint de domaine.

Affecter le rôle Chiffreur/Déchiffreur

Lorsque vous configurez une clé CMEK au niveau du bucket de journaux, autorisez le compte de service à utiliser votre service Cloud KMS en attribuant le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS au 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

Définissez les variables dans la commande précédente comme suit:

  • Remplacez KMS_SERVICE_ACCT_NAME par la valeur kmsServiceAccountId que vous avez déterminée à l'étape précédente.

  • Remplacez les autres variables par les valeurs que vous avez déterminées lors des étapes préalables.

Créer un bucket de journaux et fournir la clé Cloud KMS

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

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

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

Pour vérifier que vous avez bien créé un bucket de journaux avec l'option CMEK activée, exécutez la commande suivante:

gcloud logging buckets list --project=BUCKET_PROJECT_ID

Dans le résultat tabulaire, vous verrez une colonne intitulée CMEK. Si la valeur de la colonne CMEK est TRUE, la fonctionnalité CMEK est activée 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 la commande suivante:

gcloud logging buckets describe BUCKET_ID

Gérer votre clé Cloud KMS

Les sections suivantes décrivent comment mettre à jour un bucket de journaux pour utiliser la dernière version de clé primaire d'une clé Cloud KMS. Elles expliquent également comment modifier, révoquer et désactiver votre clé Cloud KMS.

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 une rotation manuelle d'une clé Cloud KMS. À chaque rotation d'une clé, une nouvelle version est créée pour cette clé.

Si vous effectuez la rotation d'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éiez un bucket de journaux et que vous activez CMEK, puis que vous alterniez la clé Cloud KMS. Le bucket de journaux que vous avez créé n'utilise pas la nouvelle version de clé. Au lieu de cela, il continue de protéger ses données avec la version de clé marquée comme principale lors de la création du bucket de journaux.

Pour mettre à jour un bucket de journaux afin 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 associée au 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 comporte qu'une seule clé, cliquez sur Créer une clé.
  3. Remplacez la clé Cloud KMS du bucket de journaux par la clé Cloud KMS créée à l'étape précédente.
  4. Remplacez la clé Cloud KMS du bucket de journaux par 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 --cmek-kms-key-name=NEW_KMS_KEY_NAME

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 disposez d'un ensemble de données BigQuery associé, BigQuery ne peut pas utiliser cet accès pour appliquer la clé à une nouvelle table BigQuery. Si vous souhaitez utiliser sur une table BigQuery une clé qui n'est pas associée à Logging, consultez la documentation de BigQuery. Si vous révoquez l'accès de Logging à une clé et si 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 associé tout en conservant l'accès de Logging.

Pour en savoir plus sur les conséquences de la révocation d'accès, consultez la section 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

Limites

Voici quelques limites connues.

La fonctionnalité CMEK désactive Error Reporting

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

Impossible de supprimer la clé CMEK des buckets de journaux

Vous ne pouvez pas reconfigurer les buckets de journaux pour modifier ou supprimer les 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 d'autorisations de chiffrement et de déchiffrement sur la clé.

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

Perte de la reprise après sinistre

En cas de défaillance critique de l'espace de stockage principal de Cloud Logging, Logging met en miroir les données de journalisation dans des fichiers de reprise après sinistre. Lorsque CMEK est activé 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 des fichiers de reprise après sinistre n'affecte pas les opérations de journalisation normales. Toutefois, en cas de sinistre de stockage, Cloud Logging peut ne pas être en mesure de récupérer les journaux à partir de ressources dont la clé CMEK n'est pas correctement configurée.

Contraintes liées à l'assistance

Cloud Customer Care ne peut pas lire les journaux de votre ressource si sa clé n'est pas correctement configurée ou devient indisponible.

Performances de requête 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 aux clés est restauré, les données deviennent disponibles. Toutefois, les données sont initialement stockées dans un état non optimisé et les performances des requêtes peuvent en pâtir.

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

Lorsque vous utilisez une clé Cloud EKM, Google 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 des journaux dans des buckets de journaux, mais les utilisateurs ne peuvent pas y accéder.

Pour obtenir d'autres considérations et des alternatives potentielles lors de l'utilisation de clés externes, consultez la documentation de Cloud External Key Manager.

Régionalité

Lorsque vous créez un bucket de journaux et activez les 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 de clés 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

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

Résoudre les erreurs de configuration

Pour en savoir plus sur la résolution des erreurs de configuration des CMEK, consultez la page Résoudre les erreurs de configuration des CMEK et des organisations.