Auf dieser Seite wird beschrieben, wie Sie manuell erstellte, vom Kunden verwaltete Verschlüsselungsschlüssel verwenden (CMEK) für Spanner.
Weitere Informationen zu CMEK finden Sie in der Übersicht über vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK).
CMEK-fähige Datenbank erstellen
Erstellen Sie einen Schlüssel im Cloud Key Management Service (Cloud KMS). Spanner unterstützt die Erstellung der folgenden Cloud KMS-Typen:
Der Schlüssel muss sich am selben Speicherort wie der Spanner befinden Instanz. Wenn beispielsweise Ihre Spanner-Instanzkonfiguration befindet sich in
us-west1
, dann ist der Standort Ihres Cloud KMS-Schlüsselbunds muss ebenfallsus-west1
sein.Nicht jede multiregionale Instanzkonfiguration von Spanner hat einen entsprechenden Speicherort für Cloud KMS-Schlüsselbunde. Für Spanner-Datenbanken an benutzerdefiniert, mit zwei oder mehreren Regionen Instanzkonfigurationen können Sie mehrere regionale Cloud KMS-Schlüssel (eine Region) verwenden, zum Schutz Ihrer Datenbank. Beispiel:
- Wenn sich Ihre Spanner-Datenbank in der multiregionalen Instanzkonfiguration
nam14
befindet, können Sie Cloud KMS-Schlüssel inus-east4
,northamerica-northeast1
undus-east1
erstellen. - Wenn sich Ihre Datenbank in einer benutzerdefinierten Instanzkonfiguration befindet, in der
nam3
als Basisinstanzkonfiguration mit einem zusätzlichen schreibgeschützten Replikat inus-central2
verwendet wird, können Sie Cloud KMS-Schlüssel inus-east4
,us-east1
,us-central1
undus-central2
erstellen.
Optional: Mit dem Befehl
gcloud spanner instances get-locations
können Sie eine Liste der Replikationsstandorte in Ihrer Spanner-Instanzkonfiguration aufrufen:gcloud spanner instances get-locations <var>INSTANCE_ID</var>
Weitere Informationen finden Sie in den folgenden Ressourcen:
- Wenn sich Ihre Spanner-Datenbank in der multiregionalen Instanzkonfiguration
Gewähren Sie Spanner Zugriff auf den Schlüssel.
Erstellen und zeigen Sie den Dienst-Agent in Cloud Shell an oder rufen Sie ihn auf Wenn das Konto bereits vorhanden ist:
gcloud beta services identity create --service=spanner.googleapis.com \ --project=PROJECT_ID
Wenn Sie aufgefordert werden, die Komponente gcloud Beta Commands zu installieren, geben Sie
Y
ein. Nach der Installation wird der Befehl automatisch neu gestartet.Mit dem Befehl
gcloud services identity
wird der Dienst-Agent erstellt oder abgerufen, über den Spanner in Ihrem Namen auf den Cloud KMS-Schlüssel zugreifen kann.Die Dienstkonto-ID ist wie eine E-Mail-Adresse formatiert:
Service identity created: service-xxx@gcp-sa-spanner.iam.gserviceaccount.com
Gewähren Sie die Berechtigung Cloud KMS CryptoKey Encrypter/Decrypter(
cloudkms.cryptoKeyEncrypterDecrypter
) Rolle dem Dienstkonto für jede Region (--location
) in Ihrem Spanner-Instanzkonfiguration. Führen Sie dazu den Befehlgcloud kms keys add-iam-policybinding
Befehl: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
Hier ein Beispiel für die Ausgabe:
Updated IAM policy for key [KMS_KEY]
Wenn Sie mehrere Cloud KMS-Schlüssel zum Schutz Ihrer Datenbank verwenden, führen Sie den Befehl
gcloud kms keys add-iam-policybinding
für alle Schlüssel aus.Mit dieser Rolle wird sichergestellt, dass das Dienstkonto Daten mit dem Cloud KMS-Schlüssel verschlüsseln und entschlüsseln Weitere Informationen finden Sie unter Cloud KMS-Berechtigungen und ‑Rollen.
Erstellen Sie die Datenbank und geben Sie Ihren Cloud KMS-Schlüssel an.
Console
Verwenden Sie die Console, um Datenbanken in regionalen Instanzkonfigurationen zu erstellen.
Rufen Sie in der Google Cloud Console die Seite Instanzen auf.
Klicken Sie auf die Instanz, in der Sie eine Datenbank erstellen möchten.
Klicken Sie auf Datenbank erstellen und füllen Sie die Pflichtfelder aus.
Klicken Sie auf Verschlüsselungsoptionen anzeigen.
Wählen Sie Cloud KMS-Schlüssel aus.
Wählen Sie einen Schlüssel aus der Drop-down-Liste aus.
Die Liste der Schlüssel ist auf das aktuelle Google Cloud-Projekt beschränkt. Wenn Sie einen Schlüssel aus einem anderen Google Cloud-Projekt verwenden möchten, erstellen Sie die Datenbank mit der gcloud CLI anstelle der Google Cloud Console.
Sobald die Datenbank erstellt ist, können Sie prüfen, ob sie Für CMEK aktiviert. Rufen Sie dazu die Seite Datenbankübersicht auf.
gcloud
Wenn Sie eine CMEK-kompatible Datenbank in einer regionalen, benutzerdefinierten oder multiregionalen Instanzkonfiguration erstellen möchten, führen Sie den Befehl gcloud spanner databases create
aus:
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 ... ]
Führen Sie den Befehl gcloud spanner databases describe
aus, um zu prüfen, ob für eine Datenbank CMEK aktiviert ist:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
CMEK-fähige Datenbanken enthalten ein Feld für encryptionConfig
, wie in der folgenden Beispielausgabe zu sehen:
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
Clientbibliotheken
C#
So erstellen Sie eine CMEK-fähige Datenbank in einer regionalen Instanzkonfiguration:
C++
So erstellen Sie eine CMEK-fähige Datenbank in einer regionalen Instanzkonfiguration:
Go
So erstellen Sie eine CMEK-fähige Datenbank in einer regionalen Instanzkonfiguration:
Java
So erstellen Sie eine CMEK-fähige Datenbank in einer regionalen Instanzkonfiguration:
Node.js
So erstellen Sie eine CMEK-fähige Datenbank in einer regionalen Instanzkonfiguration:
PHP
So erstellen Sie eine CMEK-fähige Datenbank in einer regionalen Instanzkonfiguration:
Python
So erstellen Sie eine CMEK-fähige Datenbank in einer regionalen Instanzkonfiguration:
Ruby
So erstellen Sie eine CMEK-fähige Datenbank in einer regionalen Instanzkonfiguration:
Verwendete Schlüsselversionen ansehen
Das Feld encryption_info
der Datenbank enthält Informationen zu Schlüsselversionen.
Wenn sich die Schlüsselversion einer Datenbank ändert, wird die Änderung nicht sofort weitergegeben
an encryption_info
. Es kann etwas dauern, bis die Änderung in diesem Feld übernommen wird.
Console
Rufen Sie in der Google Cloud Console die Seite Instanzen auf.
Klicken Sie auf die Instanz, die die Datenbank enthält, die Sie aufrufen möchten.
Klicken Sie auf die Datenbank.
Verschlüsselungsinformationen werden auf der Seite Datenbankdetails angezeigt.
gcloud
Sie können den encryption_info
einer Datenbank mit dem Befehl gcloud spanner databases describe
oder gcloud spanner databases list
abrufen. Beispiel:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Hier ein Beispiel für die Ausgabe:
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
Schlüssel deaktivieren
Deaktivieren Sie die verwendeten Schlüsselversionen. Folgen Sie dazu dieser Anleitung für jede Schlüsselversion.
Warten Sie, bis die Änderung wirksam wird. Es kann bis zu drei Stunden dauern, bis die Deaktivierung eines Schlüssels wirksam wird.
Um zu bestätigen, dass die Datenbank nicht mehr zugänglich ist, führen Sie eine Abfrage in der CMEK-deaktivierten Datenbank:
gcloud spanner databases execute-sql DATABASE \ --project=SPANNER_PROJECT_ID \ --instance=INSTANCE_ID \ --sql='SELECT * FROM Users'
Die folgende Fehlermeldung wird angezeigt:
KMS key required by the Spanner resource is not accessible.
Schlüssel aktivieren
Aktivieren Sie die Schlüsselversionen, die von der Datenbank verwendet werden. Folgen Sie dazu dieser Anleitung für jede Schlüsselversion.
Warten Sie, bis die Änderung wirksam wird. Es kann bis zu drei Stunden dauern, bis die Aktivierung eines Schlüssels wirksam wird.
Führen Sie eine Abfrage in der CMEK-fähigen Datenbank aus, um zu prüfen, ob kein Zugriff mehr möglich ist:
gcloud spanner databases execute-sql DATABASE \ --project=SPANNER_PROJECT_ID \ --instance=INSTANCE_ID \ --sql='SELECT * FROM Users'
Wenn die Änderung wirksam wurde, wird der Befehl erfolgreich ausgeführt.
Datenbank sichern
Sie können Spanner-Sicherungen verwenden, um Sicherungen Ihrer Datenbanken zu erstellen. Standardmäßig werden Spanner-Sicherungen erstellt aus einer Datenbank die gleiche Verschlüsselungskonfiguration verwenden wie die Datenbank selbst. Optional können Sie einen anderen Verschlüsselungskonfiguration für eine Sicherung.
Console
Verwenden Sie die Console, um Sicherungen in regionalen Instanzkonfigurationen zu erstellen.
Rufen Sie in der Google Cloud Console die Seite Instanzen auf.
Klicken Sie auf den Namen der Instanz, die die Datenbank enthält, die Sie sichern möchten.
Klicken Sie auf die Datenbank.
Klicken Sie im Navigationsbereich auf Backup/Wiederherstellung.
Klicken Sie auf dem Tab Sicherungen auf Sicherung erstellen.
Geben Sie einen Namen für die Sicherung ein und wählen Sie ein Ablaufdatum aus.
Optional: Klicken Sie auf Verschlüsselungsoptionen einblenden.
a. Wenn Sie eine andere Verschlüsselungskonfiguration für die Sicherung verwenden möchten, klicken Sie auf den Schieberegler neben Vorhandene Verschlüsselung verwenden.
a. Wählen Sie Cloud KMS-Schlüssel aus.
a. Wählen Sie einen Schlüssel aus der Drop-down-Liste aus.
Die Liste der Schlüssel ist auf das aktuelle Google Cloud-Projekt beschränkt. Wenn Sie einen Schlüssel aus einem anderen Google Cloud-Projekt verwenden möchten, erstellen Sie den mit der gcloud CLI anstelle der Google Cloud Console
Klicken Sie auf Erstellen.
Die Tabelle Sicherungen enthält Verschlüsselungsinformationen für jede Sicherung.
gcloud
Wenn Sie eine CMEK-fähige Sicherung in einer regionalen, benutzerdefinierten oder multiregionalen Instanzkonfiguration erstellen möchten, führen Sie den Befehl gcloud spanner backups create
aus:
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
So prüfen Sie, ob die erstellte Sicherung CMEK-verschlüsselt ist:
gcloud spanner backups describe BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Clientbibliotheken
C#
So erstellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration:
C++
So erstellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration:
Go
So erstellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration:
Java
So erstellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration:
Node.js
So erstellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration:
PHP
So erstellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration:
Python
So erstellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration:
Ruby
So erstellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration:
Sicherung kopieren
Sie können eine Sicherung Ihrer Spanner-Datenbank von einer Instanz in eine andere Instanz in einer anderen Region oder einem anderen Projekt kopieren. Standardmäßig wird für eine kopierte Sicherung Verschlüsselungskonfiguration, entweder von Google oder vom Kunden verwaltet, die Verschlüsselung des Quell-Backups. Sie können dieses Verhalten überschreiben, indem Sie eine Verschlüsselungskonfiguration beim Kopieren der Sicherung ändern. Wenn Sie möchten, dass die kopierte Sicherung, die beim regionenübergreifenden Kopieren mit CMEK verschlüsselt werden soll, geben Sie die Cloud KMS-Schlüssel, die den Zielregionen entsprechen.
Console
Mit der Console können Sie eine Sicherung in einer regionalen Instanzkonfiguration kopieren.
Rufen Sie in der Google Cloud Console die Seite Instanzen auf.
Klicken Sie auf den Namen der Instanz, die die Datenbank enthält, die Sie sichern möchten.
Klicken Sie auf die Datenbank.
Klicken Sie im Navigationsbereich auf Backup/Wiederherstellung.
Wählen Sie in der Tabelle Sicherungen die Option Aktionen für die Sicherung aus und klicken Sie auf Kopieren.
Wählen Sie eine Zielinstanz aus, geben Sie einen Namen ein und wählen Sie ein Ablaufdatum für die Sicherungskopie aus.
Optional: Wenn Sie für die Sicherung eine andere Verschlüsselungskonfiguration verwenden möchten, klicken Sie auf Verschlüsselungsoptionen anzeigen.
a. Wählen Sie Cloud KMS-Schlüssel aus.
a. Wählen Sie einen Schlüssel aus der Drop-down-Liste aus.
Die Liste der Schlüssel ist auf das aktuelle Google Cloud-Projekt beschränkt. Wenn Sie einen Schlüssel aus einem anderen Google Cloud-Projekt verwenden möchten, erstellen Sie den mit der gcloud CLI anstelle der Google Cloud Console
Klicken Sie auf Kopieren.
gcloud
So kopieren Sie eine Sicherung mit einer neuen Verschlüsselungskonfiguration in eine andere Instanz
im selben Projekt führen Sie den folgenden gcloud spanner backups copy
aus.
Befehl:
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 ... ]
So kopieren Sie eine Sicherung mit einer neuen Verschlüsselungskonfiguration in eine andere Instanz
in einem anderen Projekt führen Sie den folgenden gcloud spanner backups copy
aus.
Befehl:
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 ... ]
So prüfen Sie, ob die kopierte Sicherung CMEK-verschlüsselt ist:
gcloud spanner backups describe BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Aus einer Sicherung wiederherstellen
Sie können eine Sicherung einer Spanner-Datenbank in einer neuen Datenbank wiederherstellen. Standardmäßig verwenden Datenbanken, die aus einer Sicherung wiederhergestellt werden, dieselbe Verschlüsselungskonfiguration wie die Sicherung selbst. Sie können dieses Verhalten jedoch überschreiben, indem Sie eine andere Verschlüsselungskonfiguration für die wiederhergestellte Datenbank angeben. Wenn die Sicherung durch CMEK geschützt ist, muss die Schlüsselversion, die zum Erstellen der Sicherung verwendet wurde, verfügbar sein, damit sie entschlüsselt werden kann.
Console
Verwenden Sie die Konsole, um eine Sicherung in einer regionalen Instanzkonfiguration wiederherzustellen.
Rufen Sie in der Google Cloud Console die Seite Instanzen auf.
Klicken Sie auf die Instanz, die die Datenbank enthält, die Sie wiederherstellen möchten.
Klicken Sie auf die Datenbank.
Klicken Sie im Navigationsbereich auf Backup/Wiederherstellung.
Wählen Sie in der Tabelle Sicherungen die Option Aktionen für Ihre Sicherung aus und klicken Sie auf Wiederherstellen.
Wählen Sie die wiederherzustellende Instanz aus und benennen Sie die wiederhergestellte Datenbank.
Optional: Wenn Sie für die wiederhergestellte Datenbank eine andere Verschlüsselungskonfiguration verwenden möchten, klicken Sie auf den Schieberegler neben Vorhandene Verschlüsselung verwenden.
a. Wählen Sie Cloud KMS-Schlüssel aus.
a. Wählen Sie einen Schlüssel aus der Drop-down-Liste aus.
Die Liste der Schlüssel ist auf das aktuelle Google Cloud-Projekt beschränkt. Wenn Sie einen Schlüssel aus einem anderen Google Cloud-Projekt verwenden möchten, erstellen Sie den mit der gcloud CLI anstelle der Google Cloud Console
Klicken Sie auf Wiederherstellen.
gcloud
Führen Sie folgenden Befehl aus, um eine Sicherung mit einer neuen Verschlüsselungskonfiguration wiederherzustellen
gcloud spanner databases restore
Befehl:
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
So prüfen Sie, ob die wiederhergestellte Datenbank CMEK-verschlüsselt ist:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Weitere Informationen finden Sie unter Aus einer Sicherung wiederherstellen.
Clientbibliotheken
C#
So stellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration wieder her:
C++
So stellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration wieder her:
Go
So stellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration wieder her:
Java
So stellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration wieder her:
Node.js
So stellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration wieder her:
PHP
So stellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration wieder her:
Python
So stellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration wieder her:
Ruby
So stellen Sie eine CMEK-fähige Sicherung in einer regionalen Instanzkonfiguration wieder her:
Audit-Logs für den Cloud KMS-Schlüssel ansehen
Stellen Sie sicher, dass Logging ist aktiviert für die Cloud KMS API in Ihrem Projekt.
Öffnen Sie in der Google Cloud Console den Log-Explorer.
Beschränken Sie die Logeinträge auf Ihren Cloud KMS-Schlüssel, indem Sie dem Query Builder die folgenden Zeilen hinzufügen:
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"
Im Normalbetrieb werden Verschlüsselungs- und Entschlüsselungsaktionen mit
INFO
protokolliert. Schweregrad. Diese Einträge werden als Zonen in Ihrem die Spanner-Instanz den Cloud KMS-Schlüssel fünf Minuten.Wenn Spanner nicht auf den Schlüssel zugreifen kann, werden die Vorgänge als
ERROR
protokolliert.