Configurer CMEK pour Cloud Logging

Ce document explique comment configurer et gérer des clés de chiffrement gérées par le client (CMEK) pour Cloud Logging afin de répondre aux besoins de conformité de votre organisation. Vous pouvez configurer CMEK en tant que paramètre de ressource par défaut pour une organisation, un dossier ou les deux. En cas de configuration, Cloud Logging garantit que tous les nouveaux buckets de journaux de l'organisation ou du dossier sont chiffrés à l'aide d'une clé gérée par le client.

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 configurer CMEK pour contrôler et gérer votre propre chiffrement.

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

Lorsque vous configurez CMEK comme paramètre de ressource par défaut pour Logging, les nouveaux buckets de journaux de l'organisation ou du dossier sont automatiquement chiffrés à l'aide de la clé configurée. Cependant, vous pouvez modifier cette clé ou créer des buckets de journaux et spécifier une clé différente. Pour en savoir plus, consultez la page Configurer des clés CMEK pour les buckets de journaux.

Prérequis

Pour commencer, 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. Recherchez les identifiants de l'organisation ou du dossier pour lesquels vous souhaitez activer les CMEK:

    • ORGANIZATION_ID est l'identifiant numérique unique de l'organisation Google Cloud pour laquelle vous activez les CMEK. Vous n'avez pas besoin de cette valeur si vous prévoyez uniquement de configurer la clé CMEK pour un dossier. Pour en savoir plus sur l'obtention de cet identifiant, consultez la section Obtenir votre ID d'organisation.
    • FOLDER_ID est l'identifiant numérique unique du dossier Google Cloud pour lequel vous activez les CMEK. Vous n'avez pas besoin de cette valeur si vous prévoyez uniquement de configurer la clé CMEK pour une organisation. Pour en savoir plus sur l'utilisation des dossiers, consultez la page Créer et gérer des dossiers.
  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 pour l'organisation:

    • logging.settings.get
    • logging.settings.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.

    Cloud Logging vous permet d'utiliser une clé 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 compatibles, consultez les pages suivantes:

    Si vous configurez CMEK comme paramètre de ressource par défaut pour Logging en suivant la procédure décrite dans ce document, les nouveaux buckets de journaux créés dans l'organisation ou le dossier sont automatiquement configurés pour CMEK. De plus, étant donné que l'emplacement d'un bucket de journaux doit correspondre à celui de la clé, vous ne pouvez plus créer de buckets de journaux dans la région global après avoir configuré CMEK comme paramètre de ressource par défaut.

  8. Identifiez les valeurs des paramètres Cloud KMS suivants:

    • 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. Pour en savoir plus sur l'obtention de cet identifiant, consultez la section Identifier des projets.
    • 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

Activer CMEK pour une organisation ou un dossier

Une fois ces étapes préalables exécutées, suivez ces instructions afin d'activer le chiffrement CMEK pour votre organisation Google Cloud.

Identifier l'ID du compte de service

Pour déterminer l'ID de compte de service associé à l'organisation ou au dossier pour lequel la clé CMEK s'appliquera, exécutez la commande gcloud logging settings describe suivante:

DOSSIER

 gcloud logging settings describe --folder=FOLDER_ID

ORGANIZATION

gcloud logging settings describe --organization=ORGANIZATION_ID

L'exécution de la commande précédente génère un compte de service pour l'organisation ou le dossier, s'il n'en existe pas déjà un, et renvoie l'ID dans le champ kmsServiceAccountId. Voici un exemple de réponse à la commande précédente lorsqu'une organisation est spécifiée:

kmsServiceAccountId: cmek-p12345@gcp-sa-logging.iam.gserviceaccount.com
name: organizations/ORGANIZATION_ID/settings

Dans cet exemple, la valeur de SERVICE_ACCT_NAME est cmek-p12345.

Exécutez le processus de provisionnement une seule fois par ressource. L'exécution de la commande describe plusieurs fois renvoie la même valeur pour le champ kmsServiceAccountId.

Si vous ne pouvez pas utiliser la Google Cloud CLI, exécutez la méthode API Cloud Logging getSettings.

Affecter le rôle Chiffreur/Déchiffreur

Pour utiliser le chiffrement CMEK, autorisez le compte de service à accéder à votre service Cloud KMS en lui attribuant le rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS :

