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

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 ?

La fonctionnalité CMEK est destinée aux organisations qui traitent des données sensibles ou réglementées pour lesquelles elles doivent gérer leurs propres 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 avoir ajouté 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 ainsi que 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 de 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 qui utilisent CMEK, vous devez connaître l'ID et la région de la clé. Vous devez placer les nouveaux flux dans la même région que la clé CMEK associée. Vous pouvez créer un projet unique pour les clés et les flux, ou un projet distinct pour chaque élément.

CMEK utilise le format suivant:

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

Si Datastream ne parvient pas à accéder à la clé (par exemple, si vous la désactivez), il définit l'état du flux sur FAILED et un message d'erreur associé s'affiche. Une fois les problèmes associés au message d'erreur résolus 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 Fortanix, 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 ?

Vous pouvez être amené à détruire définitivement des données chiffrées avec 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 lorsque vous utilisez 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. Vous apprendrez également à configurer Datastream pour utiliser CMEK.

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

Procédure permettant de créer 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 de clé (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. au même emplacement que la clé CMEK ;
    2. La configuration CMEK
    3. ID de la 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. Ce rôle inclut également les autorisations nécessaires pour créer, mettre à jour et supprimer des comptes de service, ainsi que pour afficher ou modifier les règles Datastream sur un compte de service.

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, 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 vous sera utile lors de la procédure décrite dans la section Accorder à 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. L'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 KMS_KEY_ID. Vous avez besoin de KMS_KEY_ID pour accorder à la clé l'accès 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

Cette procédure ne doit être effectuée 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