In Managed Service for Apache Kafka steuern Sie den Zugriff auf Ihre Kafka-Cluster und ‑Themen mithilfe einer Kombination aus IAM-Berechtigungen (Identity and Access Management) und Kafka-Zugriffssteuerungslisten (ACLs):
Verwenden Sie IAM, um Berechtigungen für den Verwaltungszugriff und für Clients zu gewähren, die eine Verbindung zu einem Cluster herstellen, wenn die SASL-Authentifizierung verwendet wird.
Verwenden Sie Kafka-ACLs für den Datenzugriff und Vorgänge von Open-Source-Apache Kafka-Clients.
Auf dieser Seite finden Sie eine Übersicht über diese Optionen zur Zugriffssteuerung.
Managed Kafka Service Agent
Managed Service for Apache Kafka verwendet einen Dienst-Agent, um auf Google Cloud-Ressourcen zuzugreifen. Nachdem Sie die Managed Kafka API aktiviert haben, wird der Managed Kafka-Dienst-Agent erstellt.
Der Managed Kafka-Dienst-Agent ist ein Hauptkonto mit der Kennung service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com, wobei PROJECT_NUMBER Ihre Google Cloud Projektnummer ist.
Dieser Dienst-Agent benötigt die IAM-Rolle „Managed Kafka-Dienst-Agent“ (roles/managedkafka.serviceAgent) für das Projekt. Diese Rolle wird automatisch gewährt, wenn Sie die API aktivieren. Wenn Sie diese Rolle widerrufen, kann Managed Service for Apache Kafka keine Cluster erstellen, aktualisieren oder löschen.
Für einige Aufgaben benötigt der Managed Kafka-Dienst-Agent zusätzliche Rollen. Wenn Sie beispielsweise Kafka Connect verwenden, müssen Sie dem Dienst-Agenten möglicherweise die Berechtigung erteilen, auf Quellen und Senken wie Pub/Sub oder BigQuery zuzugreifen.
Zugriffssteuerung für Clients
Es gibt im Allgemeinen zwei Möglichkeiten, Vorgänge für Managed Service for Apache Kafka-Ressourcen auszuführen:
Die Managed Kafka API. Diese Option umfasst den direkten Aufruf der REST APIs sowie die Verwendung der Google Cloud CLI, der Google Cloud Console oder der Clientbibliotheken.
Die Open-Source-Apache Kafka API. Viele Open-Source-Kafka-Clients verwenden diese API.
Zugriffssteuerung mit der Managed Kafka API
Wenn Sie die Managed Kafka API verwenden, erfolgt die Autorisierung über Identity and Access Management (IAM). Um einen Vorgang für eine Ressource auszuführen, muss das Hauptkonto die erforderlichen Managed Kafka API-Berechtigungen für diesen Vorgang haben. In der Dokumentation für jede Aufgabe sind die dafür erforderlichen IAM-Rollen aufgeführt. Wenn Sie einem Hauptkonto beispielsweise erlauben möchten, Kafka-Themen zu erstellen, weisen Sie ihm die Rolle Managed Kafka Topic Editor zu.
Zugriffssteuerung mit der Apache Kafka API
Clients, die die Apache Kafka API verwenden, authentifizieren sich entweder über SASL oder über gegenseitiges TLS (mTLS).
Wenn ein Client eine Verbindung mit SASL herstellt, benötigt das authentifizierende Hauptkonto die IAM-Berechtigung
managedkafka.clusters.connect. Wenn Sie diese Berechtigung erteilen möchten, können Sie dem Hauptkonto die Rolle Managed Kafka Client (roles/managedkafka.client) zuweisen.Wenn ein Client eine Verbindung mit mTLS herstellt, ist die Berechtigung
managedkafka.clusters.connectnicht erforderlich. Stattdessen verwenden Clients Clientzertifikate zur Authentifizierung.
Nachdem der Client eine Verbindung hergestellt hat, verwendet der Dienst Kafka-ACLs, um die Vorgänge des Clients zu autorisieren, z. B. das Lesen oder Ändern von Ressourcen.
Kombinierte Zugriffssteuerung
Für eine umfassende Sicherheit müssen Sie Folgendes konfigurieren:
IAM-Berechtigungen für den Verwaltungszugriff.
IAM-Berechtigung zum Herstellen einer Verbindung zum Cluster, wenn Clients SASL verwenden.
Kafka-ACLs für den clusterinternen Datenzugriff und Vorgänge von Open-Source-Apache-Kafka-Clients, unabhängig von der Authentifizierungsmethode.
Angenommen, Sie möchten verhindern, dass ein Hauptkonto Themen bearbeitet. Dazu richten Sie die folgenden Zugriffssteuerungen ein:
Verweigern Sie dem Hauptkonto die Berechtigung
managedkafka.topics.update, um zu verhindern, dass es die Managed Kafka API zum Aktualisieren von Themen verwendet (z. B. über die Google Cloud -Konsole).Optional können Sie dem Hauptkonto die Berechtigung
managedkafka.clusters.connectverweigern, um zu verhindern, dass das Hauptkonto mit SASL-Authentifizierung eine Verbindung zum Cluster herstellt.Wenn das Hauptkonto aus anderen Gründen SASL-Zugriff benötigt oder wenn das Hauptkonto eine Verbindung über mTLS herstellt, erstellen Sie eine Kafka-ACL, die die Vorgänge
ALTER,ALTER_CONFIGSundDELETEfür Themen ablehnt. Spezifische Beispiele finden Sie unter Änderung aller Themen ablehnen.
Zugriffssteuerung auf Ressourcenebene
Wenn Sie die IAM-Berechtigungen eines Hauptkontos auf bestimmte Managed Service for Apache Kafka-Ressourcen innerhalb eines Projekts beschränken möchten, z. B. auf einzelne Cluster oder Themen, verwenden Sie IAM-Bedingungen.
Das folgende Beispiel zeigt eine IAM-Bedingung, die den Zugriff nur zulässt, wenn der Ressourcentyp managedkafka.googleapis.com/Topic ist und der Ressourcenname auf "test-topic" endet:
{
"expression": "resource.name.endsWith(\"topic-1\") &&\nresource.type == \"managedkafka.googleapis.com/Topic\"",
"title": "topic-1",
"description": "Grant access only to topic-1"
}
Einige Managed Service for Apache Kafka-Anfragen, z. B. zum Erstellen oder Aktualisieren von Clustern, geben Vorgänge mit langer Ausführungszeit zurück. Wenn Sie Zugriff auf Clusterebene gewähren, schließen Sie zusätzlich zur clusterbezogenen Ressourcenbedingung den Zugriff für alle Ressourcen vom Typ managedkafka.googleapis.com/Operation ein. Mit dieser Berechtigung kann das Hauptkonto den Vorgang initiieren und seinen Fortschritt überwachen.
Nächste Schritte
Weitere Informationen zu den grundlegenden Konzepten von IAM finden Sie in der IAM-Übersicht.
Informationen zu den verschiedenen Komponenten einer IAM-Richtlinie finden Sie unter IAM-Richtlinie.
Informationen zur Verwendung von Kafka-ACLs für den Datenzugriff innerhalb des Clusters finden Sie unter Kafka-ACLs.
Rollen und Berechtigungen für Managed Service for Apache Kafka