Nachrichtenverschlüsselung konfigurieren

Pub/Sub verschlüsselt inaktive Kundendaten standardmäßig. Pub/Sub übernimmt die Verschlüsselung für Sie, ohne dass Sie zusätzliche Maßnahmen ergreifen müssen. Diese Option wird Google-Standardverschlüsselung genannt.

Wenn Sie Ihre Verschlüsselungsschlüssel selbst verwalten möchten, können Sie vom Kunden verwaltete Verschlüsselungsschlüssel (CMEKs, Customer-Managed Encryption Keys) in Cloud KMS mit CMEK-integrierten Diensten wie Pub/Sub 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 und zu verwalten, das die symmetrischen Schlüsselverschlüsselungsschlüssel (Key Encryption Keys, KEKs) zum Schutz Ihrer Daten enthält, können Sie diese auch über Cloud KMS steuern und verwalten.

Nachdem Sie Ihre Ressourcen mit CMEKs eingerichtet haben, ähnelt der Zugriff auf Ihre Pub/Sub-Ressourcen der Verwendung der Google-Standardverschlüsselung. Weitere Informationen zu Ihren Verschlüsselungsoptionen finden Sie unter Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK).

Funktionsweise von CMEK mit Pub/Sub

Wenn Sie Pub/Sub mit CMEK konfigurieren, verschlüsselt der Dienst alle Daten automatisch mit dem angegebenen Schlüssel. Die Cloud KMS-Nutzung für CMEK kann je nach Nutzungsmuster zusätzliche Kosten verursachen.

Jede Nachricht wird in den folgenden Status und Ebenen verschlüsselt:

  • Im Ruhezustand

    • Hardware-Ebene
    • Infrastrukturebene
    • Anwendungsebene:
  • Unterwegs

Auf der Anwendungsebene verschlüsselt Pub/Sub eingehende Nachrichten einzeln, sobald die Nachricht empfangen wird. Diese Implementierung fügt folgende Funktionen hinzu:

Umschlagverschlüsselungsmuster

Pub/Sub verwendet das Envelope-Verschlüsselungsmuster mit CMEK. Bei diesem Ansatz werden die Nachrichten nicht von Cloud KMS verschlüsselt. Cloud KMS wird stattdessen zum Verschlüsseln von Data Encryption Keys (DEKs) verwendet, die von Pub/Sub für jedes Thema erstellt wurden. Diese DEKs werden von Pub/Sub nur verschlüsselt oder verpackt gespeichert. Bevor ein DEK gespeichert wird, sendet der Dienst den DEK an Cloud KMS, um mit dem im Thema angegebenen Schlüsselverschlüsselungsschlüssel KEK verschlüsselt zu werden. Etwa alle sechs Stunden wird für jedes Thema ein neuer DEK generiert.

Bevor Pub/Sub Nachrichten für ein Abo veröffentlicht, werden sie mit dem neuesten DEK verschlüsselt, der für das Thema generiert wurde. Pub/Sub entschlüsselt die Nachrichten kurz vor der Zustellung an Abonnenten.

CMEK mit Pub/Sub konfigurieren

Sie können CMEK manuell oder mit Autokey konfigurieren.

Hinweise

Sie können CMEK für Pub/Sub über die Trusted Cloud Console oder die Google Cloud CLI konfigurieren.

Führen Sie die folgenden Schritte aus:

  • Aktivieren Sie die Cloud KMS API.

  • Erstellen Sie einen Schlüsselbund und einen Schlüssel in Cloud KMS. Schlüssel und Schlüsselbunde können nicht gelöscht werden.

Eine Anleitung zum Ausführen dieser Aufgaben finden Sie unter Schlüsselbund erstellen und Schlüssel erstellen.

Erforderliche Rollen und Berechtigungen

Pub/Sub verwendet einen Trusted Cloud Dienst-Agent für den Zugriff auf Cloud KMS. Der Dienst-Agent wird für jedes Projekt intern von Pub/Sub verwaltet und ist in der Trusted Cloud -Konsole auf der Seite Dienstkonten standardmäßig nicht sichtbar.

