Pub/Sub verschlüsselt standardmäßig inaktive Kundendaten. Pub/Sub übernimmt die Verschlüsselung für Sie, ohne dass Sie weitere Maßnahmen ergreifen müssen. 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 Pub/Sub verwenden. Mit Cloud KMS-Schlüsseln haben Sie die Kontrolle über Schutz level, Speicherort, Rotationszeitplan, Nutzungs- und Zugriffsberechtigungen sowie über kryptografische Grenzen. Mit Cloud KMS können Sie außerdem die Schlüsselnutzung verfolgen, 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 Pub/Sub-Ressourcen der Verwendung der Google-Standardverschlüsselung. Weitere Informationen zu Ihren Verschlüsselung soptionen finden Sie unter Kundenverwaltete Verschlüsselungsschlüssel (CMEK).
CMEK mit Cloud KMS Autokey
Sie können CMEKs manuell erstellen, um Ihre Pub/Sub Ressourcen zu schützen, oder dazu Cloud KMS Autokey verwenden. Mit Autokey werden Schlüsselbunde und Schlüssel bei Bedarf generiert, um die Ressourcenerstellung in Pub/Sub zu unterstützen. Dienst-Agents, die die Schlüssel für Verschlüsselungs- und Entschlüsselungsvorgänge verwenden, werden erstellt, falls sie noch nicht vorhanden sind, und erhalten dann die erforderlichen IAM-Rollen (Identity and Access Management). Weitere Informationen finden Sie unter Übersicht: Autokey.
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 Nutzung von Cloud KMS für CMEK kann je nach Nutzungsmuster zusätzliche Kosten verursachen.
Jede Nachricht wird in den folgenden Zuständen und auf den folgenden Ebenen verschlüsselt:
-
- Hardware-Ebene
- Infrastrukturebene
- Anwendungsebene:
Auf der Anwendungsebene verschlüsselt Pub/Sub eingehende Nachrichten einzeln, sobald die Nachricht empfangen wird. Diese Implementierung fügt folgende Funktionen hinzu:
- Nachrichten werden über interne Rechenzentrumslinks verschlüsselt
- Aktiviert kundenverwaltete Verschlüsselungsschlüssel (CMEK)
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.
Hinweis
Sie können CMEK für Pub/Sub über die Google 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 dazu finden Sie unter Schlüssel bund erstellen und Schlüssel erstellen.
Da Pub/Sub-Ressourcen global sind, empfehlen wir Ihnen dringend, globale Cloud KMS-Schlüssel zu verwenden, um CMEK-fähige Themen zu konfigurieren. Abhängig von den Standorten der Publisher und Abonnenten eines Themas kann die Verwendung eines regionalen Cloud KMS-Schlüssels zu unnötigen Abhängigkeiten von regionenübergreifenden Netzwerkverbindungen führen.
Erforderliche Rollen und Berechtigungen
Pub/Sub verwendet einen Google 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 standardmäßig nicht auf der Dienstkonten Seite in der Google Cloud Console sichtbar.
Der Pub/Sub-Dienst-Agent hat das Format service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.
Pub/Sub benötigt bestimmte Berechtigungen, um Daten mit CMEK zu verschlüsseln und zu entschlüsseln.
Führen Sie die folgenden Schritte aus, um den erforderlichen Zugriff einzurichten:
Gewähren Sie dem Pub/Sub-Dienst-Agent die Rolle „Cloud KMS Crypto Key Encrypter/Decrypter“ (
roles/cloudkms.cryptoKeyEncrypterDecrypter).gcloud kms keys add-iam-policy-binding CLOUD_KMS_KEY_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypterErsetzen 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 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 Identity and Access Management-Rollen 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 Google Cloud Console oder die gcloud CLI konfigurieren.
Console
So erstellen Sie ein Thema mit CMEK:
Öffnen Sie in der Google Cloud Console die Pub/Sub-Themen-Seite.
Klicken Sie auf Thema erstellen.
Geben Sie im Feld Themen-ID eine ID für das Thema ein.
Weitere Informationen zum Benennen von Themen finden Sie in den Benennungsrichtlinien.
Klicken Sie unter Verschlüsselung auf Cloud KMS-Schlüssel.
Wählen Sie den Schlüsseltyp aus. Wenn das Drop-down-Menü Vom Kunden verwalteten Schlüssel auswählen nicht angezeigt wird, prüfen Sie, ob Sie die Cloud KMS API für das Projekt aktiviert haben.
Klicken Sie auf Thema erstellen.
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
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.
-
Führen Sie den
gcloud pubsub topics createBefehl aus, um ein Thema mit CMEK zu erstellen:gcloud pubsub topics create TOPIC_ID --topic-encryption-key=ENCRYPTION_KEY
Ersetzen Sie Folgendes:
-
TOPIC_ID: Die ID oder der Name des Themas.
Weitere Informationen zum Benennen eines Themas finden Sie unter Richtlinien für die Benennung eines Themas, Abos, Schemas oder Snapshots.
-
ENCRYPTION_KEY: Die ID des CMEK, der für das Thema verwendet werden soll.
Das Format dafür ist
projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.
-
CMEK-Thema manuell aktualisieren
Sie können den mit einem Pub/Sub-Thema verknüpften CMEK hinzufügen, ändern oder entfernen. Sie können die gcloud CLI verwenden, um den CMEK zu aktualisieren. Diese Änderung gilt jedoch nicht rückwirkend.
Nachrichten, die vor der Änderung des Schlüssels im Thema veröffentlicht wurden, bleiben mit dem ursprünglichen Schlüssel verschlüsselt, unabhängig davon, ob es sich um einen CMEK oder Google-owned and Google-managed encryption keyhandelte. Wenn Sie den CMEK eines Themas ändern, werden zuvor veröffentlichte Nachrichten nicht neu verschlüsselt. Diese Nachrichten bleiben mit dem Schlüssel geschützt, mit dem sie ursprünglich verschlüsselt wurden. Daher können Nachrichtendaten in einem Thema je nach Aufbewahrungsdauer für Nachrichten, die für das Thema oder eines seiner Abos angegeben wurde, bis zu 31 Tage lang vom vorherigen Schlüssel abhängig sein.
Pub/Sub hat einen Caching-Mechanismus für Schlüssel, der etwa 30 Minuten lang aktiv ist. Es kann bis zu dieser Zeit dauern, bis Pub/Sub einen neuen Schlüssel erkennt und verwendet, der manuell in der Themenkonfiguration geändert wurde.
Cloud KMS-Schlüsselrotation in Pub/Sub
Änderungen an der Schlüsselkonfiguration wie die Schlüsselrotation in Cloud KMS lösen nicht direkt die Erstellung von Datenverschlüsselungsschlüsseln in Pub/Sub aus. Es kann bis zu 12 Stunden dauern, bis Pub/Sub neue Schlüsselversionen zum Verschlüsseln von Nachrichtendaten verwendet.
Wie bei manuellen Konfigurationsänderungen an den Verschlüsselungseinstellungen in Pub/Sub gelten diese Änderungen nicht rückwirkend für Nachrichten, die in der Vergangenheit veröffentlicht wurden. Vorhandene Nachrichten werden weiterhin mit früheren Versionen des kryptografischen Schlüssels geschützt. Diese Nachrichten bleiben mit dem Schlüssel geschützt, mit dem sie ursprünglich verschlüsselt wurden. Daher können Nachrichtendaten in einem Thema je nach Aufbewahrungsdauer für Nachrichten, die für das Thema oder eines seiner Abos angegeben wurde, bis zu 31 Tage lang von der vorherigen Schlüsselversion abhängig sein.
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.
Preise und Kosten
Für die folgenden Pub/Sub-Anfragen fallen für die Verwendung von CMEK Gebühren für den Zugriff auf den Cloud KMS-Dienst an, basierend auf den Pub/Sub-Preisen:
Für jedes CMEK-Thema wird ein neuer DEK verschlüsselt und alle sechs Stunden gespeichert.
Der Schlüssel wird verwendet, um DEKs alle sechs Minuten zu entschlüsseln. Die Entschlüsselung erfolgt dreimal, einmal für jede Zone in der Region, in der der Pub/Sub-Dienst ausgeführt wird.
Betrachten Sie beispielsweise ein Thema mit:
Mindestens einem Abo
Publisher- und Abonnentenclients in derselben Region
Die Anzahl der kryptografischen Vorgänge in Cloud KMS kann so geschätzt werden:
1 key access for ENCRYPT * (30 days / month * 24 hours / day) / 6 hours + 3 key accesses for DECRYPT * (30 days / month * 24 hours / day * 60 minutes / hour ) / 6 minutes = 21,720 Cloud KMS key access events
In der Praxis können Schlüssel je nach Zugriffsmustern mehr oder weniger häufig abgerufen werden. Verwenden Sie diese Zahlen nur als Schätzungen.
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_countsubscription/pull_request_countsubscription/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.
Der Cloud KMS-Schlüssel ist möglicherweise deaktiviert. Weitere Informationen finden Sie unter Schlüssel deaktivieren und neu aktivieren auf dieser Seite.
Wenn Sie extern verwaltete Schlüssel über Cloud EKM verwenden, siehe die Cloud EKM-Fehlerreferenz.
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_messagesprüfen.subscription/oldest_unacked_message_ageauf 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:
Empfohlen:Deaktivieren Sie den Cloud KMS-Schlüssel, den Sie dem Thema mit Pub/Sub zugeordnet haben. Dieser Ansatz betrifft nur die Pub/Sub-Themen und -Abos, die mit diesem bestimmten Schlüssel verknüpft sind.
Widerrufen Sie die Rolle Pub/Sub CryptoKey-Verschlüsseler/Entschlüsseler aus dem Pub/Sub-Dienstkonto (
service-$PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com) mit IAM. Dieser Ansatz betrifft alle Pub/Sub-Themen des Projekts und die Abos, die Nachrichten enthalten, die mit CMEK verschlüsselt wurden.
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 Zustellung wahrscheinlich nicht wesentlich unterbrechen, hat eine längere Nichtverfügbarkeit von Cloud KMS denselben Effekt wie die Sperrung von Schlüsseln.