Gérez les clés qui protègent les données du routeur de journaux.

Cette page explique comment configurer et gérer les clés de chiffrement gérées par le client (CMEK) pour le routeur de journaux afin de répondre aux exigences de conformité de votre organisation.

Le chiffrement CMEK pour le routeur de journaux est configuré au niveau de l'organisation Google Cloud. Il s'applique à tous les projets et dossiers Cloud contenus dans l'organisation Google Cloud.

Présentation

Par défaut, Cloud Logging chiffre le contenu client stocké au repos. Les données ingérées 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, vous n'avez pas besoin de gérer les clés de chiffrement de clés qui protègent vos données. Google peut configurer CMEK pour contrôler et gérer votre propre chiffrement.

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

Actuellement, il n'est pas possible d'utiliser le chiffrement CMEK sur les journaux stockés dans Cloud Logging. Toutefois, cette fonctionnalité vous permet de protéger à la fois les fichiers temporaires de reprise après sinistre utilisés par le routeur de journaux et les fichiers temporaires utilisés lors du routage des journaux vers Cloud Storage.

Prérequis

Pour commencer à activer le chiffrement CMEK pour le routeur de journaux, procédez comme suit :

  1. Installez et initialisez le SDK Cloud.

    Ce guide fournit des instructions à l'aide de l'outil de ligne de commande gcloud, installé à l'aide du SDK Cloud.

  2. Identifiez l'organisation pour laquelle vous souhaitez activer le chiffrement CMEK.

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

    Vérifiez que vous disposez d'un rôle IAM doté des autorisations logging.cmekSettings.{get,update} au niveau de l'organisation Google Cloud contenant le projet Cloud. Nous vous recommandons le rôle Rédacteur de configuration des journaux, qui contient les autorisations nécessaires.

  4. Activez l'API Cloud KMS pour le projet Google Cloud qui exécute Cloud KMS.

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

    Le routeur de journaux vous permet d'utiliser une clé de n'importe quelle région, car une seule organisation peut avoir des données acheminées vers plusieurs régions. Si l'ensemble ou la majorité des données de l'organisation sont limitées à une seule région, nous vous recommandons d'utiliser une clé dont la région correspond au champ d'application régional de vos données.

  6. Renseignez les paramètres requis ci-dessous. Dans les exemples de cette page, les variables suivantes sont utilisées pour indiquer les métadonnées des ressources Google Cloud :

    • ORGANIZATION_ID est l'identifiant numérique unique de l'organisation Google Cloud pour laquelle vous activez le chiffrement CMEK.
    • KMS_PROJECT_ID est l'identifiant alphanumérique unique du projet qui exécute Cloud KMS. Il est composé du nom de votre projet et d'un numéro attribué de manière aléatoire.
    • KMS_KEY_NAME correspond au nom de ressource de la clé Cloud KMS. Son format est le suivant : projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY

    Pour savoir comment localiser les identifiants de ressource, consultez les sections Identifier des projets et Obtenir l'ID de votre organisation.

Activer le chiffrement CMEK pour une organisation

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 configurer CMEK au niveau de l'organisation, vous devez obtenir l'ID de compte de service associé à l'organisation pour laquelle CMEK s'applique. Exécutez la commande suivante :

API

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.

  2. Envoyez une requête GET afin d'obtenir l'ID de compte de service associé à l'organisation Google Cloud pour laquelle vous souhaitez activer le chiffrement CMEK :

     curl -H "Authorization: Bearer AUTH_TOKEN" \
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings
    

gcloud

gcloud logging cmek-settings describe --organization=ORGANIZATION_ID

L'exécution de cette commande génère un compte de service pour l'organisation, s'il n'en existe pas déjà un, et renvoie l'ID dans le champ serviceAccountId :

serviceAccountId: "SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com"

Vous ne devez exécuter ce processus de provisionnement qu'une seule fois par ressource . L'exécution de cette commande plusieurs fois renvoie la même valeur pour le champ serviceAccountId.

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 :

API

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth. Pour obtenir des instructions, consultez la page Authentification des API.
  2. Créez un fichier JSON contenant les informations suivantes :

    {
      "policy": {
        "bindings": {
          "role": "roles/cloudkms.cryptoKeyEncrypterDecrypter",
          "members": "serviceAccount:SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com"
        },
      }
    }
  3. Exécutez la commande cURL pour appeler l'API Cloud KMS avec une requête POST setIamPolicy :

    curl -X POST --data-binary @JSON_FILE_NAME.json \
    -H "Authorization: Bearer OAUTH2_TOKEN" \
    -H "Content-Type: application/json" \
    "https://cloudkms.googleapis.com/v1/KEY_RESOURCE:setIamPolicy"

gcloud

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

