Activer des clés de chiffrement gérées par le client pour le routeur de journaux

Cette page explique comment activer des clés de chiffrement gérées par le client (CMEK, Customer-Managed Encryption Key) afin que le routeur de journaux de Cloud Logging réponde à vos exigences de conformité. Au lieu de laisser Google gérer les clés de chiffrement qui protègent vos données, c'est vous qui les créez et les contrôlez dans Cloud Key Management Service.

Pour obtenir un récapitulatif des options de chiffrement, consultez la page Chiffrement au repos.

Chiffrement CMEK pour le routeur de journaux

Le chiffrement CMEK vous permet de contrôler les clés utilisées pour chiffrer vos données au repos. Il peut vous aider à répondre aux exigences suivantes pour votre organisation Google Cloud :

  • Mise en conformité et contrôle interne : le chiffrement CMEK permet de contrôler les données sensibles ou réglementées que vous stockez dans les produits Google Cloud. En général, ce contrôle est documenté dans le cadre des procédures de conformité interne et peut être divulgué aux organismes de réglementation. Il est difficile à modifier.

  • Chiffrement avancé : votre organisation peut exiger des fonctionnalités de chiffrement avancées comme la suppression de clé rapide, qui ne sont pas disponibles dans notre solution de chiffrement au repos par défaut. Le chiffrement CMEK offre un moyen de répondre à ces exigences via une intégration avec Cloud KMS.

  • Exigences réglementaires : votre organisation peut être amenée à effectuer des contrôles de contenus sensibles en raison de réglementations gouvernementales telles que la réglementation administrative sur les exportations du département du commerce des États-Unis (EAR, Export Administration Regulations).

Les services Google Cloud proposent déjà la fonctionnalité de chiffrement au repos, y compris dans le routeur de journaux. 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 les fichiers temporaires de reprise après sinistre utilisés par le routeur de journaux, ainsi que les fichiers temporaires utilisés lors des exportations vers Cloud Storage. Pour en savoir plus, consultez la section Limites.

Pour obtenir une description du routeur de journaux, reportez-vous à la section Présentation.

Premiers pas

  1. Créez ou identifiez le projet Google Cloud dans lequel vous souhaitez exécuter Cloud KMS.
  2. Activez l'API Cloud KMS pour le projet Google Cloud qui exécute Cloud KMS.
  3. Créez des clés et un trousseau de clés pour le projet Google Cloud qui exécute Cloud KMS.

    Notez que la zone régionale à laquelle s'appliquent les clés doit correspondre à celle de vos données. La page Emplacements Cloud KMS répertorie les zones régionales disponibles.

  4. Renseignez les paramètres requis ci-dessous. Les exemples fournis sur cette page utilisent la convention suivante 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 identifier ces paramètres, consultez les sections Identifier des projets et Obtenir l'ID de votre organisation.

Activer le chiffrement CMEK pour une organisation

Une fois que vous avez suivi les étapes de démarrage, suivez ces instructions afin d'activer le chiffrement CMEK pour votre organisation Google Cloud.

Accorder une autorisation de chiffrement et de déchiffrement

Identifiez l'ID du compte de service requis et accordez à ce compte l'autorisation d'utiliser votre clé Cloud KMS.

Identifier l'ID du compte de service

API REST

  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'identifiant serviceAccountId 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
    
    {
        "serviceAccountId": "[SERVICE_ACCOUNT_ID]@gcp-sa-logging.iam.gserviceaccount.com"
    }
    

gcloud

Pour obtenir l'identifiant serviceAccountId associé à l'organisation Google Cloud pour laquelle vous souhaitez activer le chiffrement CMEK, exécutez la commande suivante gcloud :

gcloud alpha logging cmek-settings describe --organization=[ORGANIZATION_ID]

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

Affecter le rôle Chiffreur/Déchiffreur

Pour utiliser le chiffrement CMEK, attribuez le rôle Cloud KMS CryptoKey Encrypter/Decrypter au compte de service afin d'autoriser ce dernier à accéder à votre service Cloud KMS :

