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

Ce document explique comment utiliser des clés de chiffrement gérées par le client (CMEK) dans Cloud Key Management Service (Cloud KMS) pour vos instances Memorystore for Redis. Le document décrit également les données chiffrées dans le stockage persistant et le comportement de vos instances lors des événements clés du cycle de vie.

Le chiffrement CMEK vous permet de contrôler les clés cryptographiques qui protègent vos données stockées. En gérant vos propres clés dans Cloud KMS, vous contrôlez mieux l'accès aux clés, leur rotation et leur utilisation, ce qui vous aide à répondre aux exigences strictes de conformité et réglementaires.

L'implémentation de CMEK fournit une couche de sécurité et de contrôle supplémentaire pour vos données persistantes, telles que les sauvegardes et les fichiers de persistance. Vous ne pouvez activer CMEK que sur de nouvelles instances. Vous ne pouvez pas appliquer de CMEK aux instances existantes.

À qui s'adresse CMEK ?

La fonctionnalité CMEK est destinée aux organisations qui traitent des données sensibles ou réglementées et qui doivent contrôler leurs propres clés de chiffrement. Pour savoir si vous devez utiliser des CMEK pour chiffrer ces données, consultez Déterminer si vous devez utiliser des CMEK.

Chiffrement géré par le client

Les clés CMEK vous permettent d'utiliser vos clés cryptographiques pour protéger les données stockées dans les instances. Pour chiffrer ces données, Memorystore pour Redis utilise des clés de chiffrement des données (DEK) gérées par Google et des clés de chiffrement de clé (KEK) gérées par le client.

Vous pouvez choisir parmi les niveaux de chiffrement suivants :

  • Chiffrement des DEK : les DEK chiffrent les données dans Memorystore pour Redis.
  • Chiffrement KEK : les KEK chiffrent les DEK.

Memorystore pour Redis utilise des KEK pour chiffrer les DEK, et des DEK pour chiffrer les données stockées. Si vous utilisez CMEK, vous pouvez gérer les KEK qui chiffrent les DEK de votre instance.

Le schéma suivant montre comment une instance utilise CMEK pour chiffrer les données. Les données importées dans l'infrastructure de stockage de Google sont divisées en fragments, et chacun d'entre eux est chiffré avec sa propre clé DEK. Cloud KMS fournit la clé KEK pour chiffrer les clés DEK, et l'infrastructure de stockage de Google distribue à la fois les blocs de données chiffrés et les clés DEK chiffrées dans le système.

Les données sont importées dans l'infrastructure de stockage de Google et divisées en fragments. Chaque fragment est chiffré avec sa propre clé DEK. Les DEK sont ensuite chiffrées à l'aide d'une KEK extraite de Cloud KMS. Les fragments chiffrés et les DEK chiffrées sont répartis sur l'infrastructure de stockage.

Le diagramme suivant montre comment Memorystore for Redis déchiffre les données chiffrées avec CMEK. Pour accéder à ces données chiffrées, Memorystore for Redis envoie une requête à Cloud KMS, qui gère la clé KEK, afin de déchiffrer la clé DEK. Cloud KMS renvoie ensuite la DEK déchiffrée, que l'instance utilise pour déchiffrer les données stockées.

Fragment de données chiffré avec la clé DEK et stocké avec la clé DEK chiffrée Une requête de déchiffrement de la DEK est envoyée à Cloud KMS, qui stocke la KEK. Cloud KMS renvoie la DEK déchiffrée.

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

Le chiffrement CMEK chiffre les types de données client suivants stockés dans un espace de stockage persistant :

  • Sauvegardes : les sauvegardes vous permettent de récupérer vos données à un moment précis, ainsi que de les exporter et de les analyser. Les sauvegardes sont également utiles pour la reprise après sinistre, la migration de données, le partage de données et les scénarios de conformité.
  • Persistance : Memorystore pour Redis est compatible avec la persistance RDB (Redis Database), qui vous permet d'enregistrer des instantanés de vos données dans un espace de stockage durable.
  • Métadonnées liées aux fonctionnalités de sécurité telles que AUTH et le chiffrement en transit. Pour en savoir plus, consultez À propos de l'authentification Redis et À propos du chiffrement en transit.

Composants CMEK

Les sections suivantes décrivent les exigences et les comportements des comptes de service, des clés cryptographiques, des versions de clé et des règles d'administration qui composent votre architecture CMEK.

Comptes de service

Pour créer une instance compatible avec CMEK, vous devez attribuer le rôle roles/cloudkms.cryptoKeyEncrypterDecrypter au compte de service Memorystore pour Redis qui utilise le format suivant :

