Kundenverwaltete Verschlüsselungsschlüssel verwenden

Standardmäßig verschlüsselt Workflows inaktive Daten. Diese Standardverschlüsselung wird von Google Cloud vorgenommen und verwaltet. Zusätzliche Maßnahmen Ihrerseits sind nicht erforderlich.

Wenn Sie bestimmte Compliance- oder regulatorische Anforderungen in Bezug auf die Schlüssel zum Schutz Ihrer Daten haben, können Sie vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK) für Workflows verwenden. Ihr Workflow und die zugehörigen inaktiven Daten werden mit einem Verschlüsselungsschlüssel geschützt, auf den nur Sie zugreifen können und den Sie mit Cloud Key Management Service (Cloud KMS) steuern und verwalten können.

Mit CMEK geschützte Inhalte

Beim Bereitstellen eines Workflows können Sie einen Cloud KMS-Schlüssel angeben. Dieser Schlüssel wird zum Verschlüsseln des Workflows und seiner Ausführungen verwendet:

  • Für einen Workflow ist eine Quelldatei mit einer gültigen Workflowdefinition erforderlich. Diese Quelldatei wird mit dem Schlüssel verschlüsselt.

  • Bei einer Workflowausführung wird die aktuelle Workflowdefinition (eine bestimmte Workflow-Überarbeitung) ausgeführt. Wenn der Schlüssel verwendet wird, der mit der Workflowversion zum Zeitpunkt der Bereitstellung verknüpft ist, werden der kompilierte Workflow sowie alle gespeicherten Eingabe-, Ausgabe- und Laufzeitdaten der Ausführung verschlüsselt. Dazu gehören Ausführungsargumente, Ergebnisse, Fehler und Ausnahmen, gelieferte Eventarc-Ereignisse sowie Callback- und HTTP-Anfragen und ‐Antworten.

Hinweise

Führen Sie die folgenden Schritte aus, bevor Sie CMEK in Workflows verwenden:

  1. Aktivieren Sie die APIs.

    Console

    1. Cloud KMS and Workflows APIs aktivieren.

      Aktivieren Sie die APIs

    gcloud

    1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

      Cloud Shell aktivieren

      Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

    2. gcloud-Komponenten aktualisieren.
      gcloud components update
      
    3. Aktivieren Sie die Cloud KMS und Workflows APIs für das Projekt, in dem Ihre Verschlüsselungsschlüssel gespeichert werden.
      gcloud services enable cloudkms.googleapis.com workflows.googleapis.com
      
  2. Cloud KMS generiert Cloud-Audit-Logs, wenn Schlüssel aktiviert oder deaktiviert sind oder von Workflow-Ressourcen zum Verschlüsseln und Entschlüsseln von Daten verwendet werden. Achten Sie darauf, dass für die Cloud KMS API in Ihrem Projekt Logging aktiviert ist und dass Sie entschieden haben, welche Logging-spezifischen Berechtigungen und Rollen für Ihren Anwendungsfall gelten. Weitere Informationen finden Sie unter Informationen zum Audit-Logging in Cloud KMS.

Cloud KMS-Schlüsselbund und -Schlüssel erstellen

Sie können einen neuen Schlüsselbund erstellen oder einen vorhandenen verwenden. Innerhalb des Schlüsselbunds können Sie einen neuen Schlüssel hinzufügen oder einen vorhandenen Schlüssel verwenden.

  1. Erstellen Sie einen Schlüsselbund.

  2. Schlüssel für einen bestimmten Schlüsselbund erstellen

Ressourcen-ID für einen Cloud KMS-Schlüssel abrufen

Die Ressourcen-ID für einen Cloud KMS-Schlüssel ist erforderlich, wenn Sie CMEK für einen Workflow aktivieren. In diesem Dokument finden Sie unter CMEK für einen Workflow aktivieren.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Schlüsselverwaltung auf.

    Schlüsselverwaltung aufrufen

  2. Klicken Sie auf den Schlüsselbund, der den Schlüssel enthält.

  3. Klicken Sie für den Schlüssel, dessen Ressourcen-ID Sie abrufen, auf Mehr.

  4. Klicken Sie auf Ressourcennamen kopieren.

    Die Ressourcen-ID für den Schlüssel wird in die Zwischenablage kopiert. Ihr Format sieht in etwa so aus:

    projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    
  5. Ein Schlüssel hat null oder mehr Schlüsselversionen. Die Ressourcen-ID für eine Schlüsselversion besteht aus der Schlüssel-ID plus einem Schrägstrich (/) und der Versions-ID. So listen Sie alle Versionen eines Schlüssels auf:

    1. Klicken Sie auf den Namen des Schlüssels.
    2. Um eine bestimmte Version aufzurufen, klicken Sie auf Mehr.
    3. Klicken Sie auf Ressourcennamen kopieren.

