Utiliser des clés de chiffrement gérées par le client (CMEK)

Présentation

Cette page décrit le fonctionnement des clés de chiffrement gérées par le client (CMEK) avec Datastream.

La fonctionnalité CMEK est-elle adaptée à vos besoins ?

Les CMEK sont destinées aux organisations qui possèdent des données sensibles ou réglementées, ce qui les oblige à gérer leurs clés de chiffrement.

Chiffrement géré par Google et chiffrement géré par le client

La fonctionnalité CMEK vous permet d'utiliser vos propres clés cryptographiques pour les données au repos dans Datastream. Après l'ajout d'une clé CMEK, chaque fois qu'un appel d'API est effectué, Datastream utilise votre clé pour accéder aux données.

Datastream utilise des clés de chiffrement des données (DEK, Data Encryption Key) et des clés de chiffrement de clé (KEK, Key Encryption Key) gérées par Google pour chiffrer Datastream. Il existe deux niveaux de chiffrement :

  1. La clé DEK chiffre les données.
  2. La clé KEK chiffre la clé DEK.

Datastream stocke la clé DEK chiffrée avec les données chiffrées, et Google gère la clé KEK Google. Avec CMEK, vous créez une clé qui encapsule la clé KEK Google. CMEK vous permet de créer, de révoquer et de supprimer la clé KEK.

Le chiffrement CMEK, y compris les logiciels, le matériel et les clés externes, est entièrement géré via l'API Cloud Key Management Service (KMS).

Quels emplacements acceptent les flux Datastream compatibles avec CMEK ?

CMEK est disponible dans tous les emplacements Datastream.

Comprendre les comptes de service

Lorsque CMEK est activé sur vos flux Datastream, vous devez utiliser un compte de service pour demander un accès par clé à partir de Cloud Key Management Service.

Pour utiliser une clé CMEK sur un projet, vous devez disposer d'un compte de service et accorder à la clé l'accès à ce compte. Le compte de service doit être créé dans le projet Le compte de service est visible dans toutes les régions.

Si vous utilisez la console pour créer un flux, Datastream crée automatiquement le compte de service lorsque vous choisissez l'option Clé gérée par le client (si un compte de service n'existe pas déjà). Lorsque Datastream crée automatiquement le compte de service, vous n'avez pas besoin d'autorisations particulières sur votre compte utilisateur.

Comprendre les clés

Dans Cloud Key Management Service, vous devez créer un trousseau avec une clé cryptographique, et y associer un emplacement. Lorsque vous créez un flux dans Datastream, vous sélectionnez cette clé pour le chiffrer.

Lorsque vous créez des flux utilisant des CMEK, vous devez connaître leur ID et leur région. Vous devez placer les nouveaux flux dans la même région que la clé CMEK associée. Vous pouvez créer un projet pour les clés et les flux, ou un projet différent pour chacun.

CMEK utilise le format suivant :

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

Si Datastream ne peut pas accéder à la clé (par exemple, si vous désactivez la version de clé), Datastream modifie l'état du flux en FAILED, et un message d'erreur associé s'affiche. Après avoir résolu les problèmes liés au message d'erreur afin que la clé redevienne accessible, Datastream reprend automatiquement le flux.

Gestionnaires de clés externes

Vous pouvez utiliser des clés stockées dans des gestionnaires de clés externes, tels que Fortinix, Ionic ou Thales, en tant que CMEK. Pour apprendre à utiliser des clés externes avec Cloud Key Management Service, consultez la page Cloud External Key Manager.

Comment rendre les données chiffrées par CMEK définitivement inaccessibles ?

Il se peut que vous souhaitiez détruire définitivement des données chiffrées avec des clés CMEK. Pour ce faire, vous devez supprimer la version CMEK. Vous ne pouvez pas détruire le trousseau ni la clé, mais vous pouvez supprimer les versions de la clé.

Restrictions

Les restrictions suivantes s'appliquent lors de l'utilisation de CMEK:

  • Vous ne pouvez pas mettre à jour CMEK sur un flux en cours d'exécution.

  • Bien que vous puissiez utiliser CMEK pour chiffrer les lignes de la base de données source, vous ne pouvez pas utiliser ces clés pour chiffrer les métadonnées de flux, telles que l'ID de flux, l'adresse IP de la base de données source, les noms des tables de la base de données source, etc.

Utiliser CMEK

Maintenant que vous comprenez le chiffrement CMEK, vous êtes prêt à configurer un compte de service et des clés pour CMEK. De plus, vous apprendrez à configurer Datastream pour utiliser des CMEK. Pour en savoir plus sur les clés CMEK, consultez la section Présentation.

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Installez et initialisez le SDK Cloud.
  7. Assurez-vous que le rôle "Administrateur Datastream" est attribué à votre compte utilisateur.

    Accéder à la page IAM

  8. Enable the Cloud Key Management Service API.

    Enable the API

  9. Activez l'API Datastream.

    Activer l'API

