Vom Kunden verwaltete Verschlüsselungsschlüssel verwenden

Auf dieser Seite wird gezeigt, wie Sie ein Dienstkonto und Schlüssel für vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-managed Encryption Keys, CMEK) einrichten und wie Sie eine Instanz erstellen, die einen CMEK nutzt. Weitere Informationen zur Verwendung von vom Kunden verwalteten Verschlüsselungsschlüsseln mit Cloud SQL finden Sie unter Von Kunden verwaltete Verschlüsselungsschlüssel.

Vorbereitung

  1. Melden Sie sich bei Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.

  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Installieren und initialisieren Sie das Cloud SDK.
  5. Sie müssen die Rolle "Cloud SQL-Administrator" in Ihrem Nutzerkonto haben.

    Zur IAM-Seite

  6. Aktivieren Sie die Cloud Key Management Service API.

    Aktivieren Sie die API

  7. Aktivieren Sie die Cloud SQL Admin API.

    Aktivieren Sie die API

Workflow zum Erstellen einer Cloud SQL-Instanz mit CMEK

  1. Nur gcloud- und API-Nutzer: Erstellen Sie ein Dienstkonto für jedes Projekt, für das vom Kunden verwaltete Verschlüsselungsschlüssel erforderlich sind.
  2. Erstellen Sie einen Schlüsselbund und Schlüssel und legen Sie den Speicherort für jeden Schlüssel fest.
  3. Nur gcloud- und API-Nutzer: Gewähren Sie dem Schlüssel Zugriff auf das Dienstkonto.
  4. Kopieren oder notieren Sie die Schlüssel-ID (KMS_RESOURCE_ID) und den Speicherort für den Schlüssel sowie die ID (KMS_RESOURCE_ID) für den Schlüsselbund. Sie benötigen diese Informationen, wenn Sie dem Schlüssel Zugriff auf das Dienstkonto gewähren.
  5. Öffnen Sie ein Projekt und erstellen Sie eine Cloud SQL-Instanz mit den folgenden Optionen:
    1. Derselbe Speicherort wie der vom Kunden verwaltete Verschlüsselungsschlüssel
    2. Die vom Kunden verwaltete Schlüsselkonfiguration
    3. 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 die Art von Dienstkonto, die Sie für vom Kunden verwaltete Verschlüsselungsschlüssel benötigen, nur mit Befehlen des gcloud-Befehlszeilentools erstellen. Wenn Sie die Console nutzen, legt Cloud SQL dieses Dienstkonto automatisch an.

Erstellen Sie mit diesem Befehl ein Dienstkonto mit dem gcloud-Befehlszeilentool:

gcloud beta services identity create --service=sqladmin.googleapis.com \
             --project=[USER_PROJECT]

Der vorherige Befehl gibt den Namen eines Dienstkontos in diesem Format zurück:

service-[PROJECT_NUMBER]@gcp-sa-cloud-sql.iam.gserviceaccount.com

Beispiel:

service-534582264470@gcp-sa-cloud-sql.iam.gserviceaccount.com

Sie verwenden diesen Dienstkontonamen, während Sie den Schlüsselzugriff auf das Dienstkonto 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

  1. Rufen Sie die Seite "Kryptografische Schlüssel" auf.
    Zur Seite "Kryptografische Schlüssel"
  2. Klicken Sie auf SCHLÜSSELBUND ERSTELLEN.
  3. Fügen Sie einen Schlüsselbundnamen hinzu. Notieren Sie sich diesen Namen. Sie benötigen ihn, wenn Sie dem Schlüssel Zugriff auf das Dienstkonto gewähren.
  4. Fügen Sie einen Schlüsselbund-Speicherort hinzu.
  5. Klicken Sie auf ERSTELLEN. Die Seite Schlüssel erstellen wird geöffnet.
  6. Fügen Sie einen Schlüsselnamen hinzu.
  7. Wählen Sie einen Zweck (symmetrisch oder asymmetrisch) aus.
  8. Wählen Sie einen Rotationszeitraum und ein Startdatum aus.
  9. Klicken Sie auf ERSTELLEN.
  10. 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_RESOURCE_ID. Sie benötigen diese ID, wenn Sie dem Schlüssel Zugriff auf das Dienstkonto gewähren.

