Vom Kunden verwaltete Verschlüsselungsschlüssel (Customer Managed Encryption Keys, CMEK) verwenden

Übersicht

Auf dieser Seite wird beschrieben, wie vom Kunden verwaltete Verschlüsselungsschlüssel (CMEKs) mit Datastream funktionieren.

Ist CMEK das Richtige für Sie?

CMEK ist für Organisationen mit sensiblen oder regulierten Daten gedacht, für die sie ihre Verschlüsselungsschlüssel verwalten müssen.

Von Google und vom Kunden verwaltete Verschlüsselung im Vergleich

Mit der CMEK-Funktion können Sie Ihre eigenen kryptografischen Schlüssel für inaktive Daten in Datastream verwenden. Nachdem Sie CMEK hinzugefügt haben, verwendet Datastream bei jedem API-Aufruf Ihren Schlüssel für den Datenzugriff.

Datastream verwendet von Google verwaltete Data Encryption Keys (DEK) und Key Encryption Keys (KEKs), um Datastream zu verschlüsseln. Es gibt zwei Verschlüsselungsebenen:

  1. Der DEK verschlüsselt Daten.
  2. Der KEK verschlüsselt den DEK.

Datastream speichert den verschlüsselten DEK zusammen mit den verschlüsselten Daten und Google verwaltet den Google-KEK. Mit CMEK erstellen Sie einen Schlüssel, der den Google-KEK umschließt. Mit einem CMEK können Sie den KEK erstellen, widerrufen und löschen.

CMEK, einschließlich Software, Hardware und externer Schlüssel, werden alle über die Cloud Key Management Service (KMS) API verwaltet.

An welchen Standorten werden CMEK-fähige Datastream-Streams unterstützt?

CMEK ist an allen Datastream-Standorten verfügbar.

Informationen zu Dienstkonten

Wenn für Ihre Datastream-Streams CMEK aktiviert ist, müssen Sie den Schlüsselzugriff von Cloud Key Management Service über ein Dienstkonto anfordern.

Wenn Sie einen CMEK für ein Projekt verwenden möchten, benötigen Sie ein Dienstkonto und müssen dem Dienstkonto Zugriff auf den Schlüssel gewähren. Das Dienstkonto muss im Projekt vorhanden sein. Das Dienstkonto ist in allen Regionen sichtbar.

Wenn Sie die Console zum Erstellen eines Streams verwenden, erstellt Datastream das Dienstkonto automatisch, wenn Sie zum ersten Mal die Option Vom Kunden verwalteter Schlüssel auswählen (falls noch kein Dienstkonto vorhanden ist). Wenn Datastream das Dienstkonto automatisch erstellt, benötigen Sie keine besonderen Berechtigungen für Ihr Nutzerkonto.

Schlüssel

Im Cloud Key Management Service müssen Sie einen Schlüsselbund mit einem kryptografischen Schlüssel erstellen, der für einen Standort festgelegt ist. Wenn Sie einen neuen Stream in Datastream erstellen, wählen Sie diesen Schlüssel aus, um den Stream zu verschlüsseln.

Sie müssen die Schlüssel-ID und -region kennen, wenn Sie neue Streams erstellen, die CMEK verwenden. Neue Streams müssen sich in derselben Region wie der mit den Streams verknüpfte CMEK befinden. Sie können ein Projekt sowohl für Schlüssel als auch für Streams erstellen oder für beide jeweils ein separates Projekt erstellen.

CMEK hat das folgende Format:

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

Wenn Datastream nicht auf den Schlüssel zugreifen kann (z. B. weil Sie die Schlüsselversion deaktivieren), ändert Datastream den Status des Streams in FAILED und eine zugehörige Fehlermeldung wird angezeigt. Nachdem alle mit der Fehlermeldung verbundenen Probleme behoben wurden, sodass wieder auf den Schlüssel zugegriffen werden kann, setzt Datastream den Stream automatisch fort.

Externe Schlüsselverwaltung

Sie können Schlüssel, die in externen Schlüsselmanagern wie Fortanix, Ionic oder Thales gespeichert sind, als CMEK verwenden. Informationen zur Verwendung externer Schlüssel mit Cloud Key Management Service finden Sie unter Cloud External Key Manager.

Wie kann ich CMEK-verschlüsselte Daten dauerhaft unzugänglich machen?

Es kann vorkommen, dass Sie mit CMEK verschlüsselte Daten dauerhaft löschen möchten. Löschen Sie dazu die CMEK-Version. Sie können den Schlüsselbund oder Schlüssel nicht löschen, aber Sie können Schlüsselversionen des Schlüssels löschen.