gcloud

  1. Alle Schlüssel eines bestimmten Schlüsselbunds auflisten:

    gcloud kms keys list --keyring RING_NAME --location LOCATION
    

    Ersetzen Sie Folgendes:

    • RING_NAME: der Name des Schlüsselbunds
    • LOCATION: Region des Schlüsselbunds

    Die Ausgabe enthält die Ressourcen-ID für jeden Schlüssel. Beispiel:

    NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
    
  2. Ein Schlüssel hat null oder mehr Schlüsselversionen. Die Ressourcen-ID für eine Schlüsselversion besteht aus der Schlüssel-ID plus einem Schrägstrich (/) und der Versions-ID. Listen Sie alle Versionen für einen Schlüssel auf:

    gcloud kms keys versions list --location LOCATION --keyring RING_NAME --key KEY_NAME
    

    Die Ausgabe enthält die Ressourcen-ID für jede Schlüsselversion. Beispiel:

    NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME/2
    

Dem Workflows-Dienst-Agent Zugriff auf den Schlüssel gewähren

Sie müssen dem Workflows-Dienst-Agent die IAM-Rolle Cloud KMS CryptoKey Encrypter/Decrypter gewähren, damit er auf den Cloud KMS-Schlüssel zugreifen kann:

Console

Wenn Sie CMEK für einen Workflow über die Console aktivieren, werden Sie aufgefordert, dem Dienstkonto die Rolle Cloud KMS CryptoKey Encrypter/Decrypter zuzuweisen. Weitere Informationen finden Sie in diesem Dokument unter CMEK für einen Workflow aktivieren.

gcloud

gcloud kms keys add-iam-policy-binding KEY_NAME \
    --keyring RING_NAME \
    --location LOCATION \
    --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter

Ersetzen Sie Folgendes:

  • KEY_NAME: Der Name des Schlüssels. Beispiel: my-key.
  • RING_NAME: Der Name des Schlüsselbunds. Beispiel: my-keyring
  • LOCATION: Der Speicherort des Schlüssels. Beispiel: us-central1
  • PROJECT_NUMBER: Ihre Google Cloud-Projektnummer. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud Console oder durch Ausführen des folgenden Befehls:

    export PROJECT=$(gcloud info --format='value(config.project)')
    gcloud projects describe ${PROJECT} --format="value(projectNumber)"
    

Solange der Dienst-Agent die Rolle roles/cloudkms.cryptoKeyEncrypterDecrypter hat, kann ein Workflow in Ihrem Projekt seine Daten mit dem CMEK-Schlüssel verschlüsseln und entschlüsseln. Wenn Sie diese Rolle widerrufen oder den CMEK-Schlüssel deaktivieren oder löschen, kann nicht mehr auf diese Daten zugegriffen werden. In diesem Dokument finden Sie Informationen unter Cloud KMS deaktivieren.

CMEK für einen Workflow aktivieren

Wenn Sie einen Workflow erstellen oder ihn anschließend aktualisieren, können Sie den Cloud KMS-Schlüssel angeben, der vom Workflow für die Datenverschlüsselung verwendet werden soll.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Workflows.

    Zur Seite "Workflows"

  2. Klicken Sie auf den Namen des Workflows, den Sie aktualisieren möchten.

    Die Seite Workflowdetails wird angezeigt.

  3. Klicken Sie auf Bearbeiten.

  4. Wählen Sie Vom Kunden verwalteter Verschlüsselungsschlüssel (CMEK) aus.

  5. Wählen Sie in der Liste Vom Kunden verwalteten Schlüssel auswählen einen Cloud KMS-Schlüssel aus oder filtern Sie danach.

  6. Optional: Sie können den Ressourcennamen des Schlüssels manuell eingeben. Klicken Sie dazu in der Liste Wählen Sie einen vom Kunden verwalteten Schlüssel aus auf Schlüssel manuell eingeben und geben Sie den Namen der Schlüsselressource im angegebenen Format ein.

  7. Wenn Sie dazu aufgefordert werden, weisen Sie dem Workflow-Dienstkonto mit der Rolle workflows.serviceAgent die Rolle cloudkms.cyptoKeyEncrypterDecrypter zu.

  8. Klicken Sie auf Next (Weiter).

  9. Klicken Sie auf Bereitstellen, um die Änderungen zu speichern und den aktualisierten Workflow bereitzustellen.

gcloud

gcloud workflows deploy WORKFLOW_NAME \
    --source=SOURCE_FILE \
    --kms-key=KEY \
    --location LOCATION \
    --service-account=SERVICE_ACCOUNT

