Présentation des clés de chiffrement gérées par le client (CMEK)

Par défaut, toutes les données au repos dans Google Cloud, y compris les données dans Spanner, sont protégées par le chiffrement par défaut de Google. Google Cloud traite et gère ce chiffrement par défaut sans intervention de votre part.

Si vous avez des exigences réglementaires ou de conformité spécifiques liées aux clés qui protègent vos données, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK) pour Spanner. Au lieu que Google détienne et gère les clés de chiffrement qui protègent vos données, votre base de données Spanner est protégée à l'aide d'une clé que vous contrôlez et gérez dans Cloud Key Management Service (KMS). Il peut s'agir d'une clé symétrique, d'une clé Cloud HSM ou d'une clé Cloud External Key Manager.

Les CMEK ne sont pas compatibles avec les configurations d'instances personnalisées.

Cette page décrit le chiffrement CMEK pour Spanner. Pour en savoir plus sur le chiffrement CMEK en général, y compris quand et pourquoi l'activer, consultez la documentation Cloud KMS.

Fonctionnalités

  • Contrôle des accès aux données:les administrateurs peuvent alterner des clés utilisées pour protéger les données au repos dans Spanner, en gérer l'accès, et désactiver ou détruire la clé utilisée pour protéger les données au repos.
  • Possibilité d'auditer:si vous activez les journaux d'audit pour l'API Cloud KMS dans votre projet, toutes les actions effectuées sur la clé, y compris celles effectuées par Spanner, sont consignées et consultables dans Cloud Logging. Les clés Cloud EKM sont compatibles avec Key Access Justifications, qui ajoute un champ de justification à toutes les requêtes de clé. Avec certains partenaires de gestion de clés externes, vous pouvez approuver ou refuser automatiquement ces demandes, en fonction de leur justification.
  • Performances:aucun changement n'a été apporté aux performances de Spanner ni au contrat de niveau de service.

Tarification

Spanner facture les bases de données utilisant CMEK comme n'importe quelle autre base de données. Aucun coût supplémentaire n'est associé à Spanner. Pour en savoir plus, consultez la page Tarifs de Spanner.

Cloud KMS vous facture à la fois le coût de la clé et les opérations de chiffrement effectuées sur celle-ci (chaque fois que Spanner utilise la clé pour le chiffrement/déchiffrement). Ces coûts devraient être minimes, compte tenu du nombre attendu d'opérations de chiffrement générées par Spanner. Pour en savoir plus, consultez la page Tarifs de Cloud KMS.

Éléments protégés par CMEK

Dans une base de données sur laquelle CMEK est activé, Spanner utilise votre clé Cloud KMS pour protéger les données au repos. Cela inclut les données d'une base de données stockée sur disque ou Flash.

Certaines exceptions s'appliquent. Les types de données suivants sont protégés par le chiffrement au repos par défaut de Google, et non par la clé CMEK :

  • Sous-ensemble de clés de ligne qui marquent les limites de plage
  • Les données de débogage, y compris les vidages de mémoire et les journaux opérationnels
  • Les données en transit ou en mémoire
  • Métadonnées de base de données

Spanner comporte trois couches de chiffrement. Les données au repos sont divisées en fragments de sous-fichiers pour le stockage, et chaque fragment est chiffré au niveau du stockage avec une clé de chiffrement individuelle. Les données d'un fragment sont chiffrées à l'aide d'une clé de chiffrement des données (DEK, Data Encryption Key). En raison du grand nombre de clés chez Google, ainsi que du besoin d'une faible latence et d'une haute disponibilité, ces clés sont stockées à proximité des données qu'elles chiffrent. Les DEK sont chiffrées (ou "encapsulées") à l'aide d'une clé de chiffrement de clé (KEK). Enfin, chaque clé KEK est chiffrée avec votre clé de chiffrement gérée par le client.

Lorsque vous effectuez une rotation de la clé CMEK, Spanner ne rechiffre que les KEK intermédiaires avec la dernière version principale de la clé CMEK. Une fois le rechiffrement terminé, la désactivation ou la suppression des anciennes versions de la clé CMEK ne désactive pas l'accès à la base de données. Vous pouvez également afficher les versions de clé utilisées pour protéger une base de données.

Avec CMEK

Schéma illustrant le chiffrement avec une clé de chiffrement gérée par le client

Sans CMEK

Schéma illustrant le chiffrement avec une clé détenue et gérée par Google

Activer les CMEK

Afin d'utiliser CMEK pour les bases de données Spanner, vous devez créer une base de données et spécifier la clé Cloud KMS lors de la création de la base de données.

Spanner peut accéder à la clé en votre nom une fois que vous avez attribué le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) à un compte de service Spanner géré par Google.

Pour obtenir des instructions détaillées, consultez Utiliser des CMEK.

Les API d'accès aux données de Spanner, telles que celles permettant de gérer des sessions et d'exécuter des transactions sur des données, sont exactement les mêmes pour les clés gérées par le client et pour les clés détenues et gérées par Google. Les applications n'ont pas besoin de spécifier de clés ni de configurations de chiffrement lors de la lecture ou de l'écriture de données. Le chiffrement est entièrement géré par le service.

Gestion des clés

