Zugriffssteuerung für Managed Service for Apache Kafka

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.connect nicht 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.connect verweigern, 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, und DELETE fü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

Apache Kafka® ist eine eingetragene Marke der Apache Software Foundation oder ihrer Tochtergesellschaften in den USA und/oder anderen Ländern.