Ersetzen Sie Folgendes:

  • WORKFLOW_NAME: Der Name Ihres Workflows.
  • SOURCE_FILE: Ihre Workflow-Quelldatei mit der Dateiendung yaml bei einer YAML-Datei oder mit der Dateiendung json bei einer JSON-Datei, z. B. myWorkflow.yaml.
  • KEY: die Ressourcen-ID des Schlüssels im Format projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME. Sie können die Schlüssel-ID abrufen.

  • LOCATION: der Standort des Workflows

  • SERVICE_ACCOUNT: das Dienstkonto, das Ihr Workflow für den Zugriff auf andere Google Cloud-Dienste verwendet, z. B. SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com. Es wird dringend empfohlen, ein Dienstkonto mit den geringsten Berechtigungen zu verwenden, die für den Zugriff auf die benötigten Ressourcen erforderlich sind. Wenn Sie das Feld leer lassen, wird das Standarddienstkonto verwendet. Weitere Informationen finden Sie unter Workflowberechtigung für den Zugriff auf Google Cloud-Ressourcen gewähren.

Wichtige Hinweise:

  • Workflowversionen und -ausführungen werden mit dem Schlüssel verschlüsselt, der zum Zeitpunkt der Bereitstellung angegeben wurde. Ressourcen, die zuvor mit einem früheren Schlüssel verschlüsselt wurden, bleiben mit diesem früheren Schlüssel verschlüsselt. Wird ein Workflow anschließend bearbeitet und ein neuer Schlüssel angegeben, wird die entsprechende Version des Workflows mit dem neuen Schlüssel verschlüsselt. Bei allen nachfolgenden Ausführungen wird der neue Schlüssel verwendet.
  • Zuvor nicht CMEK-verschlüsselte Workflowversionen und -ausführungen bleiben unverschlüsselt.
  • Wenn Sie CMEK für eine Workflowversion deaktivieren, werden alle nachfolgenden Ausführungen ohne CMEK-Verschlüsselung erstellt. In diesem Dokument finden Sie unter CMEK für einen Workflow deaktivieren. Vorhandene Workflowüberarbeitungen und -ausführungen bleiben mit den Schlüsseln verschlüsselt, mit denen sie zuvor verschlüsselt wurden.

Cloud KMS-Integration prüfen

Sie können die CMEK-Integration prüfen, indem Sie die Metadaten für einen Workflow anzeigen.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Workflows.

    Zur Seite "Workflows"

  2. Klicken Sie auf den Namen des Workflows, den Sie überprüfen möchten.

    Die Seite Workflowdetails wird angezeigt.

  3. Klicken Sie auf den Tab Details.

    Der Wert Verschlüsselung zeigt die Ressourcen-ID des Cloud KMS-Schlüssels an, der zum Sichern des Workflows und seiner Ausführung verwendet wird.

gcloud

gcloud workflows describe WORKFLOW_NAME \
    --location=LOCATION

Die Ausgabe sollte in etwa so aussehen:

createTime: '2022-08-10T19:57:58.233177709Z'
cryptoKeyName: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
name: projects/PROJECT_NAME/locations/LOCATION/workflows/WORKFLOW_NAME
revisionCreateTime: '2022-11-18T19:44:04.933633237Z'
revisionId: 000009-8be
serviceAccount: projects/PROJECT_NAME/serviceAccounts/SA_NAME@PROJECT_NAME.iam.gserviceaccount.com
sourceContents:
[...]
state: ACTIVE
updateTime: '2022-11-18T19:44:05.171793128Z'

Der Wert cryptokeyName ist die Ressourcen-ID des Cloud KMS-Schlüssels, der zum Sichern des Workflows und seiner Ausführung verwendet wird.

CMEK für einen Workflow deaktivieren

Sie können CMEK für einen Workflow deaktivieren, sodass er nicht mehr den zugehörigen Cloud KMS-Schlüssel verwendet.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Workflows.

    Zur Seite "Workflows"

  2. Klicken Sie auf den Namen des Workflows, den Sie aktualisieren möchten.

    Die Seite Workflowdetails wird angezeigt.

  3. Klicken Sie auf Bearbeiten.

  4. Wenn Sie das Optionsfeld Vom Kunden verwalteter Verschlüsselungsschlüssel (CMEK) deaktivieren möchten, wählen Sie Von Google verwalteter Verschlüsselungsschlüssel aus.

  5. Klicken Sie auf Next (Weiter).

  6. Klicken Sie auf Bereitstellen, um die Änderungen zu speichern und den aktualisierten Workflow bereitzustellen.

gcloud

gcloud workflows deploy WORKFLOW_NAME \
    --source=SOURCE_FILE \
    --clear-kms-key \
    --service-account=SERVICE_ACCOUNT

