Cette page explique comment utiliser des clés de chiffrement gérées par le client (CMEK, Customer-Managed Encryption Key) créées manuellement pour Spanner.
Pour en savoir plus sur les CMEK, consultez la présentation des clés de chiffrement gérées par le client (CMEK).
Créer une base de données compatible avec les CMEK
Créez une clé dans Cloud Key Management Service (Cloud KMS). Spanner permet de créer des clés des types Cloud KMS suivants:
La clé doit se trouver au même emplacement que votre instance Spanner. Par exemple, si la configuration de votre instance Spanner se trouve dans
us-west1
, l'emplacement de votre trousseau de clés Cloud KMS doit également êtreus-west1
.Toutes les configurations d'instances multirégionales Spanner n'ont pas d'emplacement de trousseau de clés Cloud KMS correspondant. Pour les bases de données Spanner dans des configurations d'instance personnalisées, birégionales ou multirégionales, vous pouvez utiliser plusieurs clés Cloud KMS régionales (monorégionales) pour protéger votre base de données. Exemple :
- Si votre base de données Spanner se trouve dans la configuration d'instance multirégionale
nam14
, vous pouvez créer des clés Cloud KMS dansus-east4
,northamerica-northeast1
etus-east1
. - Si votre base de données se trouve dans une configuration d'instance personnalisée qui utilise
nam3
comme configuration d'instance de base avec un réplica en lecture seule supplémentaire dansus-central2
, vous pouvez créer des clés Cloud KMS dansus-east4
,us-east1
,us-central1
etus-central2
.
Facultatif: Pour afficher la liste des emplacements des réplicas dans la configuration de votre instance Spanner, utilisez la commande
gcloud spanner instances get-locations
:gcloud spanner instances get-locations <var>INSTANCE_ID</var>
Pour en savoir plus, consultez les ressources suivantes :
- Si votre base de données Spanner se trouve dans la configuration d'instance multirégionale
Accordez à Spanner l'accès à la clé.
Dans Cloud Shell, créez et affichez l'agent de service, ou affichez-le si le compte existe déjà:
gcloud beta services identity create --service=spanner.googleapis.com \ --project=PROJECT_ID
Si vous êtes invité à installer le composant Commandes bêta de gcloud, saisissez
Y
. Après l'installation, la commande est automatiquement redémarrée.La commande
gcloud services identity
crée ou récupère l'agent de service que Spanner peut utiliser pour accéder à la clé Cloud KMS en votre nom.L'ID de compte de service se présente sous la forme d'une adresse e-mail :
Service identity created: service-xxx@gcp-sa-spanner.iam.gserviceaccount.com
Accordez le rôle Chiffreur/Déchiffreur de CryptoKey Cloud KMS(
cloudkms.cryptoKeyEncrypterDecrypter
) au compte de service pour chaque région (--location
) dans la configuration de votre instance Spanner. Pour ce faire, exécutez la commandegcloud kms keys add-iam-policybinding
:gcloud kms keys add-iam-policy-binding KMS_KEY \ --location KMS_KEY_LOCATION \ --keyring KMS_KEY_RING \ --project=PROJECT_ID \ --member serviceAccount:service-xxx@gcp-sa-spanner.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Voici un exemple de résultat:
Updated IAM policy for key [KMS_KEY]
Si vous utilisez plusieurs clés Cloud KMS pour protéger votre base de données, exécutez la commande
gcloud kms keys add-iam-policybinding
pour toutes vos clés.Ce rôle garantit que le compte de service est autorisé à chiffrer et à déchiffrer avec la clé Cloud KMS. Pour en savoir plus, consultez la page Autorisations et rôles Cloud KMS.
Créez la base de données et spécifiez votre clé Cloud KMS.
Console
Utilisez la console pour créer des bases de données dans des configurations d'instances régionales.
Dans la console Google Cloud , accédez à la page Instances.
Cliquez sur l'instance sur laquelle vous souhaitez créer une base de données.
Cliquez sur Créer une base de données, puis remplissez les champs obligatoires.
Cliquez sur Afficher les options de chiffrement.
Sélectionnez Clé Cloud KMS.
Sélectionnez une clé dans la liste déroulante.
La liste des clés est limitée au projet Google Cloud actuel. Pour utiliser une clé d'un autre projet Google Cloud , créez la base de données à l'aide de gcloud CLI au lieu de la consoleGoogle Cloud .
Une fois la base de données créée, vous pouvez vérifier qu'elle est compatible avec CMEK en consultant la page Présentation de la base de données.
gcloud
Pour créer une base de données compatible avec CMEK dans une configuration d'instance régionale, personnalisée ou multirégionale, exécutez la commande gcloud spanner databases create
:
gcloud spanner databases create DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID \
--ddl="CREATE TABLE Users (Id INT64 NOT NULL, FirstName STRING(100) NOT NULL, LastName STRING(100) NOT NULL,) PRIMARY KEY (Id)" \
--kms-project=KMS_PROJECT_ID \
--kms-location=KMS_KEY_LOCATION \
--kms-keyring=KMS_KEYRING \
--kms-keys=KMS_KEY_1[, KMS_KEY_2 ... ]
Pour vérifier qu'une base de données est compatible avec CMEK, exécutez la commande gcloud spanner databases describe
:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Les bases de données compatibles avec CMEK incluent un champ pour encryptionConfig
, comme illustré dans l'exemple de sortie suivant:
encryptionConfig:
kmsKeyNames:projects/my-kms-project/locations/eur5/keyRings/my-kms-key-ring/cryptoKeys/my-kms-key
name: projects/my-spanner-project/instances/my-instance/databases/my-db
state: READY
Bibliothèques clientes
C#
Pour créer une base de données compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une base de données compatible avec CMEK dans une configuration d'instance multirégionale:
C++
Pour créer une base de données compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une base de données compatible avec CMEK dans une configuration d'instance multirégionale:
Go
Pour créer une base de données compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une base de données compatible avec CMEK dans une configuration d'instance multirégionale:
Java
Pour créer une base de données compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une base de données compatible avec CMEK dans une configuration d'instance multirégionale:
Node.js
Pour créer une base de données compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une base de données compatible avec CMEK dans une configuration d'instance multirégionale:
PHP
Pour créer une base de données compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une base de données compatible avec CMEK dans une configuration d'instance multirégionale:
Python
Pour créer une base de données compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une base de données compatible avec CMEK dans une configuration d'instance multirégionale:
Ruby
Pour créer une base de données compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une base de données compatible avec CMEK dans une configuration d'instance multirégionale:
Afficher les versions de clé utilisées
Le champ encryption_info
de la base de données affiche des informations sur les versions de clé.
Lorsque la version de clé d'une base de données change, la modification n'est pas immédiatement propagée à encryption_info
. La prise en compte de la modification dans ce champ peut prendre un certain temps.
Console
Dans la console Google Cloud , accédez à la page Instances.
Cliquez sur l'instance contenant la base de données que vous souhaitez afficher.
Cliquez sur la base de données.
Les informations de chiffrement s'affichent sur la page Détails de la base de données.
gcloud
Vous pouvez obtenir le encryption_info
d'une base de données en exécutant la commande gcloud spanner databases describe
ou gcloud spanner databases list
. Exemple :
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Voici un exemple de résultat:
name: projects/my-project/instances/test-instance/databases/example-db
encryptionInfo:
- encryptionType: CUSTOMER_MANAGED_ENCRYPTION
kmsKeyVersion: projects/my-kms-project/locations/my-kms-key1-location/keyRings/my-kms-key-ring1/cryptoKeys/my-kms-key1/cryptoKeyVersions/1
- encryptionType: CUSTOMER_MANAGED_ENCRYPTION
kmsKeyVersion: projects/my-kms-project/locations/my-kms-key2-location/keyRings/my-kms-key-ring2/cryptoKeys/my-kms-key2/cryptoKeyVersions/1
Désactiver la clé
Désactivez la ou les versions de clé utilisées en suivant ces instructions pour chaque version de clé.
Attendez que la modification prenne effet. La propagation de la désactivation d'une clé peut prendre jusqu'à trois heures.
Pour vérifier que la base de données n'est plus accessible, exécutez une requête dans la base de données CMEK désactivée:
gcloud spanner databases execute-sql DATABASE \ --project=SPANNER_PROJECT_ID \ --instance=INSTANCE_ID \ --sql='SELECT * FROM Users'
Le message d'erreur suivant s'affiche :
KMS key required by the Spanner resource is not accessible.
Activer la clé
Activez les versions de clé utilisées par la base de données en suivant ces instructions pour chaque version de clé.
Attendez que la modification prenne effet. L'activation d'une clé peut prendre jusqu'à trois heures pour se propager.
Pour vérifier que la base de données n'est plus accessible, exécutez une requête dans la base de données compatible avec CMEK:
gcloud spanner databases execute-sql DATABASE \ --project=SPANNER_PROJECT_ID \ --instance=INSTANCE_ID \ --sql='SELECT * FROM Users'
Si le changement a pris effet, la commande s'exécute correctement.
Sauvegarder une base de données
Vous pouvez utiliser les sauvegardes Spanner pour créer des sauvegardes de vos bases de données. Par défaut, les sauvegardes Spanner créées à partir d'une base de données utilisent la même configuration de chiffrement que la base de données elle-même. Vous pouvez éventuellement spécifier une configuration de chiffrement différente pour une sauvegarde.
Console
Utilisez la console pour créer des sauvegardes dans les configurations d'instances régionales.
Dans la console Google Cloud , accédez à la page Instances.
Cliquez sur le nom de l'instance contenant la base de données que vous souhaitez sauvegarder.
Cliquez sur la base de données.
Dans le volet de navigation, cliquez sur Sauvegarder/Restaurer.
Dans l'onglet Sauvegardes, cliquez sur Créer une sauvegarde.
Saisissez un nom de sauvegarde et sélectionnez une date d'expiration.
Facultatif: Cliquez sur Afficher les options de chiffrement.
a. Si vous souhaitez utiliser une configuration de chiffrement différente pour votre sauvegarde, cliquez sur le curseur à côté de Utiliser le chiffrement existant.
a. Sélectionnez Clé Cloud KMS.
a. Sélectionnez une clé dans la liste déroulante.
La liste des clés est limitée au projet Google Cloud actuel. Pour utiliser une clé d'un autre projet Google Cloud , créez la base de données à l'aide de gcloud CLI au lieu de la console Google Cloud .
Cliquez sur Créer.
Le tableau Sauvegardes affiche les informations de chiffrement pour chaque sauvegarde.
gcloud
Pour créer une sauvegarde compatible avec les CMEK dans une configuration d'instance régionale, personnalisée ou multirégionale, exécutez la commande gcloud spanner backups create
:
gcloud spanner backups create BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID \
--database=DATABASE \
--retention-period=RETENTION_PERIOD \
--encryption-type=customer_managed_encryption \
--kms-project=KMS_PROJECT_ID \
--kms-location=KMS_KEY_LOCATION \
--kms-keyring=KMS_KEY_RING \
--kms-keys=KMS_KEY_1[, KMS_KEY_2 ... ]
--async
Pour vérifier que la sauvegarde créée est chiffrée CMEK:
gcloud spanner backups describe BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Bibliothèques clientes
C#
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance multirégionale:
C++
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance multirégionale:
Go
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance multirégionale:
Java
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance multirégionale:
Node.js
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance multirégionale:
PHP
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance multirégionale:
Python
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance multirégionale:
Ruby
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance régionale:
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance multirégionale:
Copier une sauvegarde
Vous pouvez copier une sauvegarde de votre base de données Spanner d'une instance à une autre dans une région ou un projet différents. Par défaut, une sauvegarde copiée utilise la même configuration de chiffrement, gérée par Google ou par le client, que le chiffrement de la sauvegarde source. Vous pouvez ignorer ce comportement en spécifiant une autre configuration de chiffrement lors de la copie de la sauvegarde. Si vous souhaitez que la sauvegarde copiée soit chiffrée avec CMEK lors de la copie entre régions, spécifiez les clés Cloud KMS correspondant aux régions de destination.
Console
Utilisez la console pour copier une sauvegarde dans une configuration d'instance régionale.
Dans la console Google Cloud , accédez à la page Instances.
Cliquez sur le nom de l'instance contenant la base de données que vous souhaitez sauvegarder.
Cliquez sur la base de données.
Dans le volet de navigation, cliquez sur Sauvegarder/Restaurer.
Dans le tableau Sauvegardes, sélectionnez Actions pour votre sauvegarde, puis cliquez sur Copier.
Remplissez le formulaire en choisissant une instance de destination, en fournissant un nom et en sélectionnant une date d'expiration pour la copie de sauvegarde.
Facultatif: Si vous souhaitez utiliser une configuration de chiffrement différente pour votre sauvegarde, cliquez sur Afficher les options de chiffrement.
a. Sélectionnez Clé Cloud KMS.
a. Sélectionnez une clé dans la liste déroulante.
La liste des clés est limitée au projet Google Cloud actuel. Pour utiliser une clé d'un autre projet Google Cloud , créez la base de données à l'aide de gcloud CLI au lieu de la console Google Cloud .
Cliquez sur Copier.
gcloud
Pour copier une sauvegarde, avec une nouvelle configuration de chiffrement, vers une autre instance du même projet, exécutez la commande gcloud spanner backups copy
suivante:
gcloud spanner backups copy --async \
--source-instance=INSTANCE_ID \
--source-backup=SOURCE_BACKUP_NAME \
--destination-instance=DESTINATION_INSTANCE_ID \
--destination-backup=DESTINATION_BACKUP_NAME \
--expiration-date=EXPIRATION_DATE \
--encryption-type=CUSTOMER_MANAGED_ENCRYPTION \
--kms-keys=KMS_KEY_1[, KMS_KEY_2 ... ]
Pour copier une sauvegarde, avec une nouvelle configuration de chiffrement, vers une autre instance dans un autre projet, exécutez la commande gcloud spanner backups copy
suivante:
gcloud spanner backups copy --async \
--source-backup=SOURCE_BACKUP_NAME \
--destination-backup=DESTINATION_BACKUP_NAME \
--encryption-type=CUSTOMER_MANAGED_ENCRYPTION \
--kms-keys=KMS_KEY_1[, KMS_KEY_2 ... ]
Pour vérifier que la sauvegarde copiée est chiffrée par CMEK:
gcloud spanner backups describe BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Bibliothèques clientes
C#
Pour copier une sauvegarde compatible avec les CMEK dans une configuration d'instance multirégionale:
C++
Pour copier une sauvegarde compatible avec les CMEK dans une configuration d'instance multirégionale:
Go
Pour copier une sauvegarde compatible avec CMEK dans une configuration d'instance multirégionale:
Java
Pour copier une sauvegarde compatible avec CMEK dans une configuration d'instance multirégionale:
Node.js
Pour copier une sauvegarde compatible avec CMEK dans une configuration d'instance multirégionale:
PHP
Pour copier une sauvegarde compatible avec les CMEK dans une configuration d'instance multirégionale:
Python
Pour copier une sauvegarde compatible avec CMEK dans une configuration d'instance multirégionale:
Ruby
Pour copier une sauvegarde compatible avec CMEK dans une configuration d'instance multirégionale:
Restaurer à partir d'une sauvegarde
Vous pouvez restaurer une sauvegarde d'une base de données Spanner dans une nouvelle base de données. Par défaut, les bases de données restaurées à partir d'une sauvegarde utilisent la même configuration de chiffrement que la sauvegarde elle-même, mais vous pouvez ignorer ce comportement en spécifiant une configuration de chiffrement différente pour la base de données restaurée. Si la sauvegarde est protégée par CMEK, la version de clé utilisée pour la créer doit être disponible pour qu'elle puisse être déchiffrée.
Console
Utilisez la console pour restaurer une sauvegarde dans une configuration d'instance régionale.
Dans la console Google Cloud , accédez à la page Instances.
Cliquez sur l'instance contenant la base de données que vous souhaitez restaurer.
Cliquez sur la base de données.
Dans le volet de navigation, cliquez sur Sauvegarder/Restaurer.
Dans le tableau Sauvegardes, sélectionnez Actions pour votre sauvegarde, puis cliquez sur Restaurer.
Sélectionnez l'instance à restaurer et nommez la base de données restaurée.
Facultatif: Si vous souhaitez utiliser une configuration de chiffrement différente avec votre base de données restaurée, cliquez sur le curseur à côté de Utiliser le chiffrement existant.
a. Sélectionnez Clé Cloud KMS.
a. Sélectionnez une clé dans la liste déroulante.
La liste des clés est limitée au projet Google Cloud actuel. Pour utiliser une clé d'un autre projet Google Cloud , créez la base de données à l'aide de gcloud CLI au lieu de la console Google Cloud .
Cliquez sur Restaurer.
gcloud
Pour restaurer une sauvegarde avec une nouvelle configuration de chiffrement, exécutez la commande gcloud spanner databases restore
suivante:
gcloud spanner databases restore --async \
--project=SPANNER_PROJECT_ID \
--destination-instance=DESTINATION_INSTANCE_ID \
--destination-database=DESTINATION_DATABASE_ID \
--source-instance=SOURCE_INSTANCE_ID \
--source-backup=SOURCE_BACKUP_NAME
Pour vérifier que la base de données restaurée est chiffrée CMEK:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Pour en savoir plus, consultez la section Restaurer à partir d'une sauvegarde.
Bibliothèques clientes
C#
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance régionale:
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance multirégionale:
C++
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance régionale:
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance multirégionale:
Go
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance régionale:
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance multirégionale:
Java
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance régionale:
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance multirégionale:
Node.js
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance régionale:
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance multirégionale:
PHP
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance régionale:
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance multirégionale:
Python
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance régionale:
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance multirégionale:
Ruby
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance régionale:
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance multirégionale:
Afficher les journaux d'audit de la clé Cloud KMS
Assurez-vous que la journalisation est activée pour l'API Cloud KMS dans votre projet.
Dans la console Google Cloud , accédez à l'explorateur de journaux.
Limitez les entrées de journal à votre clé Cloud KMS en ajoutant les lignes suivantes au générateur de requêtes:
resource.type="cloudkms_cryptokey" resource.labels.location="KMS_KEY_LOCATION" resource.labels.key_ring_id="KMS_KEY_RING_ID" resource.labels.crypto_key_id="KMS_KEY_ID"
En conditions normales, les actions de chiffrement et de déchiffrement sont consignées avec une gravité
INFO
. Ces entrées sont consignées lorsque les zones de votre instance Spanner interrogent la clé Cloud KMS toutes les cinq minutes environ.Si Spanner ne parvient pas à accéder à la clé, les opérations sont consignées en tant que
ERROR
.