À 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, Customer Managed Encryption Keys) avec Memorystore pour Redis. Pour commencer à utiliser cette fonctionnalité, consultez Utiliser 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 s'adresse 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 Choisir d'utiliser ou non CMEK.

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

La fonctionnalité CMEK vous permet d'utiliser vos propres clés de chiffrement 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 des DEK : Memorystore utilise des DEK pour chiffrer les données dans Memorystore pour Redis.
  • Chiffrement KEK : Memorystore utilise des KEK pour chiffrer les 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. Les CMEK vous permettent de créer, de désactiver ou de détruire, et d'activer ou de restaurer la clé KEK.

Vous gérez les clés 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 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 des 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 CMEK comme n'importe quelle autre instance. Il n'y a pas de frais supplémentaires. 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é de manière périodique 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 ?

La clé CMEK chiffre les types de données suivants :

  • Données client stockées dans un espace de stockage persistant.
  • 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
  

Cette autorisation permet au compte de service de demander l'accès aux clés à Cloud KMS.

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

À propos des clés

Dans Cloud KMS, vous devez créer un trousseau 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 unique pour vos clés et vos instances, ou un projet distinct pour chaque élément.

CMEK est disponible dans tous les emplacements d'instances 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, une 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é), il arrête l'instance. Dans la console Google Cloud , une info-bulle avec un point d'exclamation rouge s'affiche sur la page Instances pour une instance suspendue. Si vous pointez sur l'info-bulle, l'état No state s'affiche. Une fois la clé redevenue 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 dansGoogle 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, celle-ci 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 par CMEK définitivement inaccessibles ?

Vous pouvez être amené à rendre définitivement inaccessibles des données chiffrées avec CMEK. Pour ce faire, détruisez 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 utilisant CMEK ?

Si vous souhaitez que vos données restent chiffrées avec une clé CMEK lorsque vous les exportez, 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 utilisant CMEK, il n'existe pas d'exigences ni de restrictions particulières concernant l'importation de données vers une nouvelle instance.

Comportement d'une version de clé CMEK

Cette section explique ce qui se passe lorsque vous désactivez, détruisez, faites pivoter, activez ou 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 principale de votre clé 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 ancienne version de clé utilisée par l'instance.

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

  • Console Google Cloud  : sur la page Instances, un 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 state: READY, state: REPAIRING ou tout autre état ne s'affichent pas dans les métadonnées de l'instance.

Activer ou restaurer la version principale de la clé CMEK

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

Limites

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

  • Vous ne pouvez pas activer CMEK sur une instance Memorystore pour Redis existante.
  • La région de la clé, du trousseau de clés et de l'instance doit être identique.
  • 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.

Règles d'administration CMEK

Memorystore pour Redis est compatible avec les contraintes de règles d'administration que vous pouvez utiliser pour la protection CMEK.

Les règles peuvent limiter les clés Cloud KMS pouvant être utilisées pour la protection CMEK.

  • Si l'API Memorystore pour Redis figure dans la liste des services Deny de la contrainte constraints/gcp.restrictNonCmekServices, vous ne pouvez pas créer d'instances non protégées par CMEK.

  • Si vous configurez la contrainte constraints/gcp.restrictCmekCryptoKeyProjects, Memorystore pour Redis crée des instances protégées par CMEK qui sont chiffrées à l'aide d'une clé provenant d'un projet, d'un dossier ou d'une organisation autorisés.

Pour en savoir plus sur la configuration des règles d'administration CMEK, consultez Règles d'administration CMEK.