Workflow de création d'un flux dans Datastream avec CMEK

  1. Seulement pour les utilisateurs de gcloud et de l'API : assurez-vous de disposer d'un compte de service pour chaque projet nécessitant CMEK. Si ce n'est pas le cas, découvrez comment créer un compte de service.
  2. Créez un trousseau et une clé, puis définissez l'emplacement de chaque clé. L'emplacement correspond à la région Google Cloud.
  3. Seulement pour les utilisateurs de gcloud et de l'API : accordez à la clé l'accès au compte de service.
  4. Copiez ou notez l'ID (KMS_KEY_ID) et l'emplacement de la clé, ainsi que l'ID (KMS_KEYRING_ID) du trousseau. Vous avez besoin de ces informations lorsque vous accordez à la clé l'accès au compte de service.
  5. Accédez à un projet et créez un flux dans Datastream avec les options suivantes :
    1. Même emplacement que la clé CMEK
    2. La configuration CMEK
    3. ID de la clé CMEK

Votre flux dans Datastream est désormais activé avec CMEK.

Créer un compte de service

Vous devez créer un compte de service pour chaque projet nécessitant une CMEK.

Pour autoriser un utilisateur à gérer des comptes de service, attribuez-lui l'un des rôles suivants :

  • Utilisateur de compte de service (roles/iam.serviceAccountUser) : accorde les autorisations nécessaires pour obtenir ou répertorier un compte de service et emprunter son identité.
  • Administrateur de compte de service (roles/iam.serviceAccountAdmin) : comprend les autorisations permettant de répertorier les comptes de service et d'obtenir des informations sur un compte de service. Inclut également les autorisations nécessaires pour créer, mettre à jour et supprimer des services et d'afficher ou de modifier la règle Datastream de service géré.

Actuellement, vous ne pouvez utiliser que les commandes gcloud pour créer le type de compte de service dont vous avez besoin pour CMEK. Si vous utilisez la console, puis Datastream crée automatiquement ce compte de service.

Pour créer un compte de service avec gcloud, exécutez la commande suivante :

gcloud beta services identity create \
--service=datastream.googleapis.com \
--project=PROJECT_ID

La commande précédente renvoie un nom de compte de service. Ce nom de compte de service est utilisé lors de la procédure Accordez à la clé l'accès au compte de service.

Créer une clé

Vous pouvez créer la clé dans le même projet Google Cloud que le flux dans Datastream, ou dans un projet utilisateur distinct. Emplacement du trousseau de clés Cloud KMS doit correspondre à la région dans laquelle vous souhaitez créer le flux. Une clé d'une région mondiale ou d'un emplacement multirégional ne fonctionnera pas. Si les régions ne correspondent pas, vous ne pouvez pas créer le flux.

Pour créer une clé Cloud KMS, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page Clés cryptographiques.
  2. Cliquez sur Créer un trousseau.
  3. Ajoutez un nom de trousseau de clés. Notez ce nom, car vous en aurez besoin pour accorder à la clé l'accès au compte de service.
  4. Ajoutez un emplacement de trousseau de clés.
  5. Cliquez sur Créer. La page Créer une clé s'ouvre.
  6. Ajoutez un nom de clé.
  7. Sélectionnez un objectif (symétrique ou asymétrique).
  8. Sélectionnez une période de rotation et une date de début.
  9. Cliquez sur Créer.
  10. Dans la table Clés, cliquez sur les trois points situés dans la dernière colonne, puis sélectionnez Copier l'ID de ressource ou notez-le. Il s'agit de la KMS_KEY_ID Vous avez besoin de l'KMS_KEY_ID lorsque vous accordez l'accès à la clé au compte de service.

gcloud

  1. Créez un trousseau de clés.
    gcloud kms keyrings create KMS_KEYRING_ID \
    --location=GCP_REGION
      
    Notez ce nom, car vous en aurez besoin pour accorder à la clé l'accès au compte de service.
  2. Créez une clé sur le trousseau.
    gcloud kms keys create KMS_KEY_ID \
    --location=GCP_REGION \
    --keyring=KMS_KEYRING_ID \
    --purpose=encryption
      
    Notez ce nom, car vous en aurez besoin pour accorder à la clé l'accès au compte de service.

Accorder à la clé l'accès au compte de service

Vous ne devez effectuer cette procédure que si vous utilisez gcloud ou l'API.

Pour accorder l'accès au compte de service, utilisez le code suivant:

gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
--location=GCP_REGION \
--keyring=KMS_KEYRING_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-datastream.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Créer un flux dans Datastream avec CMEK

Lorsque vous créez un flux dans Datastream, vous pouvez utiliser votre CMEK pour gérer le chiffrement de vos données.

Étape suivante