gcloud

gcloud kms keys add-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member serviceAccount: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 comme suit :

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

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

Console

  1. Ouvrez le navigateur Clés Cloud Key Management Service dans Google Cloud Console.
    Ouvrir le navigateur de clés Cloud KMS
  2. Cliquez sur le nom du trousseau contenant la clé souhaitée.

  3. Cochez la case correspondant à la clé souhaitée.

    L'onglet Autorisations s'affiche.

  4. Dans la boîte de dialogue Ajouter des membres, indiquez l'adresse e-mail du compte de service Logging auquel vous accordez l'accès.

  5. Dans le menu déroulant Sélectionner un rôle, sélectionnez Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS.

  6. Cliquez sur Ajouter.

Configurer les règles d'administration

Logging accepte les règles d'administration qui peuvent nécessiter une protection CMEK et peut limiter les CryptoKeys Cloud KMS pouvant être utilisées pour la protection CMEK:

  • Lorsque logging.googleapis.com figure dans la liste des services de la stratégie Deny pour la contrainte constraints/gcp.restrictNonCmekServices, Logging refuse de créer des buckets définis par l'utilisateur qui ne sont pas protégés par des clés CMEK. Toutefois, cette contrainte n'empêche pas Cloud Logging de créer les buckets de journaux _Required et _Default, qui sont créés lors de la création d'un projet Google Cloud.

  • Lorsque la règle constraints/gcp.restrictCmekCryptoKeyProjects est appliquée, Logging crée des ressources protégées par une CryptoKey CMEK d'un projet, d'un dossier ou d'une organisation autorisés.

Pour en savoir plus sur les CMEK et les règles d'administration, consultez la page Règles d'administration CMEK.

Lorsqu'une règle d'administration spécifiant une contrainte de clé CMEK existe, assurez-vous que ces contraintes sont cohérentes avec les paramètres de ressources par défaut de Logging pour une organisation ou un dossier. En outre, si vous envisagez de modifier vos paramètres de ressources par défaut, examinez et, si nécessaire, mettez à jour les règles d'administration avant de les mettre à jour.

Pour afficher ou configurer les règles d'administration, procédez comme suit:

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez IAM et administration, puis Règles d'administration:

    Accéder à Règles d'administration

  2. Sélectionnez votre organisation.
  3. Vérifiez et, si nécessaire, mettez à jour les contraintes propres aux CMEK.

    Pour en savoir plus sur la modification d'une règle d'administration, consultez la page Créer et modifier des règles.

Configurer Cloud Logging avec la clé Cloud KMS

Pour configurer CMEK comme paramètre de ressource par défaut pour Logging, exécutez la commande gcloud logging settings update suivante:

DOSSIER

gcloud logging settings update \
    --folder=FOLDER_ID \
    --kms-location=KMS_KEY_LOCATION \
    --kms-key-name=KMS_KEY_NAME \
    --kms-keyring=KMS_KEY_RING \
    --kms-project=KMS_PROJECT_ID

La commande précédente met à jour les paramètres de ressource par défaut pour stocker des informations sur la clé Cloud KMS. Vous devez vous assurer que l'emplacement de stockage par défaut du dossier est défini sur la valeur de KMS_KEY_LOCATION. Si vous n'avez pas défini l'emplacement de stockage par défaut ou si la valeur de cet emplacement ne correspond pas à la valeur de KMS_KEY_LOCATION, ajoutez le code suivant à la commande précédente:

--storage-location = KMS_KEY_LOCATION

L'option --storage-location vous permet de définir ou de mettre à jour l'emplacement de stockage par défaut du dossier.

ORGANIZATION

gcloud logging settings update \
    --organization=ORGANIZATION_ID \
    --kms-location=KMS_KEY_LOCATION \
    --kms-key-name=KMS_KEY_NAME \
    --kms-keyring=KMS_KEY_RING \
    --kms-project=KMS_PROJECT_ID

La commande précédente met à jour les paramètres de ressource par défaut pour stocker des informations sur la clé Cloud KMS. Vous devez vous assurer que l'emplacement de stockage par défaut de l'organisation est défini sur la valeur de KMS_KEY_LOCATION. Si vous n'avez pas défini l'emplacement de stockage par défaut ou si la valeur de cet emplacement ne correspond pas à la valeur de KMS_KEY_LOCATION, ajoutez le code suivant à la commande précédente:

