Kundenverwaltete Verschlüsselungsschlüssel verwenden

Standardmäßig verschlüsselt Cloud Tasks inaktive Daten. Google Cloud verwaltet diese Standardverschlüsselung, sodass von Ihrer Seite keine weiteren Maßnahmen erforderlich sind.

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 Cloud Tasks verwenden. Ihre Aufgabe und die zugehörigen inaktiven Daten (Text und Header) 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

Wenn Sie CMEK in Cloud Tasks aktivieren, aktivieren Sie ihn für eine Region. Wenn diese Option aktiviert ist, werden der Text und der Header von Aufgaben, die in dieser Region erstellt wurden, im Ruhezustand mit Ihrem Schlüssel geschützt. Wenn eine Aufgabe bei aktiviertem CMEK erstellt wurde und der Schlüssel später deaktiviert wird (durch Deaktivieren oder Löschen des Schlüssels oder durch Deaktivieren von CMEK), wird die Task mit Ihrem Schlüssel verschlüsselt, kann aber nicht ausgeführt werden.

Aufgaben sind in den folgenden Fällen nicht durch einen CMEK geschützt:

  • Aufgabe wurde erstellt, bevor CMEK aktiviert wurde
  • Aufgabe befindet sich nicht in der Region, für die der CMEK aktiviert ist
  • Aufgabe ist von einer Kompatibilitätsbeschränkung betroffen

Kompatibilitätsbeschränkungen

Die Cloud Tasks-Einbindung in CMEK unterstützt Folgendes nicht:

  • google-gax-Versionen unter 4.0.0: Das NPM-Paket google-gax für Node.js wird in Versionen unter 4.0.0 nur eingeschränkt unterstützt. Bei diesen Versionen wird CMEK nur in der Region us-central1 unterstützt. Auch wenn Sie nur Aufgaben in dieser Region haben, sollten Sie ein Upgrade auf Version 4.0.0 oder höher ausführen.

  • Integrierter App Engine-Aufgabenwarteschlangendienst: Aufgaben, die mit dem integrierten Aufgabenwarteschlangen-Dienst von App Engine erstellt wurden, sind nicht durch CMEK geschützt, auch wenn sie sich in einer Region befinden, für die er aktiviert ist. Durch das Aktivieren von CMEK wird das Erstellen oder Ausführen (z. B. Ausführen oder Löschen) dieser Aufgaben nicht verhindert.

  • Pull-Warteschlangen:Wenn Sie CMEK aktivieren, können Sie Aufgaben für Pull-Warteschlangen erstellen und ausführen. Diese Aufgaben sind jedoch nicht durch CMEK geschützt. Pull-Warteschlangen sind ungewöhnlich. Führen Sie den folgenden gcloud CLI-Befehl auf Ihrem Terminal aus, um zu prüfen, ob die Warteschlange eine Pull-Warteschlange ist:

    gcloud tasks queues describe QUEUE_NAME
    

    Ersetzen Sie QUEUE_NAME durch den Namen der Warteschlange.

    Wenn type den Wert pull hat, ist die Warteschlange eine Pull-Warteschlange. Wenn der aufgeführte type den Wert push hat, wirkt sich diese Einschränkung nicht auf Aufgaben in Ihrer Warteschlange aus.

  • Routing auf Warteschlangenebene:Wenn CMEK aktiviert ist, können Sie kein Routing auf Warteschlangenebene anwenden. Wenn das Routing auf Warteschlangenebene aktiviert ist, können Sie CMEK nicht aktivieren. So prüfen Sie, ob das Routing auf Warteschlangenebene aktiviert ist:

    1. Führen Sie den folgenden gcloud CLI-Befehl in Ihrem Terminal aus:

      gcloud tasks queues describe QUEUE_NAME
      Ersetzen Sie QUEUE_NAME durch den Namen der Warteschlange.

    2. Suchen Sie in der Ausgabe nach dem Feld httpTarget und prüfen Sie, ob uriOverride festgelegt wurde. Wenn host angegeben ist, ist für die Warteschlange das Routing auf Warteschlangenebene aktiviert und sie ist nicht mit CMEK kompatibel. Informationen zum Entfernen des Routings auf Warteschlangenebene finden Sie unter Routing auf Warteschlangenebene aktualisieren oder entfernen. Wenn in der Ausgabe nicht uriOverride mit einem festgelegten host-Wert angezeigt wird, verwendet die Warteschlange kein Routing auf Warteschlangenebene.

  • Aufgaben-TTL: Wenn CMEK aktiviert ist, können Sie task_ttl nicht auf mehr als 60 Tage festlegen. Wenn task_ttl auf mehr als 60 Tage festgelegt ist, können Sie CMEK nicht aktivieren.