Beschränkungen

Bei Verwendung eines CMEK gelten die folgenden Einschränkungen:

  • Sie können einen CMEK für einen laufenden Stream nicht aktualisieren.

  • Sie können zwar Zeilen aus der Quelldatenbank mit CMEK verschlüsseln, aber keine Streammetadaten wie die Stream-ID, die IP-Adresse der Quelldatenbank oder die Namen der Tabellen der Quelldatenbank.

CMEK verwenden

Nachdem Sie CMEK kennengelernt haben, können Sie ein Dienstkonto und Schlüssel für CMEK einrichten. Außerdem erfahren Sie, wie Sie Datastream für die Verwendung von CMEK einrichten. Weitere Informationen zu CMEK finden Sie in der Übersicht.

Hinweise

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Cloud SDK installieren und initialisieren
  7. Achten Sie darauf, dass Ihrem Nutzerkonto die Rolle „Datastream-Administrator“ zugewiesen ist.

    Zur IAM-Seite

  8. Enable the Cloud Key Management Service API.

    Enable the API

  9. Aktivieren Sie die Datastream API.

    API aktivieren

Workflow zum Erstellen eines Streams in Datastream mit CMEK

  1. Nur gcloud- und API-Nutzer: Sie benötigen ein Dienstkonto für jedes Projekt, für das vom Kunden verwaltete Verschlüsselungsschlüssel erforderlich sind. Falls nicht, erfahren Sie hier, wie Sie ein Dienstkonto erstellen.
  2. Erstellen Sie einen Schlüsselbund und Schlüssel und legen Sie den Speicherort für jeden Schlüssel fest. Der Standort ist die Google Cloud-Region.
  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_KEY_ID) und den Speicherort für den Schlüssel sowie die ID (KMS_KEYRING_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 einen Stream in Datastream mit den folgenden Optionen:
    1. Derselbe Standort wie der CMEK
    2. Die CMEK-Konfiguration
    3. CMEK-ID

Ihr Stream in Datastream 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 auch Berechtigungen zum Erstellen, Aktualisieren und Löschen von Diensten und die Datastream-Richtlinie auf einem Dienstkonto.

Derzeit können Sie nur gcloud-Befehle verwenden, um den Typ von Dienstkonto, das Sie für CMEK benötigen. Wenn Sie in der Console an, dann erstellt Datastream automatisch dieses Dienstkonto für Sie.

Führen Sie den folgenden Befehl aus, um ein Dienstkonto mit gcloud zu erstellen:

gcloud beta services identity create \
--service=datastream.googleapis.com \
--project=PROJECT_ID

Der vorherige Befehl gibt den Namen eines Dienstkontos zurück. Sie verwenden diesen Dienstkontonamen bei der Vorgehensweise in Gewähren Sie dem Schlüssel Zugriff auf das Dienstkonto.

Schlüssel erstellen

Sie können den Schlüssel im selben Google Cloud-Projekt wie den Stream in Datastream oder in einem separaten Nutzerprojekt erstellen. Der Speicherort des Cloud KMS-Schlüsselbunds muss mit der Region übereinstimmen, in der Sie den Stream erstellen möchten. Ein Schlüssel für mehrere Regionen oder für eine globale Region funktioniert nicht. Wenn die Regionen nicht übereinstimmen, können Sie den Stream nicht erstellen.

So erstellen Sie einen Cloud KMS-Schlüssel:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Kryptografische Schlüssel auf.
  2. Klicken Sie auf KeyRing erstellen.
  3. Fügen Sie einen Schlüsselbundnamen hinzu. Notieren Sie sich diesen Namen, da Sie ihn benötigen, 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_KEY_ID Sie benötigen die KMS_KEY_ID, wenn Sie dem Schlüssel Zugriff gewähren mit dem Dienstkonto.

gcloud

  1. Erstellen Sie einen neuen Schlüsselbund.
    gcloud kms keyrings create KMS_KEYRING_ID \
    --location=GCP_REGION
      
    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 KMS_KEY_ID \
    --location=GCP_REGION \
    --keyring=KMS_KEYRING_ID \
    --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.

Verwenden Sie den folgenden Code, um Zugriff auf das Dienstkonto zu gewähren:

gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
--location=GCP_REGION \
--keyring=KMS_KEYRING_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-datastream.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Stream in Datastream mit CMEK erstellen

Beim Erstellen eines Streams in Datastream können Sie mit Ihrem CMEK die Verschlüsselung Ihrer Daten verwalten.

Nächste Schritte