Configurer CMEK pour Cloud Logging

Ce document explique comment configurer et gérer les clés de chiffrement gérées par le client (CMEK) pour Cloud Logging afin de répondre aux exigences de conformité de votre organisation. Vous pouvez configurer CMEK comme paramètre de ressource par défaut organization, un dossier, ou les deux. Une fois 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.

Présentation

Par défaut, Cloud Logging chiffre le contenu client stocké au repos. Les données stockées par Logging dans des buckets de journaux sont chiffrées 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 de chiffrement qui protègent vos données, vous pouvez configurer les CMEK et gérer votre propre chiffrement.

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

Si vous configurez CMEK comme paramètre de ressource par défaut pour Journalisation, nouveaux buckets de journaux dans l'organisation ou le dossier sont automatiquement chiffrées à l'aide de la clé configurée. Toutefois, vous pouvez modifier cette clé ou créer des buckets de journaux et spécifier une autre clé. Pour en savoir plus, consultez Configurez des clés CMEK pour les buckets de journaux.

Prérequis

Pour commencer, procédez comme suit :

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

  2. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

    Ce guide fournit des instructions à l'aide de la 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 du Organisation Google Cloud pour laquelle vous activez les CMEK. Vous n'avez pas besoin de cette valeur si vous prévoyez uniquement de configurer une clé CMEK pour . Pour savoir comment obtenir cet identifiant, consultez Obtenez l'ID de votre organisation.
    • FOLDER_ID est l'identifiant numérique unique du Dossier Google Cloud pour lequel vous activez le chiffrement CMEK. Vous n'avez pas besoin de cette valeur si vous prévoyez uniquement de configurer le CMEK pour une organisation. Pour en savoir plus sur l'utilisation des dossiers, consultez la section Créer et gérer des dossiers
  4. Pour obtenir les autorisations dont vous avez besoin 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 la page Gérer l'accès aux projets, aux dossiers et aux organisations.

    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 le 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 disponibles, consultez les ressources suivantes:

    Si vous configurez CMEK comme paramètre de ressource par défaut pour Logging en suivant les étapes de ce document, les buckets de journaux créés dans l'organisation ou le dossier automatiquement configurés pour les CMEK. De plus, comme l'emplacement le bucket de journaux doit correspondre à l'emplacement de la clé, une fois la configuration terminée "CMEK" comme paramètre de ressource par défaut, vous ne pouvez pas créer des buckets de journaux dans la région global.

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

    • KMS_PROJECT_ID est l'identifiant alphanumérique unique ; composé du nom de votre projet Google Cloud et d'un fichier du projet Google Cloud en cours d'exécution Cloud KMS. Pour savoir comment obtenir cet identifiant, consultez la section Identifier des projets.
    • KMS_KEY_LOCATION est la clé Cloud KMS dans la même région.
    • KMS_KEY_RING est le trousseau de clés Cloud KMS son nom.
    • 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 les 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

Déterminer l'ID de compte de service associé à l'organisation ou au dossier pour lesquelles la clé CMEK s'applique, exécutez la commande gcloud logging settings describe :

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 un dossier, lorsqu'il n'en existe pas déjà, 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. Exécuter describe renvoie la même valeur pour kmsServiceAccountId .

Si vous ne pouvez pas utiliser la Google Cloud CLI, exécutez la Méthode getSettings de l'API Cloud Logging

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 dans le prérequis.

Console

  1. Ouvrez le navigateur Clés Cloud Key Management Service dans la console Google Cloud.
    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

La journalisation est compatible avec les règles d'administration qui peuvent exiger une protection CMEK et limiter les clés de chiffrement Cloud KMS utilisables pour la protection CMEK :

  • Lorsque logging.googleapis.com figure dans la liste des services de la règle Deny pour le 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 Buckets de journaux _Required et _Default, créés lorsqu'un le projet Google Cloud est créé.

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

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

