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

Par défaut, Memorystore pour Redis chiffre le contenu client au repos. Memorystore pour Redis gère le chiffrement sans intervention de votre part. Cette option est appelée chiffrement par défaut de Google.

Si vous souhaitez contrôler vos clés de chiffrement, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK) dans Cloud KMS avec des services bénéficiant d'une intégration des CMEK, y compris Memorystore pour Redis. L'utilisation de clés Cloud KMS vous permet de contrôler leur niveau de protection, leur emplacement, leur calendrier de rotation, leurs autorisations d'utilisation et d'accès, ainsi que leurs limites cryptographiques. Grâce à Cloud KMS, vous pouvez également afficher les journaux d'audit et contrôler les cycles de vie des clés. Au lieu de laisser Google posséder et gérer les clés de chiffrement de clés (KEK) symétriques qui protègent vos données, c'est vous qui vous chargez de cette tâche dans Cloud KMS.

Une fois que vous avez configuré vos ressources avec des CMEK, l'accès à vos ressources Memorystore pour Redis est semblable à celui du chiffrement par défaut de Google. Pour en savoir plus sur les options de chiffrement, consultez Clés de chiffrement gérées par le client (CMEK).

Qui doit utiliser CMEK ?

La fonctionnalité CMEK est destinée aux organisations qui traitent des données sensibles ou réglementées qui doivent être chiffrées. Pour savoir si vous devez utiliser CMEK pour chiffrer ces données, consultez Déterminer si vous devez utiliser CMEK.

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. Pour les instances Memorystore pour Redis compatibles avec CMEK, Google utilise vos clés pour accéder à toutes les données au repos.

Memorystore 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 les données dans Memorystore pour Redis. Il existe deux niveaux de chiffrement :

  • Chiffrement DEK : Memorystore utilise des clés DEK pour chiffrer les données dans Memorystore pour Redis.
  • Chiffrement KEK : Memorystore utilise des clés KEK pour chiffrer les clés DEK.

L'instance Memorystore pour Redis stocke la clé DEK chiffrée ainsi que les données chiffrées sur le disque persistant, et Google gère la clé KEK Google. La clé CMEK est la clé KEK qui encapsule la clé DEK. CMEK vous permet de créer, de désactiver ou de détruire, et d'activer ou de restaurer la clé KEK.

Vous gérez CMEK à l'aide de l'API Cloud Key Management Service.

Les schémas suivants montrent le fonctionnement du chiffrement des données au repos dans une instance Memorystore pour Redis en cas d'utilisation du chiffrement géré par Google par défaut et en cas d'utilisation de CMEK.

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 CMEK, Memorystore utilise la clé KEK de Cloud Key Management Service pour déchiffrer la clé DEK, puis il utilise 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.

Tarifs

Memorystore pour Redis facture une instance compatible avec CMEK comme n'importe quelle autre instance. Il n'y a aucun coût supplémentaire. Pour en savoir plus, consultez la page Tarifs de Memorystore pour Redis.

Vous utilisez l'API Cloud KMS pour gérer CMEK. Lorsque vous créez une instance Memorystore pour Redis avec CMEK, Memorystore utilise la clé régulièrement pour chiffrer les données.

Cloud KMS vous facture le coût de la clé, ainsi que les opérations de chiffrement et de déchiffrement lorsque Memorystore pour Redis utilise la clé. Pour en savoir plus, consultez la page Tarifs de Cloud KMS.

Quand Memorystore interagit-il avec CMEK ?

Opération Description
Création d'une instance Lorsque vous créez une instance, vous la configurez pour qu'elle utilise CMEK.
Mise à jour de l'instance Lors de la mise à jour d'une instance pour laquelle CMEK est activé, Memorystore pour Redis vérifie la clé CMEK.

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

CMEK chiffre les types de données suivants :

  • Les données client stockées dans un espace de stockage persistant.
  • Les métadonnées lié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 pour Redis au format suivant :

  service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
  

L'attribution de cette autorisation permet au compte de service de demander un accès à la clé à partir de Cloud KMS.

Pour savoir comment attribuer cette autorisation au compte de service, consultez Accorder au compte de service Memorystore pour Redis l'accès à la clé.

À propos des clés

Dans Cloud KMS, vous devez créer un trousseau de clés avec une clé cryptographique qui utilise un algorithme de chiffrement symétrique. Lorsque vous créez une instance Memorystore pour Redis, vous sélectionnez cette clé pour chiffrer l'instance. Vous pouvez créer un projet pour vos clés et vos instances, ou des projets différents pour chacun d'eux.

CMEK est disponible dans tous les emplacements d'instances de Memorystore pour Redis. Vous devez créer le trousseau de clés et la clé dans la même région que celle où vous souhaitez créer l'instance. Une clé pour une région mondiale ou un emplacement multirégional ne fonctionne pas. Si les régions ou les emplacements ne correspondent pas, la requête de création de l'instance échoue.

Pour l'ID de ressource de la clé, CMEK utilise le format suivant :

projects/CMEK_ENABLED_PROJECT/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Si Memorystore pour Redis ne peut accéder à aucune version de clé utilisée (par exemple, si vous désactivez toutes les versions de clé), Memorystore pour Redis arrête l'instance. Dans la Google Cloud console, une instance suspendue affiche une info-bulle avec un point d'exclamation rouge sur la page Instances. Si vous pointez sur l'info-bulle, l'état No state s'affiche. Une fois la clé accessible, Memorystore pour Redis réactive automatiquement l'instance.

