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.

Les CMEK sont-ils adaptés à votre cas ?

Les CMEK sont destinés aux organisations disposant de données sensibles ou réglementées qui ont besoin de 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. Une fois que vous avez ajouté une clé CMEK, Datastream utilise votre clé à chaque appel d'API pour accéder aux données.

Datastream utilise des clés de chiffrement de données (DEK) et des clés de chiffrement de clés (KEK) 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 en plus des données chiffrées, et Google gère la clé KEK Google. Avec les CMEK, vous créez une clé qui encapsule la KEK de Google. Les CMEK vous permettent de créer, de révoquer et de supprimer la KEK.

Les clés CMEK, y compris les clés logicielles, matérielles et externes, sont toutes gérées via l'API Cloud Key Management Service (KMS).

Quels sont les emplacements compatibles avec les flux Datastream compatibles CMEK ?

Les clés CMEK sont disponibles dans tous les emplacements Datastream.

Comprendre les comptes de service

Lorsque les CMEK sont activés dans vos flux Datastream, vous devez utiliser un compte de service pour demander l'accès aux clés à partir de Cloud Key Management Service.

Pour utiliser une clé CMEK sur un projet, vous devez disposer d'un compte de service et lui accorder l'accès à la clé. 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 pour la première fois l'option Clé gérée par le client (si aucun compte de service n'existe déjà). Vous n'avez pas besoin d'autorisations spéciales sur votre compte utilisateur lorsque Datastream crée automatiquement le compte de service.

Comprendre les clés

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

Vous devez connaître l'ID et la région de la clé lorsque vous créez des flux qui utilisent des CMEK. Vous devez placer les nouveaux flux dans la même région que la clé CMEK associée aux flux. Vous pouvez créer un projet pour les clés et les flux, ou un projet distinct pour chacun d'entre eux.

Les clés CMEK utilisent 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 fait passer l'état du flux à 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 comme clé CMEK les clés stockées dans des gestionnaires de clés externes, tels que Fortanix, Ionic ou Thales. Pour savoir comment 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 inaccessibles de manière permanente ?

Vous pouvez être amené à détruire définitivement des données chiffrées avec des CMEK. Pour ce faire, vous devez détruire la version de la CMEK. Vous ne pouvez pas détruire le trousseau ni la clé, mais vous pouvez détruire les versions de clé de la clé.

Restrictions

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

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

  • Bien que vous puissiez utiliser des clés 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 fonctionnement des CMEK, vous êtes prêt à configurer un compte de service et des clés pour les CMEK. Vous apprendrez également à configurer Datastream pour utiliser des CMEK. Pour en savoir plus sur les CMEK, consultez Présentation.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  5. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  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. Activez Cloud Key Management Service API.

    Activer l'API

  9. Activez l'API Datastream.

    Activer l'API

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

  1. Utilisateurs de gcloud et de l'API uniquement:assurez-vous de disposer d'un compte de service pour chaque projet nécessitant des clés CMEK. Si ce n'est pas le cas, voici 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 pour accorder à 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. Le même emplacement que la clé CMEK
    2. Configuration CMEK
    3. L'ID de la CMEK

Les CMEK sont désormais activés dans votre flux Datastream.

Créer un compte de service

Vous devez créer un compte de service pour chaque projet nécessitant des clés 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 comptes de service, ainsi que pour afficher ou modifier la stratégie Datastream d'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 les CMEK. Si vous utilisez la console, Datastream crée ce compte de service automatiquement.

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. Vous utiliserez ce nom de compte de service au cours de la procédure décrite dans 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é multirégionale ou mondiale ne fonctionne 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 de clés.
  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 Create (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 du KMS_KEY_ID lorsque vous accordez à 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 n'est nécessaire 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 une CMEK

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

Désactiver et réactiver des versions de clé

Consultez les articles suivants :