Lorsqu'une règle d'administration spécifiant une contrainte 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. De plus, si vous prévoyez de modifier vos paramètres de ressources par défaut, examinez et, si nécessaire, mettez à jour les règles de l'organisation avant de le faire.

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

  1. Dans la console Google Cloud, accédez à la page Règles d'administration :

    Accédez à Règles d'administration.

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est IAM et administration.

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

    Pour savoir comment modifier une règle d'administration, consultez 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 la journalisation, 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 sur la clé Cloud KMS. Vous devez vous assurer que 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 la zone géographique ne correspond pas à la valeur de KMS_KEY_LOCATION, alors Ajoutez ce qui suit à 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 sur la clé Cloud KMS. Vous devez vous assurer que Emplacement de stockage par défaut pour l'organisation est défini sur la valeur KMS_KEY_LOCATION. Si vous n'avez pas défini l'emplacement de stockage par défaut, ou si la valeur de cet emplacement la zone géographique ne correspond pas à la valeur de KMS_KEY_LOCATION, alors Ajoutez ce qui suit à la commande précédente:

--storage-location = KMS_KEY_LOCATION

L'option --storage-location vous permet de définir ou de mettre à jour emplacement de stockage par défaut de 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 changer de clé pour des buckets de journaux individuels. Vous ne pouvez pas créer de buckets de journaux la région global, car vous devez utiliser une clé dont region 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 updateSettings de l'API Cloud Logging

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 suivante : gcloud logging settings describe :

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é, la clé CMEK est activée pour une organisation ou un dossier.

Acheminer les journaux vers les destinations compatibles

  • Vous pouvez configurer les buckets de journaux Cloud Logging pour chiffrer les données avec CMEK. Lorsque vous configurez CMEK en tant que paramètre de ressource par défaut pour une organisation ou un dossier, les nouveaux buckets de l'organisation ou du dossier utilisent automatiquement des clés 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 ressources par défaut.

    Pour en savoir plus sur les clés CMEK appliquées aux buckets de journaux, y compris sur la manière de modifier les clés et les limites lorsque vous activez les CMEK sur un bucket de journaux, consultez Configurez des clés CMEK pour les buckets de journaux.

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

    Si les données sont perdues en raison de l'indisponibilité des clés lors de l'acheminement des données des journaux vers dans Cloud Storage, vous pouvez copier rétroactivement les journaux de manière groupée Cloud Storage lorsque ces journaux 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 créez une clé, puis mettez à jour les paramètres CMEK par le nouveau nom de la clé Cloud KMS:

FOLDER

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 à celle de KMS_KEY_LOCATION, ajoutez ce qui suit à 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 Emplacement de stockage par défaut pour l'organisation est défini sur la valeur KMS_KEY_LOCATION. Si vous n'avez pas défini l'emplacement de stockage par défaut, ou si la valeur de cet emplacement la zone géographique ne correspond pas à la valeur de KMS_KEY_LOCATION, alors Ajoutez ce qui suit à 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é, cela peut prendre jusqu'à une heure pour que la modification soit prise en compte.

Pour révoquer l'accès de Logging à la clé Cloud KMS, procédez comme suit : 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

La désactivation de CMEK pour une organisation ou un dossier supprime l'application des règles CMEK pour les opérations futures uniquement. Les configurations précédemment appliquées demeurent intactes.

Pour désactiver les CMEK sur une ressource pour laquelle une CMEK est configurée 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 ne déclenche pas automatiquement la rotation de la clé de chiffrement pour les fichiers temporaires de reprise après sinistre lorsque la clé Cloud KMS associée à l'organisation ou au dossier Google Cloud est modifiée. 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

Voici quelques limitations connues lorsque vous utilisez configurer 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 Journalisation 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 parvient pas à écrire des 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.

Le routage des journaux vers Cloud Storage peut également être affecté, car la journalisation ne peut pas écrire les fichiers temporaires requis 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 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 réessaie en permanence d'accéder à la clé. Cloud Logging met également en mémoire tampon les données des journaux entrants pendant une heure maximum. Au bout d'une heure, si Cloud Logging ne parvient toujours pas à accéder à l'API gérée, puis Cloud Logging commence à supprimer les données.

Si une CMEK est appliquée à un bucket de journaux et si une clé gérée en externe n'est pas disponible, Cloud Logging continue à stocker les 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 concernant l'utilisation de CMEK avec des buckets de journaux, consultez 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 Corrigez les erreurs liées aux CMEK et aux paramètres par défaut.