Questa pagina descrive come utilizzare le chiavi di crittografia gestite dal cliente (CMEK) create manualmente per Spanner.
Per scoprire di più su CMEK, consulta le Panoramica delle chiavi di crittografia gestite dal cliente (CMEK).
Crea un database abilitato per CMEK
Crea una chiave in Cloud Key Management Service (Cloud KMS). Spanner supporta la creazione dei seguenti tipi di Cloud KMS:
La chiave deve trovarsi nella stessa posizione di Spanner in esecuzione in un'istanza Compute Engine. Ad esempio, se la configurazione dell'istanza Spanner si trova in
us-west1
, la località del keyring di Cloud KMS deve anche essereus-west1
.Non tutte le configurazioni di istanze multiregionali di Spanner hanno una posizione del mazzo di chiavi Cloud KMS corrispondente. Per Database Spanner in opzioni personalizzate, a due regioni o a più regioni configurazioni di istanza, puoi utilizzare più chiavi Cloud KMS a livello di regione (una singola regione) e proteggere il database. Ad esempio:
- Se il database Spanner si trova nella configurazione dell'istanza multiregione
nam14
, puoi creare chiavi Cloud KMS inus-east4
,northamerica-northeast1
eus-east1
. - Se il database si trova in una configurazione dell'istanza personalizzata che utilizza
nam3
come configurazione dell'istanza di base con un'ulteriore replica di sola lettura inus-central2
, puoi creare chiavi Cloud KMS inus-east4
,us-east1
,us-central1
eus-central2
.
(Facoltativo) Per visualizzare un elenco delle località delle repliche nel tuo configurazione dell'istanza Spanner, utilizza
gcloud spanner instances get-locations
:gcloud spanner instances get-locations <var>INSTANCE_ID</var>
Per maggiori informazioni, consulta le seguenti risorse:
- Se il database Spanner si trova nella configurazione dell'istanza multiregione
Concedi a Spanner l'accesso alla chiave.
In Cloud Shell, crea e visualizza l'agente di servizio oppure visualizzalo se l'account esiste già:
gcloud beta services identity create --service=spanner.googleapis.com \ --project=PROJECT_ID
Se ti viene chiesto di installare il componente Comandi gcloud beta, digita
Y
. Dopo l'installazione, il comando viene automaticamente è stata riavviata.La
gcloud services identity
crea o ottiene agente di servizio che Spanner può usare per accedere alla chiave Cloud KMS per conto tuo.Il formato dell'ID account di servizio è simile a quello di un indirizzo email:
Service identity created: service-xxx@gcp-sa-spanner.iam.gserviceaccount.com
Concedi l'autorizzazione Autore crittografia/decrittografia CryptoKey Cloud KMS(
cloudkms.cryptoKeyEncrypterDecrypter
) all'account di servizio per ogni regione (--location
) nel tuo Configurazione dell'istanza Spanner. Per farlo, esegui il comandogcloud 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
Ecco un output di esempio:
Updated IAM policy for key [KMS_KEY]
Se utilizzi più chiavi Cloud KMS per proteggere il tuo database, esegui il comando
gcloud kms keys add-iam-policybinding
per tutte le chiavi.Questo ruolo garantisce che l'account di servizio abbia l'autorizzazione per criptare e decriptare con la chiave Cloud KMS. Per ulteriori informazioni, consulta Autorizzazioni e ruoli Cloud KMS.
Crea il database e specifica la chiave Cloud KMS.
Console
Utilizza la console per creare database nelle configurazioni di istanze a livello di regione.
Nella console Google Cloud, vai alla pagina Istanze.
Fai clic sull'istanza in cui vuoi creare un database.
Fai clic su Crea database e compila i campi obbligatori.
Fai clic su Mostra opzioni di crittografia.
Seleziona Chiave Cloud KMS.
Seleziona una chiave dall'elenco a discesa.
L'elenco delle chiavi è limitato al progetto Google Cloud corrente. Per utilizzare una chiave di un altro progetto Google Cloud, crea la classe utilizzando gcloud CLI anziché nella console Google Cloud.
Dopo aver creato il database, puoi verificare che sia abilitata per CMEK visualizzando la pagina Panoramica del database.
gcloud
Per creare un database compatibile con CMEK in una configurazione di istanze regionale, personalizzata o multiregionale, esegui il comando 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 ... ]
Per verificare che un database sia abilitato per CMEK, esegui il
gcloud spanner databases describe
:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
I database abilitati per CMEK includono un campo per encryptionConfig
, come mostrato nell'esempio di output che segue:
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
Librerie client
C#
Per creare un database abilitato per CMEK in una configurazione di istanza a livello di regione:
C++
Per creare un database compatibile con CMEK in una configurazione dell'istanza a livello di regione:
Vai
Per creare un database compatibile con CMEK in una configurazione dell'istanza a livello di regione:
Java
Per creare un database compatibile con CMEK in una configurazione dell'istanza a livello di regione:
Node.js
Per creare un database compatibile con CMEK in una configurazione dell'istanza a livello di regione:
PHP
Per creare un database compatibile con CMEK in una configurazione dell'istanza a livello di regione:
Python
Per creare un database compatibile con CMEK in una configurazione dell'istanza a livello di regione:
Ruby
Per creare un database compatibile con CMEK in una configurazione dell'istanza a livello di regione:
Visualizzare le versioni delle chiavi in uso
Il campo encryption_info
del database
mostra informazioni sulle versioni della chiave.
Quando la versione della chiave di un database cambia, la modifica non viene propagata immediatamente
a encryption_info
. Potrebbe essere necessario un po' di tempo prima che la modifica venga applicata in questo campo.
Console
Nella console Google Cloud, vai alla pagina Istanze.
Fai clic sull'istanza contenente il database da visualizzare.
Fai clic sul database.
Le informazioni sulla crittografia vengono visualizzate nella pagina Dettagli del database.
gcloud
Puoi ottenere il encryption_info
di un database eseguendo il comando
gcloud spanner databases describe
o gcloud spanner databases list
. Ad esempio:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Ecco un esempio di output:
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
Disattiva la chiave
Disabilita le versioni della chiave in uso seguendo questa procedura: queste istruzioni per ogni versione della chiave.
Attendi che la modifica venga applicata. La disattivazione di una chiave può richiedere fino a tre ore per la propagazione.
Per confermare che il database non è più accessibile, esegui una query in il database disabilitato da CMEK:
gcloud spanner databases execute-sql DATABASE \ --project=SPANNER_PROJECT_ID \ --instance=INSTANCE_ID \ --sql='SELECT * FROM Users'
Viene visualizzato il seguente messaggio di errore:
KMS key required by the Spanner resource is not accessible.
Attiva la chiave
Abilita le versioni della chiave utilizzate dal database seguendo queste istruzioni per ogni chiave completamente gestita.
Attendi che la modifica venga applicata. L'attivazione di una chiave può richiedere fino a tre ore per la propagazione.
Per verificare che il database non sia più accessibile, esegui una query nel database abilitato a CMEK:
gcloud spanner databases execute-sql DATABASE \ --project=SPANNER_PROJECT_ID \ --instance=INSTANCE_ID \ --sql='SELECT * FROM Users'
Se la modifica è stata applicata, il comando viene eseguito correttamente.
Eseguire il backup di un database
Puoi utilizzare i backup di Spanner per creare backup dei tuoi database. Per impostazione predefinita, i backup di Spanner creati da un database utilizzano la stessa configurazione di crittografia del database stesso. Facoltativamente, puoi specificare un valore la configurazione della crittografia per un backup.
Console
Utilizza la console per creare backup nelle configurazioni di istanze a livello di regione.
Nella console Google Cloud, vai alla pagina Istanze.
Fai clic sul nome dell'istanza contenente il database di cui vuoi eseguire il backup.
Fai clic sul database.
Nel riquadro di navigazione, fai clic su Backup/Ripristino.
Nella scheda Backup, fai clic su Crea backup.
Inserisci un nome per il backup e seleziona una data di scadenza.
(Facoltativo) Fai clic su Mostra opzioni di crittografia.
a. Se vuoi utilizzare una configurazione di crittografia diversa per il backup, fai clic sul cursore accanto a Usa crittografia esistente.
a. Seleziona Chiave Cloud KMS.
a. Seleziona una chiave dall'elenco a discesa.
L'elenco delle chiavi è limitato al progetto Google Cloud attuale. Per utilizzare una chiave di un altro progetto Google Cloud, crea il database utilizzando gcloud CLI anziché la console Google Cloud.
Fai clic su Crea.
La tabella Backup mostra le informazioni sulla crittografia per ogni backup.
gcloud
Per creare un backup abilitato per CMEK in una singola regione, personalizzata o in più regioni
configurazione dell'istanza, esegui 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
Per verificare che il backup creato sia criptato con CMEK:
gcloud spanner backups describe BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Librerie client
C#
Per creare un backup abilitato per CMEK in una configurazione di istanza a livello di regione:
C++
Per creare un backup abilitato per CMEK in una configurazione di istanze a livello di regione:
Vai
Per creare un backup abilitato per CMEK in una configurazione di istanze a livello di regione:
Java
Per creare un backup abilitato per CMEK in una configurazione di istanza a livello di regione:
Node.js
Per creare un backup abilitato per CMEK in una configurazione di istanze a livello di regione:
PHP
Per creare un backup abilitato per CMEK in una configurazione di istanza a livello di regione:
Python
Per creare un backup abilitato per CMEK in una configurazione di istanza a livello di regione:
Ruby
Per creare un backup abilitato per CMEK in una configurazione di istanza a livello di regione:
Copiare un backup
Puoi copiare un backup del tuo database Spanner da un'istanza a un'altra in una regione o un progetto diverso. Per impostazione predefinita, un backup copiato utilizza la stessa configurazione di crittografia, gestita da Google o dal cliente, della crittografia del backup di origine. Puoi ignorare questo comportamento specificando un configurazione di crittografia diversa durante la copia del backup. Se desideri il backup copiato per essere criptato con CMEK durante la copia tra regioni, specifica Chiavi Cloud KMS corrispondenti alle regioni di destinazione.
Console
Utilizza la console per copiare un backup nella configurazione di un'istanza a livello di regione.
Nella console Google Cloud, vai alla pagina Istanze.
Fai clic sul nome dell'istanza che contiene il database di cui vuoi eseguire il backup.
Fai clic sul database.
Nel riquadro di navigazione, fai clic su Backup/Ripristino.
Nella tabella Backup, seleziona Azioni per il backup e fai clic su Copia:
Compila il modulo scegliendo un'istanza di destinazione, fornendo un nome e selezionando una data di scadenza per la copia di backup.
(Facoltativo) Se vuoi utilizzare una configurazione di crittografia diversa per Fai clic su Mostra opzioni di crittografia.
a. Seleziona Chiave Cloud KMS.
a. Seleziona una chiave dall'elenco a discesa.
L'elenco delle chiavi è limitato al progetto Google Cloud attuale. Per utilizzare una chiave di un altro progetto Google Cloud, crea il database utilizzando gcloud CLI anziché la console Google Cloud.
Fai clic su Copia.
gcloud
Per copiare un backup, con una nuova configurazione di crittografia, in un'istanza diversa nello stesso progetto, esegui il seguente comando gcloud spanner backups copy
:
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 ... ]
Per copiare un backup, con una nuova configurazione di crittografia, in un'istanza diversa
in un altro progetto, esegui questo comando gcloud spanner backups copy
:
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 ... ]
Per verificare che il backup copiato sia criptato con CMEK:
gcloud spanner backups describe BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Ripristina da un backup
Puoi ripristinare un backup di un database Spanner in un nuovo database. Per impostazione predefinita, i database vengono ripristinati da un backup utilizzando la stessa configurazione di crittografia. come backup, ma puoi evitare questo comportamento specificando un configurazione di crittografia diversa per il database ripristinato. Se il backup è protetta da CMEK, la versione della chiave utilizzata per creare il backup deve essere disponibile per poter essere decriptati.
Console
Utilizza la console per ripristinare un backup nella configurazione di un'istanza a livello di regione.
Nella console Google Cloud, vai alla pagina Istanze.
Fai clic sull'istanza contenente il database da ripristinare.
Fai clic sul database.
Nel riquadro di navigazione, fai clic su Backup/Ripristino.
Nella tabella Backup, seleziona Azioni per il backup e fai clic su Ripristina.
Seleziona l'istanza da ripristinare e assegna un nome al database ripristinato.
(Facoltativo) Se vuoi utilizzare una configurazione di crittografia diversa con il tuo ripristinato, fai clic sul cursore accanto a Utilizza crittografia esistente.
a. Seleziona Chiave Cloud KMS.
a. Seleziona una chiave dall'elenco a discesa.
L'elenco delle chiavi è limitato al progetto Google Cloud attuale. Per utilizzare una chiave di un altro progetto Google Cloud, crea il database utilizzando gcloud CLI anziché la console Google Cloud.
Fai clic su Ripristina.
gcloud
Per ripristinare un backup, con una nuova configurazione di crittografia, esegui questo comando:
gcloud spanner databases restore
:
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
Per verificare che il database ripristinato sia criptato con CMEK:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Per ulteriori informazioni, vedi Ripristinare da un backup.
Librerie client
C#
Per ripristinare un backup abilitato per CMEK in una configurazione di istanza a livello di regione:
C++
Per ripristinare un backup abilitato per CMEK in una configurazione di istanze a livello di regione:
Vai
Per ripristinare un backup abilitato per CMEK in una configurazione di istanze a livello di regione:
Java
Per ripristinare un backup abilitato per CMEK in una configurazione di istanze a livello di regione:
Node.js
Per ripristinare un backup abilitato per CMEK in una configurazione di istanza a livello di regione:
PHP
Per ripristinare un backup abilitato per CMEK in una configurazione di istanze a livello di regione:
Python
Per ripristinare un backup abilitato per CMEK in una configurazione di istanza a livello di regione:
Ruby
Per ripristinare un backup abilitato per CMEK in una configurazione di istanze a livello di regione:
Visualizza audit log per la chiave Cloud KMS
Accertati che la registrazione è abilitata per l'API Cloud KMS nel tuo progetto.
Nella console Google Cloud, vai a Esplora log.
Limita le voci di log alla tua chiave Cloud KMS aggiungendo le seguenti linee al Query Builder:
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"
In base alle normali operazioni, le azioni di crittografia e decriptazione vengono registrate con
INFO
gravità. Queste voci vengono registrate come zone L'istanza Spanner esegue il polling della chiave Cloud KMS circa ogni cinque minuti.Se Spanner non riesce ad accedere alla chiave, le operazioni vengono registrate come
ERROR
.