Hinweise

Führen Sie die folgenden Schritte aus, bevor Sie einen CMEK in Cloud Tasks verwenden:

  1. Aktivieren Sie die APIs.

    Console

    1. Cloud KMS and Cloud Tasks 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. Legen Sie Ihr Standardprojekt fest. Dies sollte das Projekt sein, das die Cloud Tasks-Ressourcen enthält, die Sie mit CMEK schützen möchten. Wenn Sie einen Befehl in einem anderen Projekt ausführen müssen, z. B. in dem Projekt, das Ihre Cloud KMS-Ressourcen enthält, enthält diese Seite das Flag --project in den gcloud CLI-Befehl und teilt Ihnen mit, welches Projekt Sie angeben müssen.

      gcloud config set project PROJECT_ID
      

      Ersetzen Sie PROJECT_ID durch die ID des Projekts, das Ihre Cloud Tasks-Ressourcen enthält.

    3. gcloud-Komponenten aktualisieren.

      gcloud components update
      

    4. Aktivieren Sie die Cloud KMS und Cloud Tasks APIs für das Projekt, in dem Ihre Verschlüsselungsschlüssel gespeichert werden.

      gcloud services enable cloudkms.googleapis.com cloudtasks.googleapis.com 
      --project=PROJECT_ID

      Ersetzen Sie PROJECT_ID durch die ID des Projekts, in dem Ihre Verschlüsselungsschlüssel gespeichert werden. Dies kann dasselbe Projekt wie Ihre Cloud Tasks-Ressourcen sein. Wenn Sie den Zugriff auf Ihre Cloud KMS-Schlüssel jedoch einschränken möchten, sollten Sie Cloud KMS in einem separaten Projekt einrichten.

  2. Cloud KMS generiert Cloud-Audit-Logs, wenn Schlüssel aktiviert oder deaktiviert sind oder von Cloud Tasks-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.

  3. Rufen Sie Identity and Access Management-Rollen ab.

    Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zur Verwendung von CMEK mit Cloud Tasks benötigen:

    • Aktivieren oder deaktivieren Sie CMEK: roles/cloudtasks.admin
    • Verwendeten Schlüssel ansehen: roles/cloudtasks.viewer

    Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

    Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

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

Wenn Sie bereits einen Schlüsselbund in derselben Region wie Ihre Cloud Tasks-Ressourcen haben und diesen Schlüssel und Schlüsselbund verwenden möchten, überspringen Sie diesen Abschnitt. Folgen Sie andernfalls dieser Anleitung, um Ihren Cloud KMS-Schlüssel und Ihren Schlüsselbund zu erstellen.

  1. Erstellen Sie einen Schlüsselbund.

    • Der Schlüsselbund muss sich in der Region befinden, die die Cloud Tasks-Ressourcen enthält, die Sie schützen möchten. Weitere Informationen finden Sie unter Cloud KMS-Standorte und Cloud Tasks-Standorte.

    • Der Schlüsselbund und die CMEK-geschützten Cloud Tasks-Ressourcen können sich im selben Projekt befinden. Wenn Sie jedoch den Zugriff auf Ihre Cloud KMS-Schlüssel beschränken möchten, sollten Sie Cloud KMS in einem separaten Projekt einrichten.

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

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 Cloud Tasks aktivieren.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Schlüsselverwaltung auf und wählen Sie den Tab Schlüsselinventar aus.

    Zur Seite „Wichtiges Inventar“

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

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

gcloud

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

    gcloud kms keys list --keyring=KEY_RING --location=LOCATION --project=PROJECT_ID
    

    Ersetzen Sie Folgendes:

    • KEY_RING: der Name des Schlüsselbunds
    • LOCATION: Region des Schlüsselbunds
    • PROJECT_ID: die ID des Projekts, das den Schlüsselbund enthält

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

    NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    

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

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

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Identity and Access Management“ auf.

    IAM aufrufen

  2. Klicken Sie auf das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen.

  3. Suchen Sie das Cloud Tasks-Dienstkonto. Geben Sie dazu cloudtasks.iam.gserviceaccount.com in den Filter ein.

    Das Cloud Tasks-Dienstkonto hat das Format service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com.

  4. Klicken Sie auf das Stiftsymbol Hauptkonto bearbeiten.

  5. Klicken Sie im angezeigten Bereich auf Weitere Rolle hinzufügen.

  6. Suchen Sie nach der Rolle Cloud KMS CryptoKey Encrypter/Decrypter und wählen Sie sie aus.

  7. Klicken Sie auf Speichern.

