Auf dieser Seite wird beschrieben, wie Sie ein Dienstkonto und Schlüssel für vom Kunden verwaltete Verschlüsselungsschlüssel einrichten und wie Sie eine Instanz mit einem manuell erstellten vom Kunden verwalteten Verschlüsselungsschlüssel erstellen. Weitere Informationen zur Verwendung von vom Kunden verwalteten Verschlüsselungsschlüsseln mit Cloud SQL finden Sie unter Von Kunden verwaltete Verschlüsselungsschlüssel – Übersicht.
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Sie müssen die Rolle "Cloud SQL-Administrator" in Ihrem Nutzerkonto haben.
-
Enable the Cloud Key Management Service API.
-
Enable the Cloud SQL Admin API.
Workflow zum Erstellen einer Cloud SQL-Instanz mit CMEK
- Nur gcloud- und API-Nutzer: Erstellen Sie ein Dienstkonto für jedes Projekt, für das vom Kunden verwaltete Verschlüsselungsschlüssel erforderlich sind.
- Erstellen Sie einen Schlüsselbund und Schlüssel und legen Sie den Speicherort für jeden Schlüssel fest. Der Speicherort ist die Google Cloud-Region.
- Nur gcloud- und API-Nutzer: Gewähren Sie dem Dienstkonto Zugriff auf den Schlüssel.
- Notieren Sie sich die Schlüssel-ID (KMS_KEY_ID), den Speicherort des Schlüssels (GCP_REGION) und die Schlüsselbund-ID (KMS_KEYRING_ID)
- Öffnen Sie ein Projekt und erstellen Sie eine Cloud SQL-Instanz mit den folgenden Optionen:
- Derselbe Speicherort wie der vom Kunden verwaltete Verschlüsselungsschlüssel
- Die vom Kunden verwaltete Schlüsselkonfiguration
- Die vom Kunden verwaltete Verschlüsselungsschlüssel-ID
Ihre Cloud SQL-Instanz ist jetzt mit CMEK aktiviert.
Dienstkonto erstellen
Sie müssen für jedes Projekt ein Dienstkonto erstellen, das vom Kunden verwaltete Verschlüsselungsschlüssel erfordert.
Gewähren Sie eine der folgenden Rollen, um zuzulassen, dass ein Nutzer Dienstkonten verwalten kann:
- Dienstkontonutzer (
roles/iam.serviceAccountUser
): Umfasst Berechtigungen zum Auflisten von Dienstkonten, Abrufen von Details zu einem Dienstkonto und zum Übernehmen der Identität eines Dienstkontos. - Dienstkontoadministrator (
roles/iam.serviceAccountAdmin
): Umfasst Berechtigungen zum Auflisten von Dienstkonten und zum Abrufen von Details zu einem Dienstkonto. Umfasst außerdem Berechtigungen zum Erstellen, Aktualisieren und Löschen von Dienstkonten sowie zum Ansehen oder Ändern der Cloud SQL for MySQL-Richtlinie für ein Dienstkonto.
Derzeit können Sie mit den gcloud CLI-Befehlen nur die Art von Dienstkonto erstellen, die Sie für vom Kunden verwaltete Verschlüsselungsschlüssel benötigen. Wenn Sie die Console nutzen, legt Cloud SQL dieses Dienstkonto automatisch an.
gcloud
gcloud beta services identity create \ --service=sqladmin.googleapis.com \ --project=PROJECT_ID
Terraform
Verwenden Sie zum Erstellen eines Dienstkontos eine Terraform-Ressource.
Änderungen anwenden
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud-Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud-Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
Der vorherige Befehl gibt den Namen eines Dienstkontos zurück. Sie verwenden diesen Dienstkontonamen, während Sie dem Dienstkonto Zugriff auf den Schlüssel gewähren.
Schlüssel erstellen
Sie können den Schlüssel im selben Google Cloud-Projekt wie die Cloud SQL-Instanz oder in einem separaten Nutzerprojekt erstellen. Der Speicherort des Cloud KMS-Schlüsselbunds muss in der Region sein, in der Sie die Cloud SQL-Instanz anlegen möchten. Ein Schlüssel für mehrere Regionen oder für eine globale Region funktioniert nicht. Die Erstellungsanfrage der Cloud SQL-Instanz schlägt fehl, wenn die Regionen nicht übereinstimmen.
So erstellen Sie einen Cloud KMS-Schlüssel:
Console
-
Rufen Sie in der Google Cloud Console die Seite Schlüsselverwaltung auf.
- Klicken Sie auf Schlüsselbund erstellen.
- Fügen Sie einen Schlüsselbundnamen hinzu. Notieren Sie sich diesen Namen, da Sie ihn benötigen, wenn Sie dem Dienstkonto Zugriff auf den Schlüssel gewähren.
- Fügen Sie einen Schlüsselbund-Speicherort hinzu.
- Klicken Sie auf Erstellen. Die Seite Schlüssel erstellen wird geöffnet.
- Fügen Sie einen Schlüsselnamen hinzu.
- Wählen Sie unter Purpose (Zweck) die Option Symmetric encrypt/decrypt aus.
- Wählen Sie einen Rotationszeitraum und ein Startdatum aus.
- Klicken Sie auf Erstellen.
- Klicken Sie in der Tabelle Schlüssel auf die drei Punkte in der letzten Spalte und wählen Sie Ressourcen-ID kopieren aus oder notieren Sie sich die ID. Dies ist die KMS_KEY_ID. Sie benötigen diese ID, wenn Sie dem Schlüssel Zugriff auf das Dienstkonto gewähren.
gcloud
- Erstellen Sie einen neuen Schlüsselbund.
Notieren Sie sich diesen Namen. Sie benötigen ihn, wenn Sie dem Schlüssel Zugriff auf das Dienstkonto gewähren.gcloud kms keyrings create KMS_KEYRING_ID \ --location=GCP_REGION
- Erstellen Sie einen Schlüssel im Schlüsselbund.
Notieren Sie sich diesen Namen. Sie benötigen ihn, wenn Sie dem Schlüssel Zugriff auf das Dienstkonto gewähren.gcloud kms keys create KMS_KEY_ID \ --location=GCP_REGION \ --keyring=KMS_KEYRING_ID \ --purpose=encryption
Terraform
Verwenden Sie zum Erstellen eines Schlüsselbunds eine Terraform-Ressource.
Verwenden Sie zum Erstellen eines Schlüssels eine Terraform-Ressource.
Wenden Sie die Terraform-Konfiguration an:
terraform apply
Gewähren Sie dem Dienstkonto Zugriff auf den Schlüssel
Wenn Sie die Cloud SQL-Instanz mit CMEK erstellen, müssen Sie diesen Vorgang nur ausführen, wenn Sie gcloud oder die API verwenden. Sie können diese Vorgehensweise ausführen, wenn nach dem Erstellen der Instanz Berechtigungsprobleme auftreten.
So gewähren Sie dem Dienstkonto Zugriff:
Console
-
Rufen Sie in der Google Cloud Console die Seite Schlüsselverwaltung auf.
- Verwenden Sie die Projektauswahl, um das Projekt auszuwählen, das den Schlüssel hostet.
- Klicken Sie auf den Name n des Schlüsselbunds.
- Klicken Sie auf den Namen des Schlüssels.
- Klicken Sie auf den Tab Berechtigungen.
- Klicken Sie zum Öffnen des Steuerfelds auf Zugriff erlauben.
- Geben Sie das Dienstkonto als Hauptkonto ein und wählen Sie „Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler“ als Rolle aus.
- Klicken Sie auf Speichern.
Alternativ können Sie sie auch auf der IAM-Seite des Projekts zuweisen.
gcloud
gcloud kms keys add-iam-policy-binding KMS_KEY_ID \ --location=GCP_REGION \ --keyring=KMS_KEYRING_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloud-sql.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
Terraform
Verwenden Sie, um den Zugriff auf den Schlüssel zu gewähren, eine Terraform-Ressource.
Wenden Sie die Terraform-Konfiguration an:
terraform apply
Cloud SQL-Instanz mit CMEK erstellen
So erstellen Sie eine Instanz mit vom Kunden verwalteten Verschlüsselungsschlüsseln:
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf Instanz erstellen.
- Wählen Sie das Datenbankmodul aus.
- Geben Sie einen Namen für die Instanz ein. Der Instanzname sollte keine vertraulichen Informationen oder personenbezogenen Daten enthalten, da er extern sichtbar ist. Die Projekt-ID muss im Instanznamen nicht angegeben werden. Sie wird bei Bedarf automatisch erstellt, beispielsweise in den Logdateien.
- Geben Sie das Passwort für den Nutzer
'root'@'%'
ein. - Legen Sie die Region für die Instanz fest. Platzieren Sie die Instanz in der Region, in der sich auch die Ressourcen befinden, die darauf zugreifen. In den meisten Fällen müssen Sie keine Zone angeben.
- Wählen Sie im Abschnitt Konfigurationsoptionen alle Konfigurationsoptionen aus, bis Sie Maschinentyp und Speicher erreichen.
- Maximieren Sie Maschinentyp und Speicher.
- Wählen Sie im Abschnitt Encryption (Verschlüsselung) die Option Customer-managed key (Vom Kunden verwalteter Schlüssel) aus.
- Wählen Sie den KMS-Schlüssel aus dem Drop-down-Menü aus oder geben Sie die KMS_KEY_ID manuell ein. Es werden nur KMS-Schlüssel im selben Projekt und in derselben Region wie die Instanz angezeigt. Es wird die primäre Schlüsselversion des Schlüssels verwendet. Wenn im Schlüsselnamen eine Schlüsselversion angegeben ist, wird sie gekürzt. Wenn Sie einen KMS-Schlüssel auswählen möchten, der zu einem anderen Projekt in derselben Region gehört, wählen Sie Sie können Ihren Schlüssel nicht finden? Schlüsselressourcen-ID eingeben aus und geben Sie die zuvor erfasste KMS_KEY_ID ein.
- Wenn das Dienstkonto keine Berechtigung zum Verschlüsseln/Entschlüsseln für den ausgewählten Schlüssel hat, wird eine Meldung angezeigt. Klicken Sie in diesem Fall auf Erteilen, um dem Dienstkonto die IAM-Rolle
roles/cloudkms.cryptoKeyEncrypterDecrypter>
für den ausgewählten KMS-Schlüssel zuzuweisen. - Nachdem Sie die Konfigurationsoptionen ausgewählt haben, klicken Sie auf Erstellen.
- Sie erhalten eine Meldung, in der die Auswirkungen der Verwendung des vom Kunden verwalteten Verschlüsselungsschlüssels erläutert werden. Lesen Sie die Meldung und bestätigen Sie sie, um mit dem Erstellen der Instanz fortzufahren.
gcloud
gcloud sql instances create INSTANCE_NAME \ --project=PROJECT_ID \ --disk-encryption-key=KMS_KEY_ID \ --database-version=VERSION \ --tier=MACHINE_TYPE \ --region=REGION \ --root-password=INSERT-PASSWORD-HERE
Terraform
Verwenden Sie zum Erstellen einer Instanz mit CMEK eine Terraform-Ressource.
Änderungen löschen
So löschen Sie das Projekt:
- Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument
deletion_protection
auffalse
.deletion_protection = "false"
- Wenden Sie die aktualisierte Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
-
Entfernen Sie Ressourcen, die zuvor mit Ihrer Terraform-Konfiguration angewendet wurden, indem Sie den folgenden Befehl ausführen und
yes
an der Eingabeaufforderung eingeben:terraform destroy
REST Version 1
Um eine Instanz mit vom Kunden verwalteten Verschlüsselungsschlüsseln zu erstellen, übergeben SiediskEncryptionConfiguration
an den Befehl.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
- region: die Region
- database-version: String der Emum-Version (z. B. MYSQL_8_0)
- kms-resource-id: die ID, die Sie von der Erstellung eines Schlüssels erhalten haben.
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances
JSON-Text anfordern:
{ "name":"instance-id", "region":"region", "databaseVersion": "database-version", "diskEncryptionConfiguration" : { "kmsKeyName" : "kms-resource-id" }, "settings": { "backupConfiguration": { "binaryLogEnabled": true, "enabled":true } } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances", "status": "PENDING", "user": "[email protected]", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
Um eine Instanz mit vom Kunden verwalteten Verschlüsselungsschlüsseln zu erstellen, übergeben SiediskEncryptionConfiguration
an den Befehl.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
- region: die Region
- database-version: String der Emum-Version (z. B. MYSQL_8_0)
- kms-resource-id: die ID, die Sie von der Erstellung eines Schlüssels erhalten haben.
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances
JSON-Text anfordern:
{ "name":"instance-id", "region":"region", "databaseVersion": "database-version", "diskEncryptionConfiguration" : { "kmsKeyName" : "kms-resource-id" }, "settings": { "backupConfiguration": { "binaryLogEnabled": true, "enabled":true } } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances", "status": "PENDING", "user": "[email protected]", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Sicherung für eine CMEK-fähige Instanz erstellen
Wenn Sie die Sicherung einer Cloud SQL-Instanz erstellen, wird diese Sicherung mit der gleichen Primärschlüsselversion wie der vom Kunden verwaltete Schlüssel der primären Instanz verschlüsselt. Wenn Ihre Instanz einen CMEK-Schlüssel verwendet, der mit Cloud KMS Autokey erstellt wurde, wird für die Sicherung weiterhin derselbe Schlüssel wie für die primäre Instanz verwendet. Autokey erstellt keine Schlüssel für Sicherungen.
On-Demand- und automatische Sicherungen erstellen und verwalten
Im Formular Sicherung erstellen wird folgende Meldung angezeigt: "Your backup will be encrypted with the primary version of this instance's customer-managed encryption key. If anyone destroys or disables this key version, all backup data encrypted using that key version will be permanently lost. You can check the primary version for the key in Cloud KMS."
Auf der Seite "Sicherungen" enthält die Liste der Sicherungen, die mit vom Kunden verwalteten Verschlüsselungsschlüsseln aktiviert sind, zwei zusätzliche Spalten. Eine Spalte gibt an, dass die Sicherung für eine CMEK-fähige Instanz erstellt wird, und die andere Spalte zeigt die Schlüsselversion an, mit der die Sicherung verschlüsselt wurde.
Replikat für eine CMEK-fähige Instanz erstellen
Wenn Sie ein Lesereplikat einer Cloud SQL-Instanz in derselben Region erstellen, wird dafür der vom Kunden verwaltete Verschlüsselungsschlüssel der übergeordneten Instanz übernommen. Wenn Sie ein Lesereplikat in einer anderen Region erstellen, erhalten Sie eine neue Liste mit vom Kunden verwalteten Verschlüsselungsschlüsseln zur Auswahl. Jede Region nutzt einen eigenen Schlüsselsatz.
Auf der Seite Lesereplikat erstellen sind die folgenden Informationen enthalten:
- Unter Verschlüsselung wird Vom Kunden verwaltet angezeigt.
- Der Verschlüsselungsschlüssel für das Replikat wird angezeigt.
- Die folgende Meldung wird angezeigt: "Das Replikat wird mit einem vom Kunden verwalteten Schlüssel der Masterinstanz verschlüsselt. Wenn dieser Schlüssel gelöscht wird, gehen alle mit ihm verschlüsselten Daten dauerhaft verloren."
Für ein regionenübergreifendes Replikat wird die folgende Meldung angezeigt:
"Your cross-region replica will be encrypted with the selected customer-managed key. If anyone destroys this key, all data encrypted with it will be permanently lost."
CMEK-fähige Instanz klonen
Wenn Sie einen Klon der Cloud SQL-Instanz erstellen, übernimmt er den vom Kunden verwalteten Verschlüsselungsschlüssel, der auch für die Verschlüsselung der Quellinstanz genutzt wird.
Auf der Seite Klon erstellen sind die folgenden Informationen enthalten:
- Unter Verschlüsselung wird Vom Kunden verwaltet angezeigt.
- Der Verschlüsselungsschlüssel für den Klon wird angezeigt.
- Die folgende Meldung wird angezeigt: "Der Klon wird mit einem vom Kunden verwalteten Schlüssel der Quellinstanz verschlüsselt. Wenn dieser Schlüssel gelöscht wird, gehen alle mit ihm verschlüsselten Daten dauerhaft verloren."
Wichtige Informationen für eine CMEK-fähige Instanz aufrufen
Nachdem Sie eine Cloud SQL-Instanz erstellt haben, können Sie der Instanzliste oder der Instanzübersicht entnehmen, dass sie mit einem vom Kunden verwalteten Verschlüsselungsschlüssel angelegt wurde. In den Details wird auch der Schlüssel angezeigt, der zum Erstellen der Instanz verwendet wurde.
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Scrollen Sie in der Liste der Instanzen nach rechts, bis die Spalte Verschlüsselung zu sehen ist. In dieser Spalte werden die Einträge Von Google verwaltet und Vom Kunden verwaltet angezeigt.
- Klicken Sie auf den Instanznamen, um die entsprechende Übersicht zu öffnen. Der vom Kunden verwaltete Verschlüsselungsschlüssel ist im Bereich Konfiguration aufgeführt.
Existierende CMEK-fähige Instanz oder Replikat neu verschlüsseln
Sie können Ihre vorhandenen Cloud SQL-Instanzen und -Replikate mit der aktuellen Primärschlüsselversion neu verschlüsseln. Weitere Informationen zur Neuverschlüsselung von vorhandenen CMEK-fähigen Instanzen oder Replikaten finden Sie unter Informationen zu Schlüsseln.
Neue primäre Schlüsselversion abrufen
Sie benötigen die aktuelle Primärschlüsselversion, um Ihre Instanz oder Ihr Replikat mit einer neuen Version neu zu verschlüsseln. Wenn Sie eine neue Schlüsselversion für Ihre Instanzen benötigen, müssen Sie Ihren Schlüssel mit dem Cloud Key Management Service rotieren. Informationen zum Rotieren des Primärschlüssels finden Sie unter Schlüssel rotieren.
Warten Sie nach Abschluss der Schlüsselrotation, bis die Primärschlüsseländerung weitergegeben wurde, bevor Sie die Instanzen neu verschlüsseln. Ist die Schlüsselversion nicht konsistent, so verwendet Ihre Instanz nach der erneuten Verschlüsselung weiterhin die alte Schlüsselversion. Weitere Informationen finden Sie unter Konsistenz der Schlüsselversionen.
CMEK-fähige Instanz neu verschlüsseln
Verschlüsseln Sie nach Abschluss der Schlüsselrotation Ihre vorhandenen CMEK-fähigen Instanzen oder Replikate neu.
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Übersichtsseite einer Instanz zu öffnen.
- Klicken Sie im Abschnitt Konfiguration auf Instanz neu verschlüsseln.
- Bestätigen Sie im angezeigten Dialogfeld Ihre Auswahl durch einen Klick auf Neu verschlüsseln.
gcloud
Führen Sie folgenden Befehl aus, um die Instanz oder das Replikat neu zu verschlüsseln:
gcloud sql instances reencrypt INSTANCE_NAME
INSTANCE_NAME
durch den Namen der neu zu verschlüsselnden Instanz oder des Replikats.
REST Version 1
Führen Sie folgenden Befehl aus, um Ihre Instanz oder das Replikat mit dem neuen Schlüssel neu zu verschlüsseln:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: die Projekt-ID
- INSTANCE_ID: die Instanz-ID
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id
/instances/instance-id
", "status": "PENDING", "user": "[email protected]", "insertTime": "2023-06-28T21:19:09.503Z", "operationType": "REENCRYPT", "name": "operation-id
", "targetId": "instance-id
", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id
/operations/operation-id
", "targetProject": "project-id
" }
REST v1beta4
Führen Sie folgenden Befehl aus, um Ihre Instanz oder das Replikat mit dem neuen Schlüssel neu zu verschlüsseln:POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: die Projekt-ID
- INSTANCE_ID: die Instanz-ID
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id
/instances/instance-id
", "status": "PENDING", "user": "[email protected]", "insertTime": "2023-06-28T21:22:13.663Z", "operationType": "REENCRYPT", "name": "operation-id
", "targetId": "instance-id
", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id
/operations/operation-id
", "targetProject": "project-id
" }
Automatische Sicherungen bei erneuter Verschlüsselung
Wenn Sie eine primäre Instanz mit einer neuen Primärschlüsselversion neu verschlüsseln, erstellt Cloud SQL automatisch eine On-Demand-Sicherung, die "Neuverschlüsselungssicherung" genannt wird.
In der Liste der Sicherungen für Ihre Cloud SQL-Instanz wird die Sicherung mit erneuter Verschlüsselung als Typ on-demand
und mit dem Label backup created automatically for data before CMEK re-encryption
aufgeführt.
Wie bei anderen On-Demand-Sicherungen bleiben Sicherungen über die erneute Verschlüsselung erhalten, bis Sie sie oder die Instanz löschen.
Einschränkungen bei der erneuten Verschlüsselung
Beachten Sie folgende Einschränkungen, wenn Sie eine Instanz neu verschlüsseln:
- Während der Vorgang zur erneuten Verschlüsselung läuft, können Sie keine anderen Verwaltungsvorgänge auf der Instanz ausführen.
- Durch die Neuverschlüsselung wird eine auf der Größe der Instanz oder des Replikats basierende Ausfallzeit ausgelöst.
- Replikate einer Instanz werden nicht neu verschlüsselt, wenn eine Instanz neu verschlüsselt wird. Sie müssen jedes Replikat einzeln neu verschlüsseln.
- Sicherungen werden bei der Neuverschlüsselung einer Instanz nicht automatisch mit der neuen Schlüsselversion verschlüsselt. Wenn Sie die Sicherung oder die Wiederherstellung zu einer bestimmten Zeit nach dem Erstellen wiederherstellen möchten, müssen Sie die Cloud KMS-Schlüsselversion behalten, mit der die Sicherung verschlüsselt ist.
Informationen zur Fehlerbehebung finden Sie in der Fehlerbehebungstabelle: Erneute Verschlüsselung.
Cloud External Key Manager (Cloud EKM) verwenden
Zum Schutz von Daten in Cloud SQL-Instanzen können Sie Schlüssel verwenden, die Sie mit einem unterstützten Partner für externe Schlüsselverwaltung verwalten. Weitere Informationen finden Sie unter Cloud External Key Manager, einschließlich des Abschnitts Hinweise.
Informationen zum Erstellen eines Cloud EKM-Schlüssels finden Sie unter Cloud EKM-Schlüssel verwalten. Nachdem ein Schlüssel erstellt wurde, geben Sie den Namen des Schlüssels an, wenn Sie eine Cloud SQL-Instanz erstellen.
Sie können Key Access Justifications (KAJ) als Teil von Cloud EKM verwenden. KAJ ermöglicht es Ihnen, den Grund für jede Cloud EKM-Anfrage aufzurufen. Basierend auf der Begründung können Sie eine Anfrage außerdem automatisch genehmigen oder ablehnen. Weitere Informationen finden Sie in der Übersicht.
Damit bietet KAJ eine zusätzliche Kontrolle über Ihre Daten. Dazu stellt es für jeden Versuch zum Entschlüsseln der Daten eine Begründung bereit.
Google hat keine Kontrolle über die Verfügbarkeit von Schlüsseln in einem Partnersystem für die externe Schlüsselverwaltung.
Schlüsselversionen deaktivieren und reaktivieren
Sehen Sie sich die folgenden Themen an:
Fehlerbehebung
In diesem Abschnitt wird beschrieben, welche Maßnahmen Sie ergreifen können, wenn Sie beim Einrichten oder Verwenden von CMEK-fähigen Instanzen eine Fehlermeldung erhalten.
Cloud SQL-Administratorvorgänge wie Erstellen, Klonen oder Aktualisieren können aufgrund von Cloud KMS-Fehlern und fehlenden Rollen oder Berechtigungen fehlschlagen. Häufige Gründe für einen Fehler sind eine fehlende, deaktivierte oder gelöschte Cloud KMS-Schlüsselversion, unzureichende IAM-Berechtigungen für den Zugriff auf die Cloud KMS-Schlüsselversion oder wenn sich die Cloud KMS-Schlüsselversion in einer anderen Region als die Cloud SQL-Instanz befindet. Verwenden Sie die folgende Tabelle zur Fehlerbehebung, um häufige Probleme zu diagnostizieren und zu beheben.
Tabelle zur Fehlerbehebung für vom Kunden verwaltete Verschlüsselungsschlüssel
Fehler | Das könnte das Problem sein | Lösungsvorschlag |
---|---|---|
Dienstkonto pro Produkt und Projekt wurde nicht gefunden | Der Name des Dienstkontos ist falsch. | Sie müssen ein Dienstkonto für das richtige Nutzerprojekt erstellt haben.
|
Zugriff auf das Dienstkonto kann nicht gewährt werden | Das Nutzerkonto ist nicht berechtigt, Zugriff auf diese Schlüsselversion zu gewähren. | Fügen Sie dem Nutzer- oder Dienstkonto die Rolle Organisationsadministrator hinzu.
|
Die Cloud KMS-Schlüsselversion wurde gelöscht. | Die Schlüsselversion wurde gelöscht. | Wenn die Schlüsselversion gelöscht wurde, können Sie sie nicht zum Verschlüsseln oder Entschlüsseln von Daten verwenden. |
Die Cloud KMS-Schlüsselversion ist deaktiviert. | Die Schlüsselversion ist deaktiviert. | Aktivieren Sie die Cloud KMS-Schlüsselversion noch einmal.
|
Unzureichende Berechtigung zur Verwendung des Cloud KMS-Schlüssels | Die Rolle cloudkms.cryptoKeyEncrypterDecrypter fehlt in dem Nutzer- oder Dienstkonto, das Sie zum Ausführen von Vorgängen auf Cloud SQL-Instanzen verwenden, oder die Cloud KMS-Schlüsselversion ist nicht vorhanden. |
Fügen Sie in dem Google Cloud-Projekt, das den Schlüssel hostet, Ihrem Nutzer- oder Dienstkonto die Rolle cloudkms.cryptoKeyEncrypterDecrypter hinzu.
Wenn die Rolle Ihrem Konto bereits zugewiesen ist, finden Sie unter Schlüssel erstellen Informationen zum Erstellen einer neuen Schlüsselversion. Siehe Hinweis. |
Cloud KMS-Schlüssel wurde nicht gefunden | Die Schlüsselversion ist nicht vorhanden. | Erstellen Sie eine neue Schlüsselversion. Schlüssel erstellen Siehe Hinweis. |
Die Cloud SQL-Instanz und die Cloud KMS-Schlüsselversion befinden sich in verschiedenen Regionen. | Die Cloud KMS-Schlüsselversion und die Cloud SQL-Instanz müssen sich in derselben Region befinden. Es kommt zu einem Fehler, wenn sich die Cloud KMS-Schlüsselversion in einer globalen Region oder Mehrfachregion befindet. | Erstellen Sie eine Schlüsselversion in derselben Region, in der Sie Instanzen erstellen möchten. Schlüssel erstellen Siehe Hinweis. |
Die Cloud KMS-Schlüsselversion wird wiederhergestellt, die Instanz ist jedoch weiterhin gesperrt. | Die Schlüsselversion ist deaktiviert oder gewährt nicht die erforderlichen Berechtigungen. | Aktivieren Sie die Schlüsselversion wieder und weisen Sie Ihrem Nutzer- oder Dienstkonto in dem Google Cloud-Projekt, das den Schlüssel hostet, die Rolle cloudkms.cryptoKeyEncrypterDecrypter zu. |
Fehlerbehebungstabelle: Erneute Verschlüsselung
Fehler | Das könnte das Problem sein | Lösungsvorschlag |
---|---|---|
Die erneute Verschlüsselung der CMEK-Ressource ist fehlgeschlagen, da der Cloud KMS-Schlüssel nicht zugänglich ist. Prüfen Sie, ob die primäre Schlüsselversion aktiviert und die Berechtigung korrekt erteilt wurde. | Die Schlüsselversion ist deaktiviert oder gewährt nicht die erforderlichen Berechtigungen. | Aktivieren Sie die Cloud KMS-Schlüsselversion noch einmal: Bestätigen Sie in dem Google Cloud-Projekt, das den Schlüssel hostet, Ihrem Nutzer- oder Dienstkonto die Rolle |
Die erneute Verschlüsselung der CMEK-Ressource ist aufgrund eines internen Serverfehlers fehlgeschlagen. Versuchen Sie es später noch einmal. | Es ist ein interner Serverfehler aufgetreten. | Wiederholen Sie die Neuverschlüsselung. Weitere Informationen finden Sie unter Vorhandene CMEK-fähige Instanz oder -Replikat neu verschlüsseln. |
Nächste Schritte
- Zugriff auf die Instanz konfigurieren
- Mit einem Client eine Verbindung zur Instanz herstellen
- Datenbank auf der Instanz erstellen
- Daten in die Instanz importieren
- Nutzer auf der Instanz erstellen
- Instanzeinstellungen
- Key Access Justifications zu Ihren Schlüsseln hinzufügen.