In diesem Dokument wird beschrieben, wie Sie vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) für einen Google Cloud Managed Service for Apache Kafka-Cluster konfigurieren.
Managed Service for Apache Kafka verschlüsselt Ruhedaten standardmäßig mit Google-owned and Google-managed encryption keys . Für die Verwendung von Google-owned and Google-managed encryption keysist keine zusätzliche Einrichtung erforderlich.
CMEK
CMEKs sind Verschlüsselungsschlüssel, die Ihnen gehören und im Cloud Key Management Service (Cloud KMS) verwaltet und gespeichert werden. Wenn Sie mehr Kontrolle über die Verschlüsselungsschlüssel benötigen, die zum Schutz von ruhenden Daten in Managed Service for Apache Kafka verwendet werden, können Sie CMEKs verwenden.
Wenn Sie einen Managed Service for Apache Kafka-Cluster mit einem CMEK konfigurieren, verschlüsselt der Dienst automatisch alle Clusterdaten im Ruhezustand mit dem angegebenen Schlüssel. Die Cloud KMS-Nutzung für CMEK kann je nach Nutzungsmuster zusätzliche Kosten verursachen.
Ein CMEK, der einem Managed Service for Apache Kafka-Cluster zugeordnet ist, ist ein Schlüsselverschlüsselungsschlüssel (Key Encryption Key, KEK). Der KEK wird zum Verschlüsseln eines Datenverschlüsselungsschlüssels (Data Encryption Key, DEK) verwendet. Der DEK wird dann verwendet, um ruhende Daten auf nichtflüchtigen Speichern, die an Broker angehängt sind, und Daten im mehrstufigen Speicher in Cloud Storage zu lesen und zu schreiben.
Weitere Informationen zur Laufwerksverschlüsselung finden Sie unter Laufwerksverschlüsselung. Weitere Informationen zur Verschlüsselung in Cloud Storage finden Sie in der Cloud Storage-Dokumentation unter Vom Kunden verwaltete Verschlüsselungsschlüssel.
Schlüssel rotieren
Sie können einen Schlüssel rotieren, indem Sie eine neue Schlüsselversion erstellen und sie als primäre Version für den Schlüssel festlegen.
Für die an Broker angehängten Laufwerke wird der neue KEK erst nach einem Neustart des Brokers wirksam. Sie können einen rollierenden Neustart von Brokern erzwingen, indem Sie die Kapazitätskonfiguration eines Clusters aktualisieren. Sie können beispielsweise die RAM-Menge des Clusters ändern.
Alle neuen Dateien für Partitionen werden mit der neuen Primärschlüsselversion in den mehrstufigen Speicher geschrieben. Nachdem eine neue Version des primären Schlüssels ausgewählt wurde, kann es einige Minuten dauern, bis sie aktiv ist.
Managed Service for Apache Kafka-Cluster für CMEK konfigurieren
Sie können CMEK für einen Managed Service for Apache Kafka-Cluster mit derGoogle Cloud -Konsole oder der Google Cloud CLI konfigurieren.
Hinweise
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. Da Managed Service for Apache Kafka-Ressourcen regional sind, empfehlen wir, CMEKs in derselben Region wie den Kafka-Cluster zu erstellen.
Eine Anleitung dazu, wie Sie diese Aufgaben ausführen, finden Sie in der Schnellstartanleitung für Cloud KMS.
Erforderliche Rollen und Berechtigungen zum Konfigurieren von CMEK
Managed Service for Apache Kafka verwendet einen Google Cloud Dienst-Agent für den Zugriff auf Cloud KMS. Der Dienst-Agent für Ihr Google Cloud-Projekt wird automatisch erstellt, nachdem Sie Ihren ersten Managed Service for Apache Kafka-Cluster erstellt haben.
Der Dienst-Agent wird für jedes Projekt intern von Managed Service for Apache Kafka verwaltet und ist standardmäßig nicht auf der Seite Dienstkonten in der Google Cloud Console sichtbar.
Der Dienst-Agent für Managed Service for Apache Kafka hat das Format service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com.
Für Managed Service for Apache Kafka sind bestimmte Berechtigungen zum Verschlüsseln und Entschlüsseln von Daten mit CMEK erforderlich.
Führen Sie die folgenden Schritte aus, um den erforderlichen Zugriff einzurichten:
Optional: Erstellen Sie den Dienst-Agent für Managed Service for Apache Kafka manuell mit dem Befehl gcloud beta services identity create.
Wenn Sie in Ihrem Projekt bereits einen Cluster erstellt haben, ist der Dienst-Agent für Managed Service for Apache Kafka bereits in Ihrem Projekt erstellt und Sie können diesen Schritt überspringen.
gcloud beta services identity create \ --service=managedkafka.googleapis.com \ --project=PROJECT_IDErsetzen Sie PROJECT_ID durch Ihre Projekt-ID.
Weisen Sie dem Dienst-Agenten für Managed Service for Apache Kafka 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-managedkafka.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 dafür ist
projects/test-project/locations/us-central1/keyRings/test-keyring/cryptoKeys/test-key.PROJECT_NUMBER: Die Projektnummer des Managed Service for Apache Kafka-Projekts.
Weitere Informationen zum Zuweisen von IAM-Rollen finden Sie unter Rollen für eine Ressource zuweisen.
Cluster mit CMEK erstellen
Sie können die Google Cloud Console oder die gcloud CLI verwenden, um Ihre Verschlüsselungsschlüssel beim Erstellen Ihres Kafka-Clusters hinzuzufügen.
Enable the Apache Kafka for BigQuery, Compute Engine, Cloud DNS, and Cloud KMS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
Bevor Sie einen Cluster erstellen, sollten Sie die Dokumentation zu den Clustereigenschaften lesen.
So erstellen Sie einen Cluster mit CMEK:
Console
-
Rufen Sie in der Google Cloud Console die Seite Cluster auf.
- Wählen Sie Erstellen aus.
Die Seite Kafka-Cluster erstellen wird geöffnet.
- Geben Sie für Clustername einen String ein.
Weitere Informationen zum Benennen eines Clusters finden Sie unter Richtlinien zum Benennen einer Managed Service for Apache Kafka-Ressource.
- Geben Sie unter Standort einen unterstützten Standort ein.
Weitere Informationen zu unterstützten Standorten finden Sie unter Unterstützte Managed Service for Apache Kafka-Standorte.
- Geben Sie für die Kapazitätskonfiguration Werte für Arbeitsspeicher und vCPUs ein.
Das Verhältnis von vCPU zu Arbeitsspeicher muss zwischen 1:1 und 1:8 liegen.
Weitere Informationen zum Festlegen der Größe eines Managed Service for Apache Kafka-Clusters finden Sie unter Größe des Kafka-Clusters planen.
- Geben Sie unter Netzwerkkonfiguration die folgenden Details ein:
- Projekt: Das Projekt, in dem sich das Subnetzwerk befindet. Das Subnetz muss sich in derselben Region wie der Cluster befinden, das Projekt kann jedoch ein anderes sein.
- Netzwerk: Das Netzwerk, mit dem das Subnetz verbunden ist.
- Subnetzwerk: Der Name des Subnetzes.
- Subnetz-URI-Pfad: Dieses Feld wird automatisch ausgefüllt. Alternativ können Sie hier den Subnetzpfad eingeben. Der Name des Subnetzes muss das Format
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_IDhaben. - Klicken Sie auf Fertig.
- Optional: Sie können weitere Subnetze hinzufügen. Klicken Sie dazu auf Verbundenes Subnetz hinzufügen.
Sie können bis zu zehn weitere Subnetze hinzufügen.
- Wählen Sie unter Verschlüsselung die Option Cloud KMS-Schlüssel aus.
- Wählen Sie für Schlüsseltyp die Option Cloud KMS aus und geben Sie für Vom Kunden verwalteten Schlüssel auswählen den von Ihnen erstellten CMEK ein.
- Klicken Sie auf Erstellen.
gcloud
Führen Sie den Befehl
gcloud managed-kafka clusters createaus:gcloud managed-kafka clusters create CLUSTER_ID \ --location=LOCATION \ --cpu=CPU \ --memory=MEMORY \ --subnets=SUBNETS \ --encryption-key=CLOUD_KMS_KEY \
Ersetzen Sie Folgendes:
-
CLUSTER_ID: Die ID oder der Name des Clusters.
Weitere Informationen zum Benennen eines Clusters finden Sie unter Richtlinien zum Benennen einer Managed Service for Apache Kafka-Ressource.
-
LOCATION: Der Standort des Clusters.
Weitere Informationen zu unterstützten Standorten finden Sie unter Unterstützte Standorte für Managed Service for Apache Kafka.
-
CPU: Die Anzahl der virtuellen CPUs für den Cluster. Das Verhältnis von vCPU zu Arbeitsspeicher muss zwischen 1:1 und 1:8 liegen.
Weitere Informationen zum Festlegen der Größe eines Managed Service for Apache Kafka-Clusters finden Sie unter Größe des Kafka-Clusters planen.
-
MEMORY: Die Größe des Arbeitsspeichers für den Cluster. Verwenden Sie die Einheiten „MB“, „MiB“, „GB“, „GiB“, „TB“ oder „TiB“. Beispiel: „10 GiB“.
-
SUBNETS: Die Liste der Subnetze, mit denen eine Verbindung hergestellt werden soll. Trennen Sie mehrere Subnetzwerte durch Kommas.
Das Format des Subnetzes ist
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_ID. -
ENCRYPTION_KEY: ID des CMEK, der für den Cluster verwendet werden soll.
Das Format dafür ist
projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Clustererstellung bestätigen
Prüfen Sie mit dem Befehl gcloud managed-kafka clusters describe, ob der Cluster für CMEK konfiguriert ist.
gcloud managed-kafka clusters describe CLUSTER_ID \
--location=LOCATION
Die Ausgabe enthält den konfigurierten CMEK.
Audit-Logs
Cloud KMS erstellt Audit-Logs, wenn Schlüssel aktiviert, deaktiviert oder von Managed Service for Apache Kafka 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-IDs werden Audit-Logs für Managed Service for Apache Kafka-Clusterressourcen angehängt. Managed Service for Apache Kafka enthält keine weiteren Cloud KMS-bezogenen Informationen in Audit-Logs.
CMEK deaktivieren und wieder aktivieren
Es gibt zwei Möglichkeiten, CMEK zu deaktivieren. Sie haben folgende Möglichkeiten:
Deaktivieren Sie den Cloud KMS-Schlüssel, den Sie dem Cluster zugeordnet haben. Dieser Ansatz betrifft alle Cloud-Ressourcen, die mit diesem Schlüssel verknüpft sind.
Widerrufen Sie die Rolle „CryptoKey Encrypter/Decrypter“ aus dem Dienst-Agent für Managed Service for Apache Kafka (
service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com) mit Identity and Access Management (IAM). Dieser Ansatz betrifft alle Managed Service for Apache Kafka-Cluster im Projekt und die Nachrichten, die mit CMEK verschlüsselt wurden.
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.
Wenn Managed Service for Apache Kafka nicht auf einen Cloud KMS-Schlüssel zugreifen kann, schlägt die Veröffentlichung und Zustellung von Nachrichten mit Fehlern fehl. 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 Managed Service for Apache Kafka verfügbar ist, ist die Veröffentlichung innerhalb von 12 Stunden verfügbar und die Nachrichtenzustellung wird innerhalb von 2 Stunden fortgesetzt.
Obwohl kurzzeitige Cloud KMS-Ausfälle 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.
Beschränkungen
Die Zuordnung zwischen einem Cloud KMS-Schlüssel und einem Managed Service for Apache Kafka-Cluster ist unveränderlich. Sie können den mit einem Cluster verknüpften Schlüssel nicht ändern. Stattdessen können Sie den Schlüssel rotieren, indem Sie neue Versionen erstellen.
Wenn Sie eine nicht primäre Schlüsselversion deaktivieren, funktionieren lokale Laufwerke weiterhin ohne Änderungen. Jeder Broker lädt den neuen KEK beim Neustart herunter. Cloud Storage kann jedoch nicht auf Segmentdateien für Themen zugreifen, die mit der ursprünglichen Version verschlüsselt wurden. Das kann dazu führen, dass Nachrichten aus diesen Segmentdateien nicht genutzt werden können. Das bedeutet, dass Sie möglicherweise keine älteren Daten mehr abrufen können.
Wenn Sie die primäre Version eines Schlüssels deaktivieren, können die Broker keine neuen Segmentdateien in den mehrstufigen Speicher schreiben, was die Nutzung der lokalen Festplatte erhöht. Außerdem schlagen Broker-Neustarts fehl. Ein Neustart kann jederzeit sowohl von Ihnen proaktiv als auch durch eine vom Dienst initiierte Aktualisierung des Clusters ausgelöst werden.
Wenn Sie den Zugriff auf einen Schlüssel vom Managed Service for Apache Kafka-Dienst-Agent entfernen, ist das Verhalten ähnlich wie beim Deaktivieren sowohl der primären als auch der nicht primären Schlüsselversionen.
Wenn Sie einen Schlüssel löschen, wird der Cluster zum Herunterfahren geplant und kann nicht wiederhergestellt werden.
Sie können keine erneute Verschlüsselung der gespeicherten inaktiven Daten anfordern. Der CMEK wird als KEK verwendet, für die Neuverschlüsselung sind jedoch Änderungen an den Datenverschlüsselungsschlüsseln erforderlich.