Cette page explique comment utiliser des clés de chiffrement gérées par le client créées manuellement (CMEK) 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 Compute Engine. Par exemple, si la configuration de votre instance Spanner se trouve dans
us-west1
, puis 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 l'instance multirégionale
configuration
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 l'instance multirégionale
configuration
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 les commandes gcloud bêta , 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
Attribuez le rôle de chiffreur/déchiffreur de CryptoKeys Cloud KMS(
cloudkms.cryptoKeyEncrypterDecrypter
). au compte de service pour chaque région (--location
) de votre Configuration de l'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 des données à l'aide de 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'instance 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 et renseignez 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 le à l'aide de gcloud CLI au lieu console Google Cloud.
Une fois la base de données créée, vous pouvez vérifier qu'elle est Clé CMEK activée via 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 les CMEK, exécutez la
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 :
C++
Pour créer une base de données activée par CMEK dans une configuration d'instance régionale:
Go
Pour créer une base de données activée par CMEK dans une configuration d'instance régionale:
Java
Pour créer une base de données compatible avec CMEK dans une configuration d'instance régionale :
Node.js
Pour créer une base de données activée par CMEK dans une configuration d'instance régionale:
PHP
Pour créer une base de données activée par CMEK dans une configuration d'instance régionale:
Python
Pour créer une base de données compatible avec CMEK dans une configuration d'instance régionale :
Ruby
Pour créer une base de données activée par CMEK dans une configuration d'instance ré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 désactivation d'une clé peut prendre jusqu'à trois heures pour être propagées.
Pour confirmer que la base de données n'est plus accessible, exécutez une requête dans la base de données désactivée par CMEK:
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 clé version.
Attendez que la modification prenne effet. La propagation de l'activation d'une clé peut prendre jusqu'à trois heures.
Pour confirmer que la base de données n'est plus accessible, exécutez une requête dans la base de données sur laquelle les CMEK sont activés:
gcloud spanner databases execute-sql DATABASE \ --project=SPANNER_PROJECT_ID \ --instance=INSTANCE_ID \ --sql='SELECT * FROM Users'
Si la modification a été prise en compte, la commande s'exécute correctement.
Sauvegarder une base de données
Les sauvegardes Spanner vous permettent de 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 plutôt que de la console Google Cloud.
Cliquez sur Créer.
Le tableau Sauvegardes affiche les informations de chiffrement pour chaque sauvegarde.
gcloud
Créer une sauvegarde pour laquelle les CMEK sont activés dans un emplacement régional, personnalisé ou multirégional
configuration d'instance, 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 activée par CMEK dans une configuration d'instance régionale:
C++
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance régionale :
Go
Pour créer une sauvegarde activée par CMEK dans une configuration d'instance régionale:
Java
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance régionale :
Node.js
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance régionale :
PHP
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance régionale :
Python
Pour créer une sauvegarde compatible avec CMEK dans une configuration d'instance régionale :
Ruby
Pour créer une sauvegarde activée par CMEK dans une configuration d'instance régionale:
Copier une sauvegarde
Vous pouvez copier une sauvegarde de votre base de données Spanner d'une instance à une autre une autre région ou un autre projet. Par défaut, une sauvegarde copiée utilise la même de chiffrement (gérée par Google ou par le client) 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 pour qu'elle soit chiffrée avec une clé CMEK lors d'une copie entre régions, spécifiez 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 indiquant 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 en cours. Pour utiliser une clé d'un autre projet Google Cloud, créez le à l'aide de gcloud CLI au lieu 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
Restaurer à partir d'une sauvegarde
Vous pouvez restaurer une sauvegarde d'un Spanner dans une nouvelle base de données. Par défaut, les bases de données qui sont restaurés à 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 une clé CMEK, la version de clé utilisée pour créer la sauvegarde doit être disponibles afin de pouvoir être déchiffrées.
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 restaurée, cliquez sur le curseur à côté de Use existing encryption (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 le à l'aide de gcloud CLI au lieu 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 par 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 :
C++
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance régionale :
Go
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance régionale :
Java
Pour restaurer une sauvegarde activée par CMEK dans une configuration d'instance régionale:
Node.js
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance régionale :
PHP
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance régionale :
Python
Pour restaurer une sauvegarde avec CMEK activé dans une configuration d'instance régionale :
Ruby
Pour restaurer une sauvegarde activée par CMEK dans une configuration d'instance régionale:
Afficher les journaux d'audit pour 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 mode normal, les actions de chiffrement et de déchiffrement sont consignées avec
INFO
. et leur gravité. 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
.