gcloud

  1. Erstellen Sie einen neuen Schlüsselbund:
         gcloud kms keyrings create [KEYRING_NAME] --location [LOCATION]
      
    Notieren Sie sich diesen Namen. Sie benötigen ihn, wenn Sie dem Schlüssel Zugriff auf das Dienstkonto gewähren.
  2. Erstellen Sie einen Schlüssel im Schlüsselbund:
         gcloud kms keys create [KEY_NAME] --location [LOCATION] \
               --keyring [KEYRING_NAME] --purpose encryption
         
    Notieren Sie sich diesen Namen. Sie benötigen ihn, wenn Sie dem Schlüssel Zugriff auf das Dienstkonto gewähren.

Schlüsselzugriff auf das Dienstkonto gewähren

Die folgende Vorgehensweise bezieht sich auf die Verwendung von gcloud und der API.

So gewähren Sie Zugriff auf das Dienstkonto:

  gcloud kms keys add-iam-policy-binding 
[KEY_NAME] --location [LOCATION] --keyring [KEY_RING_NAME]
--member serviceAccount:service-[PROJECT_NUMBER]@gcp-sa-cloud-sql.iam.gserviceaccount.com
--role roles/cloudkms.cryptoKeyEncrypterDecrypter

Cloud SQL-Instanz mit CMEK erstellen

So erstellen Sie eine Instanz mit vom Kunden verwalteten Verschlüsselungsschlüsseln:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite "Cloud SQL-Instanzen".

    Zur Seite „Cloud SQL-Instanzen“

  2. Klicken Sie auf Instanz erstellen.
  3. Wählen Sie das Datenbankmodul aus.
  4. 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.
  5. Geben Sie das Passwort für den Nutzer 'root'@'%' ein.
  6. 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.
  7. Wählen Sie unter Konfigurationsoptionen alle Konfigurationsoptionen aus, bis Sie Maschinentyp und Speicher erreichen.
  8. Maximieren Sie Maschinentyp und Speicher.
  9. Wählen Sie unter Verschlüsselung die Option Vom Kunden verwalteter Schlüssel aus.
  10. Wählen Sie den KMS-Schlüssel aus dem Drop-down-Menü aus oder geben Sie die KMS_RESOURCE_ID manuell ein. Es werden nur KMS-Schlüssel im selben Projekt und in derselben Region wie die Instanz angezeigt. 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_RESOURCE_ID ein.
  11. 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 Cloud IAM-Rolle für den ausgewählten KMS-Schlüssel zuzuweisen. IAM role on the selected KMS key.
  12. Nachdem Sie die Konfigurationsoptionen ausgewählt haben, klicken Sie auf Erstellen.
  13. 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_RESOURCE_ID]
  --database-version=[VERSION]
  --tier= [MACHINE_TYPE] \
  --region=[REGION] \
  --root-password=[INSERT-PASSWORD-HERE]
  

REST v1beta4

Um eine Instanz mit vom Kunden verwalteten Verschlüsselungsschlüsseln zu erstellen, übergeben Sie diskEncryptionConfiguration an den Befehl.

Ersetzen Sie diese Werte in den folgenden Anweisungen:

  • 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://www.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 müssten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Diese REST API verwendet Instances:Insert.

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.

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.

Lesereplikate erstellen

Auf der Seite Lesereplikat erstellen sind die folgenden Informationen enthalten:

  1. Unter Verschlüsselung wird Vom Kunden verwaltet angezeigt.
  2. Der Verschlüsselungsschlüssel für das Replikat wird angezeigt.
  3. 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.

Instanzen klonen

Auf der Seite Klon erstellen sind die folgenden Informationen enthalten:

  1. Unter Verschlüsselung wird Vom Kunden verwaltet angezeigt.
  2. Der Verschlüsselungsschlüssel für den Klon wird angezeigt.
  3. 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.

  1. Rufen Sie die Seite "Cloud SQL-Instanzen" auf.

    Zur Seite "Cloud SQL-Instanzen"

  2. 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.

  3. Klicken Sie auf den Instanznamen, um die entsprechende Übersicht zu öffnen. Der vom Kunden verwaltete Verschlüsselungsschlüssel ist im Bereich Konfiguration aufgeführt.

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.

Zur Seite "Dienstkonten"

Zugriff auf das Dienstkonto kann nicht gewährt werden Das Nutzerkonto ist nicht berechtigt, Zugriff auf diese Schlüsselversion zu gewähren. Weisen Sie dem Nutzer- oder Dienstkonto die Rolle Organisationsadministrator zu.

Zur Seite "IAM-Konten"

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.

Zur Seite "Kryptografische Schlüssel"

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. Weisen Sie Ihrem Nutzer- oder Dienstkonto die Rolle cloudkms.cryptoKeyEncrypterDecrypter zu.

Zur Seite "IAM-Konten"


Wenn Ihrem Konto bereits die Rolle 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.

Nächste Schritte