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-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.

Für diesen Dienst-Agent ist die IAM-Rolle „Managed Kafka Service Agent“ (roles/managedkafka.serviceAgent) für das Projekt erforderlich. 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-Agent möglicherweise die Berechtigung zum Zugriff auf Quellen und Senken wie Pub/Sub oder BigQuery erteilen.

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 sowie die Verwendung der Google Cloud CLI, der Google Cloud -Konsole oder der Clientbibliotheken.

  • Die Open-Source-API von Apache Kafka. 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). Damit ein Hauptkonto einen Vorgang für eine Ressource ausführen kann, muss es 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 Prinzipal 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 mit SASL oder mit gegenseitiger TLS-Authentifizierung (mTLS).

  • 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) zuweisen.

  • 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 und Vorgänge im Cluster von Open-Source-Apache-Kafka-Clients, unabhängig von der Authentifizierungsmethode.

Angenommen, Sie möchten verhindern, dass ein Hauptkonto Themen bearbeiten kann. Dazu richten Sie die folgenden Zugriffssteuerungen ein:

  • Verweigern Sie dem Prinzipal die Berechtigung managedkafka.topics.update, um zu verhindern, dass er 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.connect entziehen, um zu verhindern, dass das Hauptkonto mit der SASL-Authentifizierung eine Verbindung zum Cluster herstellt.

  • Wenn das Hauptkonto aus anderen Gründen SASL-Zugriff benötigt oder eine Verbindung über mTLS herstellt, erstellen Sie eine Kafka-ACL, die die Vorgänge ALTER, ALTER_CONFIGS und DELETE für Themen ablehnt. Konkrete Beispiele finden Sie unter Änderung 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, müssen Sie zusätzlich zur Bedingung für die Clusterressource auch den Zugriff für alle Ressourcen vom Typ managedkafka.googleapis.com/Operation einschließen. Mit dieser Berechtigung kann das Prinzipal den Vorgang starten und seinen Fortschritt überwachen.

Nächste Schritte

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