In diesem Dokument wird beschrieben, wie die Zugriffssteuerung in Managed Service for Apache Kafka funktioniert.
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 Service Agent erstellt.
Der Managed Kafka Service Agent ist ein Hauptkonto mit der Kennung
service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com,
wobei PROJECT_NUMBER Ihre Google Cloud Projekt
nummer ist.
Dieser Dienst-Agent benötigt die IAM-Rolle „Managed Kafka Service 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 Service Agent zusätzliche Rollen. Wenn Sie beispielsweise Kafka Connect verwenden, müssen Sie dem Dienst-Agent möglicherweise die Berechtigung zum Zugriff auf Quellen und Senken wie Pub/Sub oder BigQuery gewähren.
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 das direkte Aufrufen der REST APIs direkt, sowie die Verwendung der Google Cloud CLI, der Google Cloud Console oder der Client bibliotheken.
Die Open-Source-Apache Kafka API. Viele Open-Source-Kafka-Clients verwenden diese API.
Zugriffssteuerung mit der Managed Kafka API
Bei Verwendung der Managed Kafka API 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 für diese Aufgabe erforderlichen IAM-Rollen aufgeführt. Wenn Sie beispielsweise einem Hauptkonto das Erstellen von Kafka-Themenermöglichen möchten, gewähren Sie ihm die Rolle „Managed Kafka Topic Editor“.
Zugriffssteuerung mit der Apache Kafka API
Clients, die die Apache Kafka API verwenden, authentifizieren sich entweder mit SASL oder mit gegenseitiger TLS (mTLS)-Authentifizierung.
Wenn ein Client eine Verbindung mit SASL herstellt, benötigt das authentifizierende Hauptkonto die IAM-Berechtigung
managedkafka.clusters.connect. Um diese Berechtigung zu erteilen, können Sie dem Hauptkonto die Rolle „Managed Kafka Client“ (roles/managedkafka.client) gewähren.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 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 Datenzugriff im Cluster 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 Console).Optional können Sie dem Hauptkonto die Berechtigung
managedkafka.clusters.connectverweigern, um zu verhindern, dass es mit der SASL-Authentifizierung eine Verbindung zum Cluster herstellt.Wenn das Hauptkonto aus anderen Gründen SASL-Zugriff benötigt oder eine Verbindung mit mTLS herstellt, erstellen Sie eine Kafka-ACL, die die Vorgänge
ALTER,ALTER_CONFIGS, undDELETEfür Themen verweigert. Spezifische Beispiele finden Sie unter Das Ändern aller Themen verweigern.
Zugriffssteuerung auf Ressourcenebene
Wenn Sie die IAM-Berechtigungen eines Hauptkontos auf bestimmte Managed Service for Apache Kafka-Ressourcen in einem Projekt 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 mit "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 den Zugriff auf Clusterebene gewähren, schließen Sie zusätzlich zur Ressourcenbedingung pro Cluster auch den Zugriff für alle Ressourcen vom Typ managedkafka.googleapis.com/Operation ein. Mit dieser Berechtigung kann das Hauptkonto den Vorgang starten und seinen Fortschritt verfolgen.
Nächste Schritte
Weitere Informationen zu den grundlegenden Konzepten von IAM finden Sie unter IAM-Überblick.
Informationen zu den verschiedenen Komponenten einer IAM-Richtlinie finden Sie unter IAM-Richtlinie.
Informationen zur Verwendung von Kafka-ACLs für den Datenzugriff im Cluster finden Sie unter Kafka-ACLs.
Managed Service for Apache Kafka-Rollen und -Berechtigungen.