Kundenverwaltete Verschlüsselungsschlüssel verwenden

Cloud Tasks verschlüsselt ruhende Kundeninhalte standardmäßig. Die Verschlüsselung wird von Cloud Tasks übernommen. Weitere Maßnahmen Ihrerseits sind nicht erforderlich. Diese Option heißt Google-Standardverschlüsselung.

Wenn Sie Ihre Verschlüsselungsschlüssel selbst verwalten möchten, können Sie kundenverwaltete Verschlüsselungsschlüssel (CMEKs, Customer-Managed Encryption Keys) in Cloud KMS mit CMEK-integrierten Diensten wie Cloud Tasks verwenden. Mit Cloud KMS-Schlüsseln haben Sie die Kontrolle über Schutzlevel, Speicherort, Rotationszeitplan, Nutzungs- und Zugriffsberechtigungen sowie über kryptografische Grenzen. Mit Cloud KMS können Sie außerdem Audit-Logs aufrufen und den Lebenszyklus von Schlüsseln steuern. Statt es Google zu überlassen, die symmetrischen Schlüsselverschlüsselungsschlüssel (Key Encryption Keys, KEKs) zum Schutz Ihrer Daten zu besitzen und zu verwalten, können Sie diese auch über Cloud KMS steuern und verwalten.

Nachdem Sie Ihre Ressourcen mit CMEKs eingerichtet haben, ähnelt der Zugriff auf Ihre Cloud Tasks-Ressourcen der Verwendung der Google-Standardverschlüsselung. Weitere Informationen zu Ihren Verschlüsselungsoptionen finden Sie unter Kundenverwaltete Verschlüsselungsschlüssel (CMEK).

Mit CMEK geschützte Inhalte

Wenn Sie CMEK in Cloud Tasks aktivieren, aktivieren Sie es für eine Region. Wenn diese Option aktiviert ist, werden der Textkörper und die Kopfzeile von Aufgaben, die in dieser Region erstellt werden, im Ruhezustand mit Ihrem Schlüssel geschützt. Wenn ein Task erstellt wurde, während CMEK aktiviert war, und der Schlüssel später inaktiv gemacht wird (durch Deaktivieren oder Löschen des Schlüssels oder durch Deaktivieren von CMEK), wird der Task mit Ihrem Schlüssel verschlüsselt, kann aber nicht ausgeführt werden.

In den folgenden Fällen sind Aufgaben nicht mit CMEK geschützt:

  • Aufgabe wurde vor der Aktivierung von CMEK erstellt
  • Die Aufgabe befindet sich nicht in der Region, für die CMEK aktiviert ist.
  • Die Aufgabe ist von einer Kompatibilitätseinschränkung betroffen.

Einschränkungen bei der Kompatibilität

Die Cloud Tasks-Integration mit CMEK unterstützt Folgendes nicht:

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

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

  • Pull-Warteschlangen:Wenn Sie CMEK aktivieren, können Sie Aufgaben in 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 in Ihrem Terminal aus, um zu prüfen, ob Ihre Warteschlange eine Pull-Warteschlange ist:

    gcloud tasks queues describe QUEUE_NAME

    Ersetzen Sie QUEUE_NAME durch den Namen Ihrer Warteschlange.

    Wenn type als pull aufgeführt ist, handelt es sich bei Ihrer Warteschlange um eine Pull-Warteschlange. Wenn type als push aufgeführt ist, 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 die Weiterleitung 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 Ihrer Warteschlange.

    2. Suchen Sie in der Ausgabe nach dem Feld httpTarget und prüfen Sie, ob uriOverride festgelegt wurde. Wenn ein host angegeben ist, ist das Routing auf Warteschlangenebene für Ihre Warteschlange 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 uriOverride ohne host angezeigt wird, wird für Ihre Warteschlange kein Routing auf Warteschlangenebene verwendet.

  • TTL für Aufgaben:Wenn CMEK aktiviert ist, können Sie task_ttl nicht auf einen Wert über 60 Tage festlegen. Wenn Sie task_ttl auf einen Wert über 60 Tage festgelegt haben, können Sie CMEK nicht aktivieren.

Hinweis

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

  1. Aktivieren Sie die APIs.

    Console

    1. Aktivieren Sie die Cloud KMS API und die Cloud Tasks API.

      Rollen, die zum Aktivieren von APIs erforderlich sind

      Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen

      APIs aktivieren

    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 ein 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, wird auf dieser Seite das Flag --project im gcloud CLI-Befehl angegeben und Sie erfahren, 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. Aktualisieren Sie die gcloud-Komponenten:

      gcloud components update

    4. Aktivieren Sie die Cloud KMS API und die Cloud Tasks API 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. Um den Zugriff auf Ihre Cloud KMS-Schlüssel einzuschränken, sollten Sie jedoch Cloud KMS in einem separaten Projekt einrichten.

  2. Cloud KMS erstellt Cloud-Audit-Logs, wenn Schlüssel aktiviert, deaktiviert 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 Audit-Logging-Informationen in Cloud KMS.

  3. IAM-Rollen abrufen

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

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

    Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

    Sie können 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. Andernfalls können Sie so einen Cloud KMS-Schlüssel und -Schlüsselbund 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 den Zugriff auf Ihre Cloud KMS-Schlüssel jedoch einschrä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.

    Schlüsselinventar aufrufen

  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. Das 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: die 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
    

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-Verschlüsseler/Entschlüsseler zuweisen, damit er auf den Cloud KMS-Schlüssel zugreifen kann:

Console

  1. Rufen Sie in der Google Cloud Console die Seite IAM (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, indem Sie cloudtasks.iam.gserviceaccount.com in den Filter eingeben.

    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 Bereich, der geöffnet wird, auf Weitere Rolle hinzufügen.

  6. Suchen Sie nach der Rolle Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler 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 vollständig 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, kann dieser Befehl fehlschlagen.