Dadurch wird CMEK für die aktuelle Workflowversion deaktiviert und alle nachfolgenden Ausführungen werden ohne CMEK-Verschlüsselung erstellt. Vorhandene Workflowüberarbeitungen und -ausführungen bleiben mit den Schlüsseln verschlüsselt, mit denen sie zuvor verschlüsselt wurden.

Cloud KMS deaktivieren

Wenn Sie den Datenzugriff auf Ihren Workflow oder Ihre Workflowausführungen widerrufen möchten, können Sie Cloud KMS so deaktivieren:

  • Deaktivieren oder destroy Sie die Primärschlüsselversion Ihres vom Kunden verwalteten Verschlüsselungsschlüssels. Wenn Sie eine CMEK-Schlüsselversion deaktivieren, wird der Zugriff auf alle Daten gesperrt, die durch diese Schlüsselversion geschützt sind. Das Löschen einer Schlüsselversion ist das dauerhafte Gegenstück zu dieser Aktion. Beide wirken sich nur auf die Workflows und Workflowausführungen aus, die mit dem jeweiligen Schlüssel verknüpft sind. Sie können keine neuen Ausführungen erstellen oder die Ressourcen ansehen, die mit dem deaktivierten oder gelöschten Schlüssel verknüpft sind. Alle aktiven Ausführungen schlagen fehl und es wird eine entsprechende Fehlermeldung angezeigt.

  • Widerrufen Sie die cloudkms.cryptoKeyEncrypterDecrypterIAM-Rolle aus dem Workflows-Dienst-Agent. Dies wirkt sich auf alle Workflows im Google Cloud-Projekt aus, die die Verschlüsselung mit CMEK unterstützen. Sie können keine neuen CMEK-integrierten Workflows und Ausführungen erstellen oder keine CMEK-verschlüsselten Ressourcen ansehen. Alle aktiven Ausführungen schlagen fehl und es wird eine entsprechende Fehlermeldung angezeigt.

Obwohl keiner der Vorgänge eine sofortige Zugriffssperre garantiert, werden IAM-Änderungen im Allgemeinen schneller übernommen. Weitere Informationen finden Sie unter Konsistenz von Cloud KMS-Ressourcen und Weitergabe von Zugriffsänderungen.

Fehlerbehebung

Bei der Verwendung von Cloud KMS mit Workflows können Fehler auftreten. In der folgenden Tabelle werden verschiedene Probleme und deren Behebung beschrieben.

Problem Beschreibung
Die Berechtigung „cloudkms.cryptoKeyVersions.useToEncrypt“ wurde verweigert Entweder ist der angegebene Cloud KMS-Schlüssel nicht vorhanden oder die Berechtigung ist nicht ordnungsgemäß konfiguriert.

Lösung:

Schlüsselversion ist nicht aktiviert Die angegebene Cloud KMS-Schlüsselversion wurde deaktiviert.

Lösung: Aktivieren Sie die Cloud KMS-Schlüsselversion wieder.

Schlüsselbundregion stimmt nicht mit der zu schützenden Ressource überein Die angegebene Region für den KMS-Schlüsselbund unterscheidet sich von der Region des Workflows.

Lösung: Verwenden Sie einen Cloud KMS-Schlüsselbund und einen geschützten Workflow aus derselben Region. (Hinweis: Sie können sich in verschiedenen Projekten befinden.) Weitere Informationen finden Sie unter Cloud KMS-Standorte und Standorte für Workflows.

Cloud KMS-Kontingentlimit überschritten Ihr Kontingentlimit für Cloud KMS-Anfragen wurde erreicht.

Lösung: Begrenzen Sie die Anzahl der Cloud KMS-Aufrufe oder erhöhen Sie das Kontingentlimit. Weitere Informationen finden Sie unter Cloud KMS-Kontingente.

Umgang mit einem nicht verfügbaren Schlüsselstatus

Wenn Cloud KMS aus irgendeinem Grund nicht verfügbar ist, können Workflows den Status Ihres Schlüssels möglicherweise nicht aus Cloud KMS abrufen.

Wenn der Schlüsselstatus nicht verfügbar ist, werden vom Workflow oder seiner Ausführung ein state: UNAVAILABLE-Wert und zugehörige Details im Feld stateError zurückgegeben.

Wenn der Schlüsselstatus während der Workflowausführung nicht mehr verfügbar ist (z. B. wenn während eines Callbacks eine Berechtigung widerrufen wird), tritt ein Laufzeitfehler auf. Dabei werden ein state: FAILED-Wert und zugehörige Details im Feld error zurückgegeben.

Preise

Durch diese Integration entstehen keine zusätzlichen Kosten über die Schlüsselvorgänge hinaus, die Ihrem Google Cloud-Projekt in Rechnung gestellt werden. Aktuelle Preisinformationen finden Sie unter Cloud KMS-Preise.