À propos 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 Memorystore pour Redis. Pour utiliser cette fonctionnalité immédiatement, consultez la section Utiliser des clés de chiffrement gérées par le client (CMEK).

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

Les clés de chiffrement gérées par le client sont destinées 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 Memorystore pour Redis. Une fois les clés de chiffrement gérées par le client ajoutées, Memorystore utilise votre clé pour accéder aux données à chaque appel d'API.

Memorystore utilise des clés de chiffrement de données (DEK) et des clés de chiffrement de clé (KEK) gérées par Google pour chiffrer Memorystore pour Redis. Il existe deux niveaux de chiffrement :

  • La clé DEK chiffre les données.
  • La clé KEK chiffre la clé DEK.

L'instance Memorystore stocke la clé DEK chiffrée en même temps que les données chiffrées sur le disque persistant, et Google gère la clé KEK Google. Avec les clés de chiffrement gérées par le client, vous créez une clé qui encapsule la clé KEK Google. Les clés de chiffrement gérées par le client vous permettent de créer, de révoquer et de supprimer la clé KEK.

Les clés de chiffrement gérées par le client sont gérées via l'API Cloud Key Management Service.

Les schémas ci-dessous montrent le fonctionnement du chiffrement des données au repos dans une instance Memorystore en cas d'utilisation du chiffrement Google par défaut par rapport aux clés de chiffrement gérées par le client.

Sans CMEK

Les données sont importées dans Google puis divisées en fragments, et chacun d'entre eux est chiffré avec une clé de chiffrement des données unique. Les clés de chiffrement des données sont encapsulées à l'aide d'une clé de chiffrement de clé. Avec le chiffrement Google par défaut, la clé de chiffrement de clé est extraite du keystore interne de Google. Les fragments chiffrés ainsi que les clés de chiffrement encapsulées sont distribués sur l'ensemble de l'infrastructure de stockage de Google.

Avec CMEK

Les données sont importées dans Google puis divisées en fragments, et chacun d'entre eux est chiffré avec une clé de chiffrement des données unique. Les clés de chiffrement des données sont encapsulées à l'aide d'une clé de chiffrement de clé. Avec CMEK via Cloud KMS, la clé de chiffrement de clé est extraite de Cloud KMS. Les fragments chiffrés ainsi que les clés de chiffrement encapsulées sont distribués sur l'ensemble de l'infrastructure de stockage de Google.

Lors du déchiffrement des données encapsulées avec des clés de chiffrement gérées par le client, Memorystore utilise la clé KEK pour déchiffrer la clé DEK et la clé DEK non chiffrée pour déchiffrer les données au repos.

Fragment de données chiffré avec la clé DEK et stocké avec la clé DEK encapsulée Une requête de désencapsulation de la clé DEK est envoyée au stockage KMS, qui stocke la clé KEK non exportable. Le stockage KMS renvoie la clé DEK désencapsulée.

Quand Memorystore interagit-il avec les clés CMEK ?

Opération Description
Création d'une instance Lors de la création de l'instance, vous configurez celle-ci pour qu'elle utilise des clés de chiffrement gérées par le client.
Mise à jour de l'instance Memorystore vérifie la clé CMEK lors des mises à jour d'une instance compatible.

Quelles données sont chiffrées à l'aide de clés CMEK ?

Les clés de chiffrement gérées par le client chiffrent les types de données suivants:

  • Données client stockées dans un espace de stockage persistant.
  • Métadonnées associées aux fonctionnalités de sécurité telles que AUTH et le chiffrement en transit.

À propos des comptes de service

Lorsque vous créez une instance avec CMEK, vous devez attribuer le rôle cloudkms.cryptoKeyEncrypterDecrypter au compte de service Memorystore, au format suivant:

  • service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com

L'octroi de cette autorisation permet au compte de service de demander l'accès aux clés à partir de Cloud KMS.

