Cette page décrit les clés de chiffrement gérées par le client (CMEK) pour Spanner. Pour en savoir plus sur CMEK en général, y compris quand et pourquoi l'activer, consultez la documentation de Cloud Key Management Service.
Par défaut, Spanner chiffre le contenu client au repos. Spanner gère le chiffrement pour vous sans aucune action supplémentaire 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 Spanner. 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. Cloud KMS vous permet également de suivre l'utilisation des clés, de consulter les journaux d'audit et de 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 Spanner 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).
Pour savoir comment utiliser les clés CMEK créées manuellement afin de protéger vos ressources Spanner, consultez Sécuriser une base de données avec CMEK.
CMEK avec Cloud KMS Autokey
Pour protéger vos ressources Spanner , vous pouvez créer des clés CMEK manuellement ou utiliser Cloud KMS Autokey. Avec Autokey, les trousseaux de clés et les clés sont générés à la demande pour prendre en charge la création de ressources dans Spanner. Les agents de service qui utilisent les clés pour les opérations de chiffrement et de déchiffrement sont créés s'ils n'existent pas déjà et s'ils disposent des rôles IAM (Identity and Access Management) requis. Pour en savoir plus, consultez la présentation d'Autokey.
Spanner n'est compatible avec Cloud KMS Autokey que lors de la création de ressources à l'aide de Terraform ou de l'API REST. Vous ne pouvez pas utiliser Cloud KMS Autokey pour créer plusieurs clés Cloud KMS régionales (à région unique) pour une base de données Spanner.
Pour utiliser des clés CMEK créées par Cloud KMS Autokey afin de protéger vos ressources Spanner, suivez la procédure fournie pour Secret Manager dans Utiliser Autokey avec les ressources Secret Manager à titre d'exemple.
Fonctionnalités
- Contrôle de l'contrôle des accès données : les administrateurs peuvent alterner la clé utilisée pour protéger les données au repos dans Spanner, en gérer l'accès, et la désactiver ou la détruire.
- Possibilité de réaliser des audits : si vous activez la journalisation d'audit pour l'API Cloud KMS dans votre projet, toutes les actions sur la clé, y compris celles effectuées par Spanner, sont enregistrées et visibles 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 : l'utilisation de CMEK n'entraîne aucune modification des performances de Spanner ni du contrat de niveau de service.
- Prise en charge de plusieurs clés régionales : vous pouvez créer plusieurs clés Cloud KMS régionales (à région unique) pour protéger une base de données dans une configuration d'instance Spanner personnalisée, birégionale ou multirégionale.
Tarifs
Spanner facture les bases de données compatibles avec CMEK comme n'importe quelle autre base de données. L'activation de CMEK n'entraîne aucun coût Spanner supplémentaire. Pour en savoir plus, consultez la page Tarifs de Spanner.
Cloud KMS vous facture à la fois le coût de la clé et toutes les opérations cryptographiques effectuées sur cette clé (chaque fois que Spanner utilise la clé pour le chiffrement/déchiffrement). Nous prévoyons que ces coûts seront minimes en fonction du nombre attendu d'opérations cryptographiques 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 compatible avec CMEK, Spanner utilise vos clés Cloud KMS pour protéger les données au repos. Cela inclut les données d'une base de données stockées sur disque ou sur mémoire 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 :
- Un sous-ensemble de clés de ligne qui marquent les limites de la 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
Dans Spanner, il existe trois niveaux de chiffrement. Les données au repos sont stockées sous la forme de fragments de sous-fichiers, et chaque fragment est chiffré au niveau du stockage avec une clé de chiffrement individuelle. La clé utilisée pour chiffrer les données d'un fragment est appelée clé de chiffrement des données (DEK). En raison du volume élevé de clés chez Google, ainsi que de la nécessité 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 elles-mêmes chiffrées (ou encapsulées) à l'aide d'une clé de chiffrement de clé (KEK). Enfin, chaque KEK est chiffrée avec votre clé CMEK.
Lorsque vous effectuez une rotation de la clé CMEK, Spanner rechiffre uniquement 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 versions antérieures 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

Sans CMEK