--storage-location = KMS_KEY_LOCATION

L'option --storage-location vous permet de définir ou de mettre à jour l'emplacement de stockage par défaut pour l'organisation.

Une fois la clé appliquée, les nouveaux buckets de journaux de l'organisation ou du dossier sont configurés pour chiffrer leurs données au repos à l'aide de cette clé. Vous pouvez également modifier les clés de buckets de journaux individuels. Vous ne pouvez pas créer de buckets de journaux dans la région global, car vous devez utiliser une clé dont la région correspond au champ d'application régional de vos données.

Si vous ne pouvez pas utiliser la Google Cloud CLI, exécutez la méthode API Cloud Logging updateSettings.

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

Pour vérifier que vous avez bien activé les CMEK pour une organisation ou un dossier, exécutez la commande gcloud logging settings describe suivante:

DOSSIER

gcloud logging settings describe --folder=FOLDER_ID

ORGANIZATION

gcloud logging settings describe --organization=ORGANIZATION_ID

La commande précédente renvoie le nom de la clé Cloud KMS:

kmsKeyName: KMS_KEY_NAME
kmsServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com

Si le champ kmsKeyName est renseigné, le chiffrement CMEK est activé pour l'organisation ou le dossier.

Acheminer les journaux vers les destinations compatibles

  • Les buckets de journaux Cloud Logging peuvent être configurés pour chiffrer les données à l'aide de clés CMEK. Lorsque vous configurez CMEK comme paramètre de ressource par défaut pour une organisation ou un dossier, les nouveaux buckets de journaux de l'organisation ou du dossier utilisent automatiquement CMEK. Vous pouvez modifier la clé de ces buckets de journaux et créer des buckets de journaux qui utilisent une clé KMS différente de celle spécifiée par les paramètres de ressource par défaut.

    Pour en savoir plus sur les CMEK appliquées aux buckets de journaux, y compris sur la modification des clés et des limites lors de l'activation des CMEK sur un bucket de journaux, consultez Configurer CMEK pour les buckets de journaux.

  • Cloud Storage est compatible avec le chiffrement CMEK pour le routage des journaux. Pour savoir comment configurer des clés CMEK pour Cloud Storage, consultez la page Utiliser des clés de chiffrement gérées par le client.

    Si des données sont perdues en raison de l'indisponibilité des clés lors de l'acheminement des données des journaux vers Cloud Storage, vous pouvez copier rétroactivement les journaux de manière groupée vers Cloud Storage lorsqu'ils sont également stockés dans un bucket de journaux. Pour plus de détails, consultez la section Copier les entrées de journal.

  • Par défaut, BigQuery chiffre le contenu client stocké au repos. Pour en savoir plus, consultez la page Protéger des données avec des clés Cloud Key Management Service.

  • Par défaut, Pub/Sub chiffre le contenu client stocké au repos. Pour en savoir plus, consultez la page Configurer le chiffrement des messages.

Gérer votre clé Cloud KMS

Les sections suivantes expliquent comment modifier, révoquer des accès ou désactiver votre clé Cloud KMS.

Modifier votre clé Cloud KMS

Pour modifier la clé Cloud KMS associée à une organisation ou à un dossier, créez une clé et mettez à jour les paramètres CMEK avec le nouveau nom de clé Cloud KMS:

DOSSIER

gcloud logging settings update \
    --folder=FOLDER_ID
    --kms-key-name=NEW_KMS_KEY_NAME
    --kms-location=NEW_KMS_KEY_LOCATION \
    --kms-keyring=NEW_KMS_KEY_RING \
    --kms-project=NEW_KMS_PROJECT_ID

Vous devez vous assurer que l'emplacement de stockage par défaut du dossier est défini sur la valeur de KMS_KEY_LOCATION. Si vous n'avez pas défini l'emplacement de stockage par défaut ou si la valeur de cet emplacement ne correspond pas à la valeur de KMS_KEY_LOCATION, ajoutez le code suivant à la commande précédente:

--storage-location = NEW_KMS_KEY_LOCATION

ORGANIZATION