service-PROJECT_NUMBER@cloud-redis.

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

Clés

Dans Cloud KMS, vous devez créer un trousseau, puis 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

Pour savoir comment trouver les ID de ressources des clés existantes, consultez Obtenir un ID de ressource Cloud KMS.

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

Dans le cadre de votre stratégie CMEK, vous pouvez utiliser des clés externes. Pour ce faire, utilisez Cloud External Key Manager (Cloud EKM) afin de chiffrer les données dans 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 vos clés gérées en externe. Si une clé n'est pas disponible lorsque vous créez votre instance, Memorystore pour Redis ne la crée pas. De plus, si la clé externe devient indisponible à un moment donné après la création de l'instance, Memorystore pour Redis suspend l'instance jusqu'à ce que l'accès soit rétabli.

Pour plus d'informations sur l'utilisation des clés externes, consultez la section Points à prendre en compte.

Versions de clé

Cloud KMS stocke le matériel de clé cryptographique que vous utilisez pour chiffrer et déchiffrer vos données dans une version de clé. Une même clé peut contenir plusieurs versions. Chaque fois que vous effectuez une rotation de clé, vous créez une version de clé.

Les sections suivantes décrivent le comportement de vos instances et de leurs données protégées lors d'événements clés du cycle de vie, tels que la désactivation, la destruction, l'activation ou la restauration de versions de clés. Les sections expliquent également l'impact du remplacement d'une clé Cloud KMS, fournissent des conseils sur le rechiffrement manuel des données et expliquent comment importer ou exporter des données pour une instance pour laquelle CMEK est activé.

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

Vous pouvez être amené à rendre des données chiffrées avec CMEK définitivement inaccessibles, par exemple lorsque vous corrigez une fuite de données. Pour détruire les données de manière hautement sécurisée (également appelée déchiquetage cryptographique), vous devez détruire la version de la clé. Pour en savoir plus sur la destruction des versions de clé, consultez Détruire et restaurer des versions de clé.

Si vous souhaitez vous assurer qu'aucune donnée n'est accessible dans votre instance, désactivez la version de votre clé principale. Votre instance est alors suspendue. De plus, si une clé CMEK en cours d'utilisation est désactivée ou détruite, Memorystore pour Redis suspend l'instance. Cela inclut toute ancienne version de clé utilisée par l'instance.

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

  • ConsoleGoogle 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 Aucun état s'affiche.
  • gcloud CLI : utilisez la commande gcloud redis instances describe. Vérifiez le champ state : une instance suspendue n'affiche pas l'état READY ni REPAIRING.

Remplacer une clé Cloud KMS protégée

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

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

  • Sauvegardes : Memorystore pour Redis exporte les sauvegardes vers Cloud Storage. Par conséquent, les paramètres de chiffrement du bucket de destination (et non la CMEK de l'instance) contrôlent la façon dont les données exportées sont chiffrées.
  • Persistance : la nouvelle clé est utilisée la prochaine fois que l'instance redémarre ou qu'un événement de maintenance se produit.
  • 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.

Rechiffrer manuellement des données protégées par une clé 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.

Importer ou exporter des données pour une instance utilisant CMEK

Si vous souhaitez que vos données exportées restent protégées par une clé CMEK, vous devez configurer cette clé sur le bucket Cloud Storage de destination avant d'y exporter des données. Si vos données sont déjà stockées sur une instance utilisant CMEK, il n'existe pas d'exigences ni de restrictions particulières concernant l'importation de ces données dans une nouvelle instance. Pour en savoir plus, consultez À propos de l'importation et de l'exportation de données.

Activer ou restaurer la version principale de la clé CMEK

Si vous activez ou restaurez votre version de clé primaire, Memorystore pour Redis redémarre automatiquement votre instance.

Contraintes liées aux règles d'administration

Memorystore pour Redis est compatible avec les contraintes de 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ègles 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és.

Comme Memorystore pour Redis et Memorystore for Redis Cluster partagent le même point de terminaison (redis.googleapis.com), vous ne pouvez pas appliquer CMEK aux instances indépendamment des clusters dans Memorystore for Redis Cluster.

Pour en savoir plus sur les contraintes liées aux règles d'administration CMEK que Google gère pour Memorystore pour Redis, consultez Contraintes liées aux règles d'administration.

Tarifs

Memorystore pour Redis facture une instance activée avec 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 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.

Limites

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

  • Vous ne pouvez pas activer les CMEK sur une instance 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.

Étapes suivantes