Activer CMEK
Pour 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 au moment de sa création.
Spanner peut accéder à la clé en votre nom après avoir accordé
le rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS
(roles/cloudkms.cryptoKeyEncrypterDecrypter) à un compte de service
Spanner géré par Google.
Pour obtenir des instructions détaillées, consultez Sécuriser une base de données avec CMEK.
Les API d'accès aux données de Spanner data access APIs, telles que celles utilisées pour gérer les sessions et exécuter des transactions sur les données, sont exactement les mêmes pour CMEK et Google-owned and Google-managed encryption keys. 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. Tout le chiffrement est géré par le service.
Gérer les clés
Les opérations de gestion des clés sont effectuées à l'aide de Cloud KMS. Spanner ne peut ni détecter, ni exploiter les modifications d'une clé avant que celles-ci ne soient 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 être propagées ; les modifications des autorisations sont généralement propagées beaucoup plus rapidement.
Une fois la base de données créée, Spanner appelle Cloud KMS environ toutes les cinq minutes 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, renvoient 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.
De plus, si une base de données est protégée par plusieurs clés régionales et que toutes les clés sont désactivées ou détruites, Spanner commence immédiatement à rendre votre base de données inaccessible. Si Spanner détecte qu'un sous-ensemble seulement des clés de la base de données est désactivé ou détruit, il désactive la base de données sur une période de 12 heures. Il est fortement déconseillé de désactiver ou de détruire uniquement un sous-ensemble de clés dans une base de données compatible avec CMEK, car cela peut entraîner un comportement incertain. Pour éviter cela, vous pouvez utiliser la
métrique Clés CMEK Spanner
(instance/replica/cmek/total_keys) afin de déclencher une alerte si un sous-ensemble de clés est
désactivé ou détruit. Pour en savoir plus, consultez
Créer une alerte pour la désactivation d'un sous-ensemble de CMEK.
Créer une alerte pour la désactivation d'un sous-ensemble de CMEK
Vous pouvez utiliser la
métrique Clés CMEK Spanner
(/instance/replica/cmek/total_keys) afin de déclencher une alerte si un sous-ensemble de CMEK
est désactivé ou détruit. Pour créer cette règle d'alerte, développez les étapes et les
paramètres suivants :
Paramètres de la règle d'alerte CMEK
| Nouvelle condition Champ |
Valeur |
|---|---|
| Ressource et métrique | Dans le menu Ressources, sélectionnez Instance Spanner. Dans le menu Catégories de métriques, sélectionnez Instance. Dans le menu Métriques, sélectionnez Clés CMEK. (Le metric.type est spanner.googleapis.com/instance/replica/cmek/total_keys).
|
| Filter | instance_id = INSTANCE_IDis_key_revoked = TRUE |
| Sur les séries temporelles Grouper les séries temporelles par |
database |
| Sur les séries temporelles Agrégation des séries temporelles |
sum |
| Fenêtre glissante | 10 m |
| Fenêtrage glissant | mean |
| Champ Configurer le déclencheur d'alerte |
Valeur |
|---|---|
| Type de condition | Threshold |
| Déclencheur d'alerte | Any time series violates |
| Position du seuil | Above threshold |
| Seuil | 0
|
| Fenêtre de nouveau test | 1 hr |
| Nouvelle condition Champ |
Valeur |
|---|---|
| Ressource et métrique | Dans le menu Ressources, sélectionnez Instance Spanner. Dans le menu Catégories de métriques, sélectionnez Instance. Dans le menu Métriques, sélectionnez Clés CMEK. (Le metric.type est spanner.googleapis.com/instance/replica/cmek/total_keys).
|
| Filter | instance_id = INSTANCE_IDis_key_revoked = FALSE |
| Sur les séries temporelles Grouper les séries temporelles par |
database |
| Sur les séries temporelles Agrégation des séries temporelles |
sum |
| Fenêtre glissante | 10 m |
| Fenêtrage glissant | mean |
| Champ Configurer le déclencheur d'alerte |
Valeur |
|---|---|
| Type de condition | Threshold |
| Déclencheur d'alerte | Any time series violates |
| Position du seuil | Above threshold |
| Seuil | 0
|
| Fenêtre de nouveau test | 1 hr |
| Champ Configurer le déclencheur d'alerte |
Valeur |
|---|---|
| Déclencheur multiconditionnel | All conditions are met |
Une fois l'alerte créée, si Spanner détecte qu'un sous-ensemble de CMEK a été désactivé, un élément de résumé d'incident s'affiche dans le tableau Incidents de la page Détails de la règle de l'alerte. Vous pouvez également configurer des canaux de notification facultatifs. Pour en savoir plus, consultez la page Créer et gérer des canaux de notification.
Traitement de l'état d'indisponibilité d'une clé
Dans de rares cas, par exemple pendant les périodes d'indisponibilité de Cloud KMS, 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 peut pas communiquer avec Cloud KMS, Spanner continue à prendre en charge les opérations de base de données complètes du mieux qu'il peut sur une période d'une heure maximum afin de minimiser l'impact d'un tel incident sur votre charge de travail. Au bout d'une heure, si Spanner ne parvient toujours pas à se connecter à Cloud KMS, il commence à mettre la base de données hors connexion par mesure de protection. Les données de votre base de données Spanner restent inaccessibles jusqu'à ce que la base de données puisse se reconnecter à Cloud KMS et que Cloud KMS réponde que la clé est bien active.
Inversement, si votre base de données Spanner est protégée par une clé désactivée au moment où Spanner est d'abord incapable de communiquer avec Cloud KMS, elle reste inaccessible jusqu'à ce qu'elle puisse se reconnecter à Cloud KMS et que vous ayez réactivé votre clé.
Si vous utilisez plusieurs clés régionales pour protéger une base de données Spanner, seules les instances dupliquées protégées par une clé résidant dans la région Cloud KMS indisponible sont affectées par l'indisponibilité.
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 les opérations de base de données complètes du mieux qu'il peut pendant une heure au maximum.
Au bout d'une heure, si Spanner ne parvient toujours pas à se connecter à Cloud KMS, il commence à mettre la base de données hors connexion par mesure de protection. Les appels à la base de données échouent avec une
FAILED_PRECONDITION erreur : External key error: Could not find a key resource
at the key URI.
Si vous utilisez plusieurs clés Cloud EKM pour protéger votre base de données Spanner, seules les instances dupliquées protégées par la clé indisponible sont affectées par l'indisponibilité.
Pour plus d'informations sur l'utilisation des clés externes, consultez la documentation de Cloud External Key Manager.
Sauvegarde et restauration
Vous pouvez utiliser CMEK or Google-owned and Google-managed encryption keys pour protéger les sauvegardes Spanner backups. Par défaut, une sauvegarde utilise la même configuration de chiffrement que sa base de données, mais vous pouvez remplacer ce comportement en spécifiant une configuration de chiffrement différente lors de la création de la sauvegarde. Si la sauvegarde est compatible avec les 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 Sauvegarder une base de données.
Lorsque vous restaurez une base de données à partir d' une sauvegarde, la base de données restaurée utilise par défaut la même configuration de chiffrement que la sauvegarde. Vous pouvez remplacer 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 compatible avec CMEK, la clé et la version de clé utilisées pour chiffrer la sauvegarde doivent être disponibles. Pour en savoir plus, consultez Restaurer à partir d'une sauvegarde.
Vous pouvez effectuer des opérations de sauvegarde telles que la création, la copie et la restauration sur une base de données chiffrée avec plusieurs clés régionales.
Toutes les sauvegardes créées par des planifications de sauvegarde peuvent être protégées par CMEK ou Google-owned and Google-managed encryption keys.
Partitionnement géographique
Vous pouvez utiliser CMEK ou Google-owned and Google-managed encryption keys pour protéger les bases de données Spanner qui utilisent le partitionnement géographique. Lorsque vous utilisez le partitionnement géographique, vous devez utiliser une clé Cloud KMS régionale pour chaque emplacement d'instance dupliquée, y compris ceux de la configuration de partition d'instance. Les clés multirégionales ne sont pas acceptées. Chaque clé Cloud KMS régionale doit se trouver dans la même région que l'instance dupliquée Spanner ou l'emplacement de partition d'instance correspondant.
Par exemple, si votre base de données Spanner se trouve dans la configuration d'instance multirégionale nam3, avec des partitions d'instance situées dans europe-west1 et europe-west2, vous devez créer des clés Cloud KMS dans les régions suivantes :
us-east4(partie denam3)us-east1(partie denam3)us-central1(partie denam3)europe-west1(emplacement de la partition d'instance)europe-west2(emplacement de la partition d'instance)
Pour en savoir plus, consultez Sécuriser une base de données avec CMEK.
Journalisation
Vous pouvez auditer les requêtes envoyées par Spanner à Cloud KMS en votre nom dans 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 Logging.
Exiger ou limiter CMEK dans votre organisation
Vous pouvez définir des règles à l'échelle de l'organisation concernant l'utilisation de la protection CMEK dans différents Google Cloud produits, y compris Spanner. Ces règles vous permettent d'effectuer les opérations suivantes :
Exiger que les nouvelles bases de données Spanner créées par votre organisation utilisent la protection CMEK.
Limiter les clés Cloud KMS de votre organisation disponibles pour la protection CMEK.
Pour en savoir plus, consultez Règles d'administration CMEK.
Étape suivante
- Découvrez comment sécuriser une base de données avec CMEK.