gcloud

gcloud kms keys add-iam-policy-binding KEY_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com \
    --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Ersetzen Sie Folgendes:

  • KEY_ID: die voll qualifizierte Ressourcen-ID für Ihren Schlüssel. Eine Anleitung dazu finden Sie unter ID für einen Cloud KMS-Schlüssel abrufen. Geben Sie keine Schlüsselversionsnummer an. Wenn Sie eine Schlüsselversionsnummer angeben, schlägt dieser Befehl möglicherweise fehl.
  • PROJECT_NUMBER: Ihre Google Cloud-Projektnummer. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud Console oder durch Ausführen des folgenden Befehls:

    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 eine Aufgabe in der CMEK-fähigen Region die 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 auf diese Daten zugegriffen werden. In diesem Dokument finden Sie Informationen unter Cloud KMS deaktivieren.

CMEK für Cloud Tasks aktivieren

Sie können CMEK über die API oder die gcloud CLI aktivieren. Für Cloud Tasks wird CMEK nach Region aktiviert. Sie wird nicht durch einzelne Aufgaben aktiviert. Wenn CMEK für eine bestimmte Region in Cloud Tasks aktiviert ist, werden alle Aufgaben in dieser Region durch CMEK geschützt.

API

Sie können CMEK durch Aufrufen der Methode Update CMEK config aktivieren. Die Cloud Tasks API bietet die Methode Update CMEK config sowohl in der REST API als auch in der RPC API:

gcloud

Verwenden Sie den folgenden Befehl, um CMEK über die Google Cloud CLI zu aktivieren:

gcloud tasks cmek-config update --location=LOCATION --kms-key-name=KEY_ID

Ersetzen Sie Folgendes:

  • LOCATION: die Region Ihrer Cloud Tasks-Ressource
  • KEY_ID: die voll qualifizierte Ressourcen-ID für Ihren Schlüssel. Eine Anleitung dazu finden Sie unter ID für einen Cloud KMS-Schlüssel abrufen. Geben Sie keine Schlüsselversionsnummer an. Wenn Sie eine Schlüsselversionsnummer angeben, schlägt dieser Befehl möglicherweise fehl.

Folgen Sie der Anleitung im Abschnitt Verwendeten Schlüssel identifizieren, um zu prüfen, ob der Schlüssel erfolgreich aktiviert wurde.

Für vorhandene Aufgaben aktivieren

CMEK schützt keine Aufgaben, die vor der Aktivierung von CMEK für Cloud Tasks erstellt wurden. So schützen Sie bereits vorhandene Aufgaben mit CMEK:

  1. Aktivieren Sie CMEK (siehe Abschnitt zum Aktivieren von CMEK).
  2. Vorhandene Aufgaben ersetzen Dafür gibt es im Wesentlichen zwei Möglichkeiten. Die beste Vorgehensweise hängt davon ab, was Ihnen wichtig ist:

    • Kontinuierliche Ausführung: Damit eine kontinuierliche Ausführung sichergestellt wird, also mindestens eine Übermittlung, können Sie die Aufgabe zuerst neu erstellen und dann die vorhandene Aufgabe löschen, nachdem Sie überprüft haben, ob die neue Aufgabe wie erwartet funktioniert. Dies kann zu doppelten Ausführungen führen, da sowohl die alte als auch die neue Aufgabe ausgeführt werden kann, bevor Sie die alte Aufgabe löschen.

    • Verhinderung von doppelten Einträgen:Um doppelte Ausführungen (höchstens einmal) zu verhindern, können Sie zuerst die alte Aufgabe löschen und dann neu erstellen. Dies kann dazu führen, dass Ausführungen verloren gehen, da zwischen dem Löschen der alten Aufgabe und dem Erstellen der neuen Aufgabe viel Zeit verstrichen ist.

Verwendeten Schlüssel identifizieren

Führen Sie den folgenden gcloud CLI-Befehl in Ihrem Terminal aus, um den CMEK-Schlüssel zu identifizieren, der für Ihre Cloud Tasks-Ressourcen verwendet wird:

gcloud tasks cmek-config describe --location=LOCATION