API REST

  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 :

    {
      "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]

Remplacez la variable [KMS_PROJECT_ID] par l'ID du projet Google Cloud exécutant Cloud KMS. Ensuite, remplacez les variables [KMS_KEY_LOCATION], [KMS_KEY_RING], [KMS_KEY_RING] et [KMS_KEY] par l'emplacement, le trousseau de clés et le nom de votre 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 dans le volet de droite.

  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

Mettez à jour les paramètres CMEK de l'organisation Google Cloud avec un nom de clé Cloud KMS afin d'activer le chiffrement CMEK pour votre organisation.

Ces mises à jour échouent si [KMS_KEY_NAME] n'est pas valide, si le compte de service associé ne dispose pas du rôle de chiffrement/déchiffrement requis ou si l'accès à la clé est désactivé.

API REST

  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

Exécutez la commande gcloud suivante :

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

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

Mettez à jour les paramètres CMEK de l'organisation Google Cloud avec un nom de clé Cloud KMS afin de vous assurer que le chiffrement CMEK est activé pour votre organisation.

API REST

  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. Si kms_key_name est renseigné, le chiffrement CMEK est bien activé pour votre organisation :

     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

Exécutez la commande gcloud suivante 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. Si kmsKeyName est renseigné, le chiffrement CMEK est bien activé pour votre organisation :

gcloud alpha logging cmek-settings describe --organization=[ORGANIZATION_ID]

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

Gérer votre clé Cloud KMS

Cette section indique comment modifier ou supprimer votre clé Cloud KMS et comment révoquer les droits d'accès qui lui sont associés.

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.

API REST

  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

Exécutez la commande gcloud suivante :

gcloud alpha logging cmek-settings update \
    --organization=[ORGANIZATION_ID]
    --kms-key-name=[NEW_KMS_KEY_NAME]

Cette mise à jour échoue si [KMS_KEY_NAME] n'est pas valide, si le compte de service associé ne dispose pas du rôle de chiffrement/déchiffrement requis ou si l'accès à la clé est désactivé.

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 Cloud IAM de cette clé.

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

API REST

  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

Exécutez la commande gcloud suivante :

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

API REST

  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

Exécutez la commande gcloud suivante afin de mettre à jour l'identifiant serviceAccountId associé à l'organisation pour laquelle vous souhaitez désactiver le chiffrement CMEK :

gcloud alpha logging cmek-settings update --organization=[ORGANIZATION_ID] --clear-kms-key

Cette mise à jour échoue si [KMS_KEY_NAME] n'est pas valide, si le compte de service associé ne dispose pas du rôle de chiffrement/déchiffrement requis ou si l'accès à la clé est désactivé.

Pour savoir comment 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.

Chiffrement CMEK pour les exportations

Si vous utilisez des récepteurs de journaux pour exporter les journaux vers une autre destination, vous devez configurer le chiffrement CMEK de façon à protéger les données stockées à cette destination.

Cloud Storage est compatible avec le chiffrement CMEK pour les exportations de journaux si la destination est chiffrée à l'aide de la méthode CMEK. Pour en savoir plus, consultez la page Utiliser des clés de chiffrement gérées par le client.

BigQuery et Pub/Sub, les deux autres destinations du récepteur de journalisation Logging, ne permettent pas encore d'utiliser le chiffrement CMEK pour protéger les données exportées par Cloud Logging.

Limites

Voici les limites connues du chiffrement 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 s'applique à tous les projets et dossiers 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 des exportations vers Cloud Storage.

Vous pouvez exclure les entrées de journal pour empêcher leur écriture dans la solution de stockage Cloud Logging. Pour obtenir des instructions, consultez la section Utiliser les filtres d'exclusion.

Indisponibilité du fichier de reprise après sinistre

La révocation de l'accès de Logging à la clé Cloud KMS peut affecter considérablement l'expérience utilisateur et entraîner des pertes de données. Il n'est plus possible d'accéder aux données des fichiers temporaires de reprise après sinistre protégés à l'aide du chiffrement CMEK ni aux fichiers temporaires utilisés lors des exportations vers Cloud Storage.

Une clé Cloud KMS est considérée comme disponible et accessible par Logging si elle répond aux exigences suivantes :

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

Si la clé Cloud KMS n'est plus disponible, le routeur de journaux ne peut écrire aucun fichier temporaire de reprise après sinistre. Les fichiers de reprise après sinistre ne sont pas disponibles pour les données traitées pendant cette période.

Les exportations vers Cloud Storage peuvent également être affectées, car le routeur de journaux ne peut pas écrire les fichiers temporaires requis pour faciliter l'exportation. 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 sont pas compatibles avec les commandes de configuration du chiffrement CMEK.

Prix

Pour en savoir plus sur les limites d'utilisation de Logging, consultez la section Quotas et limites. Pour en savoir plus sur les coûts engendrés, consultez la page Tarifs.

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.

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 contenant la clé de chiffrement.

    La commande gcloud suivante permet de trouver l'identifiant du projet :

    gcloud alpha logging cmek-settings describe --organization=[ORGANIZATION_ID]
    
    kmsKeyName: projects/[KMS_PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]
    serviceAccountId: [SERVICE_ACCOUNT_ID]@gcp-sa-logging.iam.gserviceaccount.com
    

    L'identifiant du projet se trouve dans le champ kmsKeyName de la réponse, qui affiche le nom complet de la clé Cloud KMS.

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

  4. Dans le projet sélectionné, parcourez les notifications Cloud Logging intitulées Erreur de configuration CMEK dans Stackdriver 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 ne dispose pas des autorisations Cloud IAM nécessaires pour utiliser la clé Cloud KMS spécifiée. Suivez les instructions fournies par l'erreur ou figurant dans cette documentation pour attribuer l'autorisation Cloud IAM appropriée.
Clé cryptographique désactivée Le service Cloud KMS spécifié a été désactivé. Suivez les instructions du message d'erreur pour réactiver la clé.
La clé cryptographique a été détruite Le service Cloud KMS spécifié a été désactivé. Suivez les instructions du message d'erreur ou consultez cette documentation pour configurer le chiffrement CMEK à l'aide d'une autre clé.

Pour résoudre le problème, suivez la procédure décrite dans la notification de l'erreur.

Vérifier que les clés sont exploitables

Pour vous assurer que les clés sont exploitables, répertoriez-les à l'aide de la commande gcloud suivante :

    gcloud kms keys list 
--location=[KMS_KEY_LOCATION]
--keyring=[KMS_KEY_RING]

NAME    PURPOSE   ALGORITHM   PROTECTION_LEVEL  LABELS  PRIMARY_ID  PRIMARY_STATE
<var>[KMS_KEY_NAME]</var>  ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE  1  ENABLED

Dans la réponse qui s'affiche, assurez-vous que la clé Cloud KMS CryptoKey est activée 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é. Pour obtenir des instructions sur la création de clé, consultez les sections ci-dessus.

Vérifier la configuration des autorisations

Le rôle Cloud IAM Cloud KMS CryptoKey Encrypter/Decrypter doit être attribué aux comptes de service associés aux paramètres CMEK de l'organisation pour la clé configurée.

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

    gcloud kms keys get-iam-policy [KMS_KEY_NAME]
   

Si nécessaire, ajoutez le compte de service qui contient le rôle Cloud IAM Cloud KMS CryptoKey Encrypter/Decrypter à la clé.