Pour savoir comment accorder cette autorisation au compte de service, consultez la section Accorder au compte de service l'accès à la clé.

À propos des clés

Dans Cloud KMS, vous devez créer un trousseau avec une clé cryptographique utilisant un algorithme de chiffrement/déchiffrement symétrique. Lorsque vous créez une instance Memorystore, vous devez sélectionner cette clé pour la chiffrer. Vous pouvez créer un projet pour les clés et les instances Memorystore, ou un projet différent pour chacune d'elles.

Les CMEK sont disponibles dans tous les emplacements d'instances Memorystore. La région de la clé et du trousseau doit être définie sur la même région que celle de l'instance Memorystore pour Redis. Une clé multirégionale ou mondiale ne fonctionne pas. Une requête de création d'une instance Memorystore échoue si les régions ne correspondent pas.

Les CMEK pour Memorystore sont compatibles avec Cloud External Key Manager (Cloud EKM).

Les clés de chiffrement gérées par le client utilisent le format suivant :

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

Si Memorystore ne peut accéder à aucune version de clé en cours d'utilisation (par exemple, si vous désactivez la version de clé), Memorystore arrête l'instance sans délai. Dans la console Google Cloud, une instance suspendue affiche une info-bulle avec un point d'exclamation rouge sur la page Instances. Lorsque vous pointez sur l'info-bulle, "Aucun état" s'affiche. Une fois que la clé est de nouveau accessible, Memorystore réactive automatiquement l'instance.

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. Cette opération implique de supprimer la version correspondante de la clé de chiffrement gérée par le client. Vous ne pouvez pas détruire le trousseau ou la clé, mais vous pouvez supprimer les versions de la clé.

Comment exporter et importer des données depuis et vers une instance utilisant CMEK ?

Si vous souhaitez que vos données restent chiffrées avec une clé gérée par le client lors d'une importation ou d'une exportation, vous devez définir une clé de chiffrement gérée par le client sur le bucket Cloud Storage avant de les exporter.

Il n'existe aucune exigence ni restriction particulière pour importer des données vers une nouvelle instance Memorystore lorsque les données ont été précédemment stockées sur une instance Memorystore compatible CMEK.

Comportement de la destruction et de la désactivation d'une version de clé CMEK

Si vous souhaitez empêcher l'accès aux données de votre instance, désactivez la version de clé primaire de la clé de chiffrement gérée par le client. Cette action entraîne l'arrêt de votre instance dans les meilleurs délais. En outre, Memorystore arrête immédiatement une instance si une clé de chiffrement gérée par le client est désactivée ou détruite. Cela inclut toute ancienne version de clé encore utilisée par une instance Memorystore. Pour vérifier si votre instance est suspendue, vous pouvez utiliser gcloud ou la console Google Cloud:

Dans la console Google Cloud, si votre instance est suspendue, une info-bulle rouge s'affiche à côté de votre instance sur la page Instances de Memorystore pour Redis. L'info-bulle affiche "Aucun état" lorsque votre curseur la survole.

Pour gcloud, si vous exécutez gcloud beta redis instances describe et que vous ne voyez pas state: READY, state: REPAIRING ni aucun autre état dans les métadonnées de l'instance, votre instance est suspendue.

Réactiver/Restaurer une version de clé CMEK en cours d'utilisation

Une instance est affichée après la reenabling/restoring d'une version de clé CMEK utilisée.

Restrictions

Les restrictions suivantes s'appliquent lors de l'utilisation de clés de chiffrement gérées par le client avec Memorystore:

  • Vous ne pouvez pas activer les clés de chiffrement gérées par le client sur une instance Memorystore existante.
  • La région de la clé, du trousseau et de l'instance Memorystore doit être identique.
  • Vous devez utiliser l'algorithme de chiffrement/déchiffrement symétrique pour votre clé.
  • Les taux de chiffrement et de déchiffrement de Cloud KMS sont soumis à un quota.