Définissez les variables dans la commande comme suit :

  • Remplacez SERVICE_ACCOUNT_ID 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 les étapes préalables :

    • Remplacez KMS_PROJECT_ID par l'ID du projet Cloud qui exécute Cloud KMS.
    • Remplacez KMS_KEY_LOCATION par la région de la clé Cloud KMS.
    • Remplacez KMS_KEY_RING par le nom du trousseau de clés Cloud KMS.
    • Remplacez KMS_KEY par le nom de la clé Cloud KMS.

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 la clé Cloud KMS

Pour terminer l'activation de CMEK, ajoutez le nom de la clé Cloud KMS à votre organisation. Exécutez la commande suivante :

API

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.

  2. Créez un fichier JSON contenant les informations suivantes :

    {
        "kms_key_name": "KMS_KEY_NAME"
    }
    
  3. Envoyez une requête PATCH pour mettre à jour kms_key_name et l'associer à l'organisation Google Cloud pour laquelle vous souhaitez activer le chiffrement CMEK :

    curl -X PATCH \
        -H "Authorization: Bearer AUTH_TOKEN \
        -H "Content-Type: application/json" \
        --data-binary @JSON_FILE_NAME
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings?update_mask="kms_key_name"
    

gcloud

gcloud logging cmek-settings update \
    --organization=ORGANIZATION_ID --kms-key-name=KMS_KEY_NAME

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

Pour vérifier que vous avez activé CMEK pour votre organisation, exécutez la commande suivante :

API

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.

  2. Envoyez une requête GET afin d'obtenir les paramètres CMEK associés à l'organisation Google Cloud pour laquelle vous souhaitez vérifier qu'une clé de chiffrement est activée.

     curl -H "Authorization: Bearer AUTH_TOKEN" \
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings
    
    {
        "kmsKeyName": "KMS_KEY_NAME",
        "serviceAccountId": "SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com"
    }
    

gcloud

gcloud logging cmek-settings describe --organization=ORGANIZATION_ID

L'exécution de cette commande renvoie le nom de la clé Cloud KMS :

kmsKeyName: KMS_KEY_NAME
serviceAccountId: SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com

Si le champ kmsKeyName est renseigné, le chiffrement CMEK est bien activé pour votre organisation.

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 à votre organisation, créez une clé et mettez à jour les paramètres CMEK de l'organisation avec ce nouveau nom de clé Cloud KMS.

Exécutez la commande suivante :

API

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.

  2. Créez un fichier JSON contenant les informations suivantes :

    {
        "kms_key_name": "NEW_KMS_KEY_NAME"
    }
    
  3. Envoyez une requête PATCH pour mettre à jour kms_key_name :

    curl -X PATCH \
        -H "Authorization: Bearer AUTH_TOKEN \
        -H "Content-Type: application/json" \
        --data-binary @JSON_FILE_NAME
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings?update_mask="kms_key_name"
    

gcloud

gcloud logging cmek-settings update \
    --organization=ORGANIZATION_ID
    --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.

Exécutez la commande suivante :

API

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.

  2. Créez un fichier JSON contenant les informations suivantes :

    revoke.json:
    {
      "policy": {
        "bindings": {
          "role": "roles/cloudkms.cryptoKeyEncrypterDecrypter",
          "members":
        },
      }
    }
    
  3. Envoyez une requête POST :

    curl -X POST --data-binary @revoke.json -H "Authorization: Bearer
    ${OAUTH_TOKEN}" -H "Content-Type: application/json"
    "https://cloudkms.googleapis.com/v1/{$KEY}:setIamPolicy"
    

gcloud

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

Désactiver le chiffrement CMEK pour votre organisation

La désactivation de CMEK pour votre organisation 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 le chiffrement CMEK pour votre organisation, exécutez la commande suivante :

API

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.

  2. Créez un fichier JSON contenant les informations suivantes :

    {
        "kms_key_name": ""
    }
    
  3. Envoyez une requête PATCH pour mettre à jour kms_key_name :

    curl -X PATCH \
        -H "Authorization: Bearer AUTH_TOKEN \
        -H "Content-Type: application/json" \
        --data-binary @JSON_FILE_NAME
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings?update_mask="kms_key_name"
    

gcloud

gcloud logging cmek-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é.

Impact de la rotation des clés Cloud KMS

Lors de la rotation de la clé Cloud KMS associée à l'organisation Google Cloud, le routeur de journaux ne déclenche pas automatiquement la rotation de la clé de chiffrement pour les fichiers temporaires de reprise après sinistre. 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.

Acheminer les journaux vers les destinations compatibles

Si vous utilisez des récepteurs de journaux pour acheminer les journaux vers une destination compatible, procédez comme suit :

Remarques importantes concernant les clés externes

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.

Si une clé gérée en externe n'est pas disponible, Cloud Logging continue à effectuer des nouvelles tentatives d'accès à la clé et à mettre en mémoire tampon les données de journaux entrantes pendant une durée maximale d'une heure. Après une heure, si Cloud Logging ne parvient toujours pas à accéder à la clé gérée en externe, il commence à supprimer les 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