gcloud logging settings update \
    --organization=ORGANIZATION_ID
    --kms-key-name=NEW_KMS_KEY_NAME
    --kms-location=NEW_KMS_KEY_LOCATION \
    --kms-keyring=NEW_KMS_KEY_RING \
    --kms-project=NEW_KMS_PROJECT_ID

Vous devez vous assurer que l'emplacement de stockage par défaut de l'organisation est défini sur la valeur de KMS_KEY_LOCATION. Si vous n'avez pas défini l'emplacement de stockage par défaut ou si la valeur de cet emplacement ne correspond pas à la valeur de KMS_KEY_LOCATION, ajoutez le code suivant à la commande précédente:

--storage-location = NEW_KMS_KEY_LOCATION

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

Vous pouvez révoquer l'accès de Logging à la clé Cloud KMS en supprimant l'autorisation IAM du compte de service configuré pour cette clé.

Si vous supprimez l'accès de Logging à une clé, un délai d'une heure peut être nécessaire pour que la modification soit prise en compte.

Pour révoquer l'accès de Logging à la clé Cloud KMS, exécutez la commande Google Cloud CLI suivante:

gcloud kms keys remove-iam-policy-binding \
    --project=KMS_PROJECT_ID \
    --member serviceAccount: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ésactiver les CMEK

Si vous désactivez la CMEK pour une organisation ou un dossier, l'application de la règle CMEK ne sera plus appliquée aux futures opérations. Toutes les configurations précédemment appliquées resteront intactes.

Pour désactiver CMEK sur une ressource pour laquelle CMEK est configuré comme paramètre de ressource par défaut, exécutez la commande Google Cloud CLI suivante:

DOSSIER

gcloud logging settings update --folder=FOLDER_ID --clear-kms-key

ORGANIZATION

gcloud logging settings update --organization=ORGANIZATION_ID --clear-kms-key

Si vous souhaitez détruire votre clé, consultez la page Détruire et restaurer des versions de clé.

Remarques concernant la rotation des clés Cloud KMS

Cloud Logging n'effectue pas automatiquement la rotation de la clé de chiffrement pour les fichiers temporaires de reprise après sinistre lors de la rotation de la clé Cloud KMS associée à l'organisation ou au dossier Google Cloud. Les fichiers de reprise existants continuent à utiliser la version de clé avec laquelle ils ont été créés. Les nouveaux fichiers de reprise utilisent la version actuelle de la clé principale.

Limites

Vous trouverez ci-dessous les limites connues lors de la configuration des clés CMEK comme paramètre de ressource par défaut pour Logging.

Indisponibilité du fichier de reprise après sinistre

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

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

Si Logging perd l'accès à la clé Cloud KMS, Logging ne peut pas écrire de fichiers temporaires de reprise après sinistre et, pour les utilisateurs, les requêtes cessent de fonctionner. Les performances des requêtes peuvent se dégrader, même après le rétablissement de l'accès aux clés.

L'acheminement des journaux vers Cloud Storage peut également être affecté, car Logging n'est pas en mesure d'écrire les fichiers temporaires nécessaires pour faciliter le routage. Si une erreur se produit lors du chiffrement ou du déchiffrement des données, une notification est envoyée au projet Google Cloud contenant la clé Cloud KMS.

Disponibilité des bibliothèques clientes

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

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.

Lorsque CMEK est configuré comme paramètre de ressource par défaut pour une organisation ou un dossier, si une clé gérée en externe n'est pas disponible, Cloud Logging effectue continuellement de nouvelles tentatives d'accès à la clé. Cloud Logging met également en mémoire tampon les données de journaux entrantes pendant une durée maximale d'une heure. Au bout d'une heure, si Cloud Logging ne parvient toujours pas à accéder à la clé gérée en externe, Cloud Logging commence à supprimer les données.

Si une clé CMEK est appliquée à un bucket de journaux et qu'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 pourront pas accéder à ces données.

Consultez la documentation de Cloud External Key Manager pour plus d'informations sur les clés externes et les autres solutions possibles.

Limites applicables aux buckets de journaux

Pour connaître les limites d'utilisation des clés CMEK avec des buckets de journaux, consultez la section Limites.

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 CMEK, consultez Résoudre les problèmes liés aux CMEK et aux erreurs de paramètres par défaut.