Les opérations de gestion des clés sont effectuées à l'aide de Cloud KMS. Spanner ne peut pas détecter les modifications de clé ni prendre de mesures en conséquence tant qu'elles n'ont pas été propagées par Cloud KMS. Certaines opérations, telles que la désactivation ou la destruction d'une clé, peuvent prendre jusqu'à trois heures pour se propager. Les modifications apportées aux autorisations sont généralement appliquées beaucoup plus rapidement.

Une fois la base de données créée, Spanner appelle Cloud KMS toutes les cinq minutes environ pour s'assurer que la clé est toujours valide.

Si Spanner détecte que votre clé Cloud KMS a été désactivée ou détruite, une opération visant à rendre votre base de données inaccessible commence immédiatement. Tous les appels suivants à la base de données, y compris les sessions, les lectures et les écritures, renverront une erreur FAILED_PRECONDITION: KMS key required by the Spanner resource is not accessible.

Si les appels de Spanner à Cloud KMS détectent qu'une clé précédemment désactivée a été réactivée, Cloud KMS restaure automatiquement l'accès à la base de données Spanner.

Traitement de l'état d'indisponibilité d'une clé

Dans de rares cas, par exemple lorsque Cloud KMS est indisponible, Spanner peut ne pas être en mesure de récupérer l'état de votre clé à partir de Cloud KMS.

Si votre base de données Spanner est protégée par une clé activée au moment où Spanner ne parvient pas à communiquer avec Cloud KMS, Spanner continue de gérer l'intégralité des opérations de base de données de la manière la plus optimale possible pendant une période pouvant aller jusqu'à une heure, afin de minimiser l'impact de ce type d'incident sur votre charge de travail.

Au bout d'une heure, si Spanner ne parvient toujours pas à se connecter à Cloud KMS, par mesure de protection, il commence à mettre la base de données hors connexion. Les données de votre base de données Spanner restent inaccessibles jusqu'à ce que votre base de données puisse se reconnecter à Cloud KMS et que Cloud KMS vous indique que la clé est active.

À l'inverse, si votre base de données Spanner est protégée par une clé désactivée au moment où Spanner ne peut plus communiquer avec Cloud KMS, votre base de données reste inaccessible jusqu'à ce qu'elle puisse se reconnecter à Cloud KMS et que vous ayez réactivé votre clé.

Remarques importantes concernant les clés externes

Lorsque vous utilisez une clé Cloud EKM, Google n'a aucun contrôle sur la disponibilité de votre clé gérée en externe dans le système partenaire de gestion des clés externes.

Si une clé gérée en externe n'est pas disponible, Spanner continue de prendre en charge l'ensemble des opérations de base de données à l'aide d'une version mise en cache de la clé, pendant une durée maximale d'une heure.

Au bout d'une heure, si Spanner ne parvient toujours pas à se connecter à Cloud KMS, par mesure de protection, il commence à mettre la base de données hors connexion. Les appels à la base de données échoueront et renvoient l'erreur FAILED_PRECONDITION: External key error: Could not find a key resource at the key URI..

Pour en savoir plus sur l'utilisation de clés externes, consultez la documentation Cloud External Key Manager.

Sauvegarde et restauration

Comme les bases de données, les sauvegardes Spanner peuvent être protégées par des CMEK ou des clés détenues ou gérées par Google. Par défaut, une sauvegarde utilise la même configuration de chiffrement que sa base de données, mais vous pouvez ignorer ce comportement en spécifiant une configuration de chiffrement différente lors de la création de la sauvegarde. Si la sauvegarde est activée par CMEK, elle est chiffrée à l'aide de la version principale de la clé KMS au moment de la création de la sauvegarde. Une fois la sauvegarde créée, sa clé et sa version de clé ne peuvent pas être modifiées, même si la clé KMS est alternée. Pour en savoir plus, consultez la section Sauvegarder une base de données.

Lorsque vous restaurez une base de données à partir d'une sauvegarde, celle-ci utilise par défaut la même configuration de chiffrement que la sauvegarde. Vous pouvez ignorer ce comportement en spécifiant une configuration de chiffrement différente lors de la restauration de la base de données. Pour restaurer une sauvegarde pour laquelle CMEK est activé, la clé et la version de clé utilisées pour chiffrer la sauvegarde doivent être disponibles. Pour en savoir plus, consultez la section Restaurer à partir d'une sauvegarde.

Journalisation

Vous pouvez auditer les requêtes que Spanner envoie à Cloud KMS en votre nom dans Cloud Logging, si vous avez activé la journalisation d'audit pour l'API Cloud KMS dans votre projet. Ces entrées de journal Cloud KMS sont visibles dans Cloud Logging.

Exiger ou limiter l'utilisation de CMEK dans votre organisation

Vous pouvez définir des règles à l'échelle de l'organisation concernant l'utilisation de la protection CMEK dans divers produits Google Cloud, y compris Spanner. Ces règles vous permettent d'effectuer les opérations suivantes:

  • Exigez que les bases de données Spanner créées par votre organisation utilisent la protection CMEK.

  • Limitez les clés Cloud KMS de votre organisation disponibles pour la protection CMEK.

Pour en savoir plus, consultez la page Règles d'administration CMEK.