Voici les limites connues de CMEK pour le routeur de journaux.

Configuration au niveau de l'organisation uniquement

Pour le moment, seules les organisations Google Cloud permettent de configurer le chiffrement CMEK pour le routeur de journaux. Une fois configuré, le chiffrement CMEK se propage à tous les projets et dossiers Cloud de l'organisation Google Cloud.

Incompatibilité du chiffrement CMEK avec la solution de stockage Cloud Logging

Le chiffrement CMEK n'est pas compatible avec les journaux stockés dans Cloud Logging. Toutefois, cette méthode de chiffrement vous permet de protéger les fichiers temporaires de reprise après sinistre utilisés par le routeur de journaux, ainsi que les fichiers temporaires utilisés lors du routage des journaux vers Cloud Storage.

Pour empêcher l'écriture des entrées de journal dans l'espace de stockage Cloud Logging, vous pouvez créer des récepteurs avec des filtres d'exclusion.

Indisponibilité du fichier de reprise après sinistre

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 détient des autorisations de chiffrement et de déchiffrement sur la clé.

Si Logging perd l'accès à la clé Cloud KMS, il 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.

Le routage des journaux vers Cloud Storage peut également être affecté, car le routeur de journaux ne peut pas écrire les fichiers temporaires requis pour faciliter le routage. Si une erreur survient lors du chiffrement ou du déchiffrement des données, une notification est envoyée au projet 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.

Quotas

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

Résoudre les erreurs de configuration

Les sections suivantes expliquent comment identifier et limiter les conséquences des erreurs courantes commises lors de la configuration du chiffrement CMEK.

Lorsque vous configurez CMEK, le projet Cloud contenant la clé Cloud KMS est averti des problèmes associés. Par exemple, les mises à jour échouent si KMS_KEY_NAME n'est pas valide, si le compte de service associé ne dispose pas du rôle Chiffreur/Déchiffreur de CryptoKeys Cloud Key Management Service requis ou si l'accès à la clé est désactivé.

Identifier les erreurs de configuration

Pour identifier et afficher les erreurs de configuration du chiffrement CMEK, procédez comme suit :

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Sélectionnez le projet Cloud contenant la clé de chiffrement.

    Vous pouvez identifier l'ID du projet en exécutant la commande suivante :

    gcloud logging cmek-settings describe --organization=ORGANIZATION_ID
    
    

    L'exécution de cette commande renvoie les éléments suivants :

     kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY
     serviceAccountId: SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com
     

    La valeur du champ kmsKeyName inclut l'ID de projet de la clé.

  3. Sélectionnez l'onglet Activité dans Cloud Console.

  4. Recherchez les notifications Cloud Logging intitulées Erreur de configuration CMEK Cloud Logging.

    Elles indiquent les étapes que vous pouvez suivre pour résoudre le problème :

    Erreur Recommandation
    Autorisation d'utiliser la clé cryptographique refusée Le compte de service Logging associé à votre projet Cloud ne dispose pas des autorisations IAM nécessaires pour utiliser la clé Cloud KMS spécifiée. Suivez les instructions fournies par l'erreur ou figurant dans la section Accorder une autorisation de chiffrement/déchiffrement pour attribuer l'autorisation IAM appropriée.
    Clé cryptographique désactivée La clé Cloud KMS spécifiée a été désactivée. Suivez les instructions du message d'erreur pour réactiver la clé.
    La clé cryptographique a été détruite La clé Cloud KMS spécifiée a été détruite. Suivez les instructions figurant dans le message d'erreur ou dans la section Configurer la clé Cloud KMS pour configurer le chiffrement CMEK avec une autre clé.

Vérifier que les clés sont exploitables

Pour vérifier la facilité d'utilisation de la clé, exécutez la commande suivante pour répertorier toutes les clés :

gcloud kms keys list \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING

Cette commande renvoie des informations sur chaque clé sous forme de tableau. La première ligne du résultat est une liste de noms de colonnes :

NAME PURPOSE ...

Dans la réponse qui s'affiche, assurez-vous que la clé Cloud KMS est répertoriée dans le résultat de la commande en tant que ENABLED et qu'elle remplit une fonction de chiffrement symétrique. Pour cela, la colonne PURPOSE doit contenir ENCRYPT_DECRYPT et la colonne PRIMARY_STATE doit contenir ENABLED.

Si nécessaire, créez une clé.

Vérifier la configuration des autorisations

Les comptes de services associés aux paramètres CMEK de l'organisation doivent détenir le rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS pour la clé configurée.

Pour afficher la règle Cloud IAM de la clé, exécutez la commande suivante :

gcloud kms keys get-iam-policy KMS_KEY_NAME

Si nécessaire, ajoutez le compte de service qui contient le rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS à la clé.