Ersetzen Sie LOCATION durch die Region Ihrer Cloud Tasks-Ressourcen.

Wenn keine Ausgabe vorhanden ist, ist kein CMEK für den angegebenen Standort konfiguriert.

CMEK für Cloud Tasks deaktivieren

Sie können CMEK über die API oder die gcloud CLI deaktivieren. Für Cloud Tasks ist CMEK nach Region deaktiviert. Sie wird nicht durch einzelne Aufgaben deaktiviert. Wenn CMEK für eine bestimmte Region in Cloud Tasks deaktiviert ist, werden Aufgaben in dieser Region nicht durch CMEK geschützt.

Das Deaktivieren von CMEK wirkt sich auf Aufgaben aus, die in der Zukunft erstellt wurden, nicht auf bereits in der Vergangenheit erstellte Aufgaben:

  • Neue Aufgaben: sind nicht durch CMEK geschützt.
  • Bereits vorhandene Aufgaben:Aufgaben, die bei aktiviertem CMEK erstellt wurden, bleiben verschlüsselt und werden so lange ausgeführt, wie der Cloud KMS-Schlüssel aktiv ist.

API

Sie können CMEK deaktivieren, indem Sie die Methode Update CMEK config aufrufen und den Cloud KMS-Schlüssel löschen, indem Sie ihn durch einen leeren String ersetzen. Die Cloud Tasks API bietet die Methode Update CMEK config sowohl in der REST API als auch in der RPC API:

gcloud

Verwenden Sie den folgenden Befehl, um CMEK über die Google Cloud CLI zu deaktivieren:

gcloud tasks cmek-config update --location=LOCATION --clear-kms-key

Ersetzen Sie Folgendes:

  • LOCATION: Die Region Ihrer Cloud Tasks-Ressource.

Cloud KMS entfernen

Wenn Sie den Datenzugriff auf Ihre Aufgaben widerrufen möchten, können Sie Cloud KMS entfernen. Dafür gibt es drei Möglichkeiten:

  • Deaktivieren Sie den vom Kunden verwalteten Verschlüsselungsschlüssel. Wenn Sie einen CMEK-Schlüssel deaktivieren, wird der Zugriff auf alle Daten ausgesetzt, die durch diese Schlüsselversion geschützt sind, solange der Schlüssel deaktiviert ist. Sie können mit einem deaktivierten Schlüssel weder auf Aufgaben zugreifen noch sie erstellen. Der Versuch, eine CMEK-geschützte Aufgabe auszuführen, während der Schlüssel deaktiviert ist, führt in Cloud Logging zum Fehler UNKNOWN. Sie können den Schlüssel bei Bedarf später wieder aktivieren. Wenn Sie einen vom Kunden verwalteten Verschlüsselungsschlüssel deaktivieren, kann es bis zu 5 Minuten dauern, bis die Änderung wirksam wird.

  • Löschen Sie den vom Kunden verwalteten Verschlüsselungsschlüssel. Durch das Löschen eines CMEK-Schlüssels wird der Zugriff auf alle Daten dauerhaft unterbunden, die mit dieser Schlüsselversion geschützt sind. Sie können mit einem gelöschten Schlüssel weder auf Aufgaben zugreifen noch sie erstellen. Wenn eine Aufgabe bei aktiviertem CMEK erstellt wurde und der Schlüssel später gelöscht wird, wird die Aufgabe mit Ihrem Schlüssel verschlüsselt, kann aber nicht ausgeführt werden. Wenn die Aufgabe auszuführen versucht, protokolliert Cloud Logging den Fehler UNKNOWN. Wenn Sie einen vom Kunden verwalteten Verschlüsselungsschlüssel löschen, kann es bis zu 5 Minuten dauern, bis die Änderung wirksam wird.

  • Widerrufen Sie die cloudkms.cryptoKeyEncrypterDecrypterIAM-Rolle für den Cloud Tasks-Dienst-Agent. Dies wirkt sich auf alle Aufgaben im Google Cloud-Projekt aus, die die Verschlüsselung mit CMEK unterstützen. Sie können keine neuen CMEK-integrierten Aufgaben erstellen und keine CMEK-verschlüsselten Ressourcen ansehen.

Obwohl keiner dieser Vorgänge einen sofortigen Zugriffswiderruf garantiert, werden IAM-Änderungen in der Regel schneller wirksam. Weitere Informationen finden Sie unter Konsistenz von Cloud KMS-Ressourcen und Weitergabe von Zugriffsänderungen.

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.