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. Après l'ajout des clés de chiffrement gérées par le client, Memorystore utilise votre clé pour accéder aux données à chaque appel d'API.
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 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 ainsi que les données chiffrées sur le disque persistant, et Google gère la clé KEK Google. La CMEK est la KEK qui encapsule la DEK. 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 et en cas d'utilisation des clés de chiffrement gérées par le client.
Sans CMEK
Avec CMEK
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, puis il utilise la clé DEK non chiffrée pour déchiffrer les données au repos.
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 de sorte 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 de la mise à jour d'une instance pour laquelle CMEK est activé. |
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 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, qui présente le 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 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 qui utilise un algorithme de chiffrement/déchiffrement symétrique. Lorsque vous créez une instance Memorystore, vous sélectionnez cette clé pour chiffrer l'instance. Vous pouvez créer un projet unique pour les clés et les instances Memorystore, ou un projet distinct pour chaque élément.
CMEK est disponible dans tous les emplacements d'instances Memorystore. La région de la clé et du trousseau de clés doit être définie sur la même région que l'instance Memorystore pour Redis. Une clé d'une région mondiale ou d'un emplacement multirégional ne fonctionne pas. Une requête pour la création d'une instance Memorystore échoue si les régions ne correspondent pas.
CMEK pour Memorystore est compatible 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 parvient pas à accéder à une version de clé actuellement utilisée (par exemple, si vous désactivez la version de clé), il arrête l'instance sans délai excessif. Dans la console Google Cloud , une instance suspendue affiche un info-bulle avec un point d'exclamation rouge sur la page Instances. Lorsque vous pointez sur l'info-bulle, le message "Aucun état" s'affiche. Lorsque la clé redevient 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 cette clé sur le bucket Cloud Storage avant d'exporter des données.
Il n'existe pas d'exigences ni de restrictions particulières concernant l'importation de données vers une nouvelle instance Memorystore lorsque celles-ci étaient précédemment stockées sur une instance Memorystore utilisant CMEK.
Comportement lors de la destruction/désactivation d'une version de clé CMEK
Si vous souhaitez vous assurer qu'aucune donnée n'est accessible dans votre instance, vous pouvez désactiver la version principale de votre clé de chiffrement gérée par le client. Cela arrête votre instance sans délai excessif. De plus, Memorystore arrête une instance sans délai excessif si une clé de chiffrement gérée par le client en cours d'utilisation est désactivée ou détruite. Cela inclut toute version de clé plus ancienne encore utilisée par une instance Memorystore. Vous pouvez utiliser gcloud ou la console Google Cloud pour vérifier si votre instance est suspendue :
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 vous pointez dessus.
Pour gcloud, si vous exécutez gcloud 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, cela signifie que votre instance est suspendue.
Réactiver/restaurer une version de clé CMEK en cours d'utilisation
Une instance est réaffichée après la réactivation/restauration d'une version de clé CMEK en cours d'utilisation.
Restrictions
Les restrictions suivantes s'appliquent lorsque vous utilisez des 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 de clés 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.
Règles d'administration CMEK
Memorystore pour Redis est compatible avec les contraintes liées aux règles d'administration qui peuvent être utilisées pour la protection CMEK.
Les règles peuvent limiter les clés Cloud KMS pouvant être utilisées pour la protection CMEK.
Lorsque l'API Memorystore pour Redis figure dans la liste des services
Deny
de la contrainteconstraints/gcp.restrictNonCmekServices
, la création de Memorystore pour Redis échoue pour les instances non protégées par CMEK.Lorsque
constraints/gcp.restrictCmekCryptoKeyProjects
est configuré, 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.