Der Pub/Sub-Dienst-Agent hat das Format service-${PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com.

Pub/Sub erfordert bestimmte Berechtigungen zum Verschlüsseln und Entschlüsseln von Daten mit CMEK.

Führen Sie die folgenden Schritte aus, um den erforderlichen Zugriff einzurichten:

  • Weisen Sie dem Pub/Sub-Dienst-Agent die Rolle „Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler“ (roles/cloudkms.cryptoKeyEncrypterDecrypter) zu.

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

    Ersetzen Sie Folgendes:

    • CLOUD_KMS_KEY_NAME: Der Name des Cloud KMS-Schlüssels.

      Der Schlüssel hat das Format projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.

      Ein Beispiel dafür ist projects/test-project/locations/us-central1/keyRings/test-keyring/cryptoKeys/test-key.

    • PROJECT_NUMBER: Die Projektnummer des Pub/Sub-Projekts.

Weitere Informationen zum Zuweisen von IAM-Rollen (Identity and Access Management) finden Sie unter Rollen für eine Ressource zuweisen.

Thema manuell mit CMEK konfigurieren

Sie können CMEK für ein Thema manuell über die Trusted Cloud Console oder die gcloud CLI konfigurieren.

Konsole

So erstellen Sie ein Thema mit CMEK:

  1. Rufen Sie in der Trusted Cloud Console die Pub/Sub-Seite Themen auf.

    Themen aufrufen

  2. Klicken Sie auf Thema erstellen.

  3. Geben Sie im Feld Themen-ID eine ID für das Thema ein.

    Weitere Informationen zur Benennung von Themen finden Sie in den Benennungsrichtlinien.

  4. Klicken Sie unter Verschlüsselung auf Cloud KMS-Schlüssel.

  5. Wählen Sie den Schlüsseltyp aus. Wenn das Drop-down-Menü Vom Kunden verwalteten Schlüssel auswählen nicht angezeigt wird, müssen Sie die Cloud KMS API für das Projekt aktiviert haben.

  6. Klicken Sie auf Thema erstellen.

gcloud

Führen Sie den Befehl gcloud pubsub topics create aus, um ein Thema mit CMEK zu erstellen:

    gcloud pubsub topics create TOPIC_ID --topic-encryption-key=ENCRYPTION_KEY
    

Ersetzen Sie Folgendes:

CMEK-Thema manuell aktualisieren

Sie können den mit einem Pub/Sub-Thema verknüpften CMEK-Schlüssel ändern. Sie können die gcloud CLI verwenden, um den CMEK zu aktualisieren. Diese Änderung gilt jedoch nicht rückwirkend.

Nachrichten, die vor der Schlüsseländerung im Thema veröffentlicht wurden, bleiben mit dem ursprünglichen Schlüssel verschlüsselt. Wenn ein Thema ohne CMEK erstellt wurde, können Sie später einen hinzufügen. Vorhandene Nachrichten werden weiterhin mit der StandardeinstellungGoogle Cloud-powered encryption keysgeschützt. Wenn Sie den CMEK eines Themas ändern, werden zuvor veröffentlichte Nachrichten nicht neu verschlüsselt. Diese Nachrichten sind weiterhin mit dem Schlüssel geschützt, mit dem sie ursprünglich verschlüsselt wurden.

Pub/Sub hat einen Caching-Mechanismus für Schlüssel, der etwa 5 Minuten lang aktiv ist. Es kann bis zu dieser Dauer dauern, bis Pub/Sub die neue Schlüsselversion erkennt und verwendet.

Thema mit Cloud KMS Autokey konfigurieren

Weitere Informationen zur Verwendung von Cloud KMS Autokey mit Pub/Sub finden Sie unter Cloud KMS mit Autokey.

Audit-Logs

Cloud KMS erstellt Audit-Logs, wenn Keys aktiviert, deaktiviert oder von Pub/Sub zum Verschlüsseln und Entschlüsseln von Nachrichten verwendet werden. Dies ist bei Debugging-Problemen mit Veröffentlichungs- oder Lieferungsverfügbarkeit hilfreich.

Cloud KMS-Schlüssel werden Audit-Logs für Pub- und Sub-Themaressourcen angehängt. Pub/Sub enthält keine weiteren Cloud KMS-bezogenen Informationen.

Monitoring und Fehlerbehebung

Probleme mit dem Schlüsselzugriff können folgende Auswirkungen haben:

  • Verzögerungen bei der Nachrichtenübermittlung

  • Publish-Fehler

Beobachten Sie Fehler bei Veröffentlichungs- und Pull-Anfragen mithilfe der folgenden Messwerte, gruppiert nach response_class und response_code:

  • topic/send_request_count
  • subscription/pull_request_count
  • subscription/streaming_pull_response_count

StreamingPull-Antwort weist eine Fehlerrate von 100% auf. Dies ist ein Hinweis darauf, dass der Stream beendet wurde und nicht, dass Anfragen fehlschlagen. Suchen Sie nach dem Antwortcode FAILED_PRECONDITION, um StreamingPull zu beobachten.

Die Veröffentlichung und Zustellung von Nachrichten können aus verschiedenen Gründen mit FAILED_PRECONDITION-Fehlern fehlschlagen.

Bei Push-Abos gibt es keine Möglichkeit, CMEK-spezifische Zustellungsprobleme direkt zu erkennen. Stattdessen können Sie:

  • die Größe und das Alter des Rückstands eines Push-Abos mit subscription/num_unacked_messages prüfen.

  • subscription/oldest_unacked_message_age auf ungewöhnliche prüfen.

  • Veröffentlichungsfehler und CMEK-Audit-Logs verwenden, um Probleme zu erkennen.

Schlüssel deaktivieren und neu aktivieren

Es gibt zwei Möglichkeiten, zu verhindern, dass Pub/Sub Ihre Nachrichtendaten entschlüsselt:

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

Wenn Pub/Sub nicht auf einen Cloud KMS-Schlüssel zugreifen kann, tritt bei der Veröffentlichung und Zustellung von Nachrichten mit "StreamingPull" oder "pull" ein Fehler mit FAILED_PRECONDITION-Fehlern auf. Die Zustellung von Nachrichten an Push-Endpunkte wird beendet. Wenn Sie die Zustellung und Veröffentlichung fortsetzen möchten, stellen Sie den Zugriff auf den Cloud KMS-Schlüssel wieder her.

Sobald der Cloud KMS-Schlüssel für Pub/Sub verfügbar ist, ist die Veröffentlichung innerhalb von 12 Stunden verfügbar und die Nachrichtenzustellung wird innerhalb von 2 Stunden fortgesetzt.

Obwohl kurzzeitige Ausfälle von Cloud KMS von weniger als einer Minute die Veröffentlichung und Bereitstellung wahrscheinlich nicht wesentlich unterbrechen, hat eine längere Nichtverfügbarkeit von Cloud KMS denselben Effekt wie die Sperrung von Schlüsseln.