Clés externes

Vous pouvez utiliser Cloud External Key Manager (Cloud EKM) pour chiffrer les données dans Google Cloud Google Cloud à l'aide de clés externes que vous gérez.

Lorsque vous utilisez une clé Cloud EKM, Google n'a aucun contrôle sur la disponibilité de votre clé gérée en externe. Si la clé n'est pas disponible lorsque vous créez votre instance, l'instance n'est pas créée.

Pour plus d'informations sur l'utilisation des clés externes, consultez la section Cloud External Key Manager.

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

Dans certains cas, vous pouvez souhaiter rendre les données chiffrées avec CMEK définitivement inaccessibles. Pour ce faire, vous devez détruire la version de clé. Pour en savoir plus sur la destruction des versions de clé, consultez Détruire et restaurer des versions de clé.

Comment importer ou exporter des données pour une instance compatible avec CMEK ?

Si vous souhaitez que vos données restent chiffrées avec CMEK lorsque vous exportez des données, vous devez définir une clé CMEK sur le bucket Cloud Storage avant d'y exporter des données.

Si vos données sont stockées sur une instance compatible avec CMEK, aucune exigence ni restriction particulière ne s'applique à l'importation de données dans une nouvelle instance.

Comportement d'une version de clé CMEK

Cette section fournit des informations sur ce qui se passe lorsque vous désactivez, détruisez, faites pivoter, activez et restaurez une version de clé.

Désactiver ou détruire une version de clé CMEK

Si vous souhaitez vous assurer qu'aucune donnée n'est accessible à votre instance, désactivez la version de clé primaire de votre CMEK. Cela arrête votre instance. De plus, si une clé CMEK en cours d'utilisation est désactivée ou détruite, Memorystore pour Redis arrête l'instance. Cela inclut toute version de clé antérieure utilisée par l'instance.

Pour voir si Memorystore pour Redis suspend votre instance, utilisez l'une des interfaces suivantes :

  • Google Cloud Console : sur la page Instances, une info-bulle avec un point d'exclamation rouge s'affiche à côté de votre instance. Si vous pointez sur l'info-bulle, l'état No state s'affiche.
  • gcloud CLI : utilisez la commande gcloud redis instances describe. Vérifiez que vous ne voyez pas state: READY, state: REPAIRING ni aucun autre état dans les métadonnées de l'instance.

Rechiffrer manuellement les données protégées par CMEK

Memorystore pour Redis n'est pas compatible avec le réencapsulage à la demande des données au repos existantes. Vous ne pouvez pas déclencher manuellement un processus pour utiliser une nouvelle version de clé afin de rechiffrer les sauvegardes existantes ou les fichiers de persistance actifs. Toutefois, vous pouvez utiliser la nouvelle version de clé pour chiffrer les données nouvellement écrites.

Remplacer une clé KMS protégée

Si vous remplacez une clé KMS protégée par une autre clé KMS ou par une nouvelle version de clé primaire, Memorystore pour Redis n'applique cette modification qu'aux opérations futures.

Le remplacement d'une clé KMS protégée a les effets suivants sur vos ressources :

  • Sauvegardes : Memorystore pour Redis exporte les sauvegardes vers des buckets Cloud Storage. La clé de chiffrement Cloud Storage contrôle la clé utilisée pour chiffrer les données.
  • Persistance : la nouvelle clé KMS est utilisée lors du prochain redémarrage de l'instance ou lors d'un événement de maintenance.
  • Cache principal : le remplacement de cette clé n'a aucun impact. CMEK ne chiffre pas les données en mémoire, car elles ne sont pas considérées comme des données au repos.

Activer ou restaurer la version de clé CMEK principale

Si vous activez ou restaurez la version de clé primaire de votre CMEK, Memorystore pour Redis ne masque plus votre instance.

Limites

Les limites suivantes s'appliquent lorsque vous utilisez CMEK avec Memorystore pour Redis :

  • Vous ne pouvez pas activer CMEK sur une instance Memorystore pour Redis existante.
  • La clé, le trousseau de clés et l'instance doivent se trouver dans la même région.
  • Vous devez utiliser l'algorithme de chiffrement symétrique pour votre clé.
  • Les taux de chiffrement et de déchiffrement de Cloud KMS sont soumis à un quota.

À propos des contraintes des règles d'administration CMEK

Memorystore pour Redis est compatible avec les contraintes des règles d'administration pour CMEK. En utilisant ces contraintes, vous pouvez appliquer la protection CMEK à vos instances et limiter les clés Cloud KMS que vous pouvez utiliser pour cette protection.

Vous pouvez configurer les contraintes de règle d'administration suivantes :

  • constraints/gcp.restrictNonCmekServices: utilisez cette contrainte pour appliquer la protection CMEK à vos instances. Si l'API Memorystore pour Redis figure dans la liste des services Deny de cette contrainte, vous ne pouvez pas créer d'instances non protégées par CMEK.
  • constraints/gcp.restrictCmekCryptoKeyProjects: utilisez cette contrainte pour limiter les clés Cloud KMS que vous pouvez utiliser pour la protection CMEK. Si vous configurez cette contrainte, les instances qui utilisent le chiffrement CMEK doivent utiliser une clé provenant d'un projet, d'un dossier ou d'une organisation autorisée.