In diesem Dokument wird beschrieben, wie Sie Google Cloud Identity and Access Management (IAM) für die Zugriffssteuerung in Google Cloud Managed Service for Apache Kafka verwenden.
IAM steuert den Zugriff auf Google Cloud Ressourcenebene:
Mit IAM-Steuerelementen wird festgelegt, wer Ihre Managed Service for Apache Kafka-Ressourcen wie Cluster, Themen oder ACLs mit Google Cloud APIs und Tools verwalten kann. Beispiele für solche Tools sind dieGoogle Cloud -Konsole, die gcloud CLI oder Clientbibliotheken.
Diese Einstellungen legen auch fest, wer die Berechtigung hat, mit Standard-Apache Kafka-Clients eine erste Verbindung zu Ihrem Managed Service for Apache Kafka-Cluster herzustellen.
Weitere Informationen zu IAM finden Sie in der IAM-Dokumentation.
IAM – Übersicht
Mit IAM können Sie detaillierte Zugriffsberechtigungen auf bestimmteGoogle Cloud -Ressourcen gewähren und unerwünschten Zugriff auf andere Ressourcen verhindern. Mit IAM können Sie das Prinzip der geringsten Berechtigung anwenden und somit nur den notwendigen Zugriff auf Ihre Ressourcen gewähren.
Mit IAM können Sie steuern, wer (Identitäten) welchen Zugriff (Rollen) auf welche Ressourcen hat.
Prinzipal
Ein Hauptkonto kann ein Google-Konto (für Endnutzer), ein Dienstkonto (für Anwendungen und virtuelle Maschinen), eine Google-Gruppe oder eine Google Workspace- oder Cloud Identity-Domain sein, die auf eine Ressource zugreifen kann.
Weitere Informationen finden Sie unter IAM-Übersicht: Hauptkonten.
Ein spezieller Prinzipal: der Managed Kafka Service Agent
Google Cloud Managed Service for Apache Kafka verwendet ein Google Cloud verwaltetes Dienstkonto, das als Dienst-Agent bezeichnet wird, um auf Ihre Ressourcen zuzugreifen. Wenn Sie die API aktiviert haben, wurde der Dienst-Agent bereits erstellt. Der Dienst-Agent ist durch die E-Mail-Adresse identifizierbar:
service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com.
Der Dienst-Agent für Managed Service for Apache Kafka benötigt die Rolle Managed Kafka Service Agent (roles/managedkafka.serviceAgent) für das Projekt, um Managed Service for Apache Kafka-Ressourcen zu verwalten.
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.
Ressource
Beispiele für Ressourcen, für die Sie in Managed Service for Apache Kafka Zugriff gewähren können, sind Projekte, Cluster, Themen und Nutzergruppen.
Für einige API-Methoden sind Berechtigungen für mehrere Ressourcen erforderlich. Für die Aufgabe zum Erstellen eines Connect-Clusters ist beispielsweise die Berechtigung managedkafka.connectClusters.create für den übergeordneten Standort der Connect-Clusterressource und die Berechtigung managedkafka.clusters.attachConnectCluster für die Clusterressource erforderlich.
Rolle
Eine Rolle ist eine Sammlung von Berechtigungen. Berechtigungen bestimmen, welche Vorgänge bei einer Ressource zugelassen sind. Wenn Sie einem Hauptkonto eine Rolle zuweisen, gewähren Sie alle mit ihr verknüpften Berechtigungen.
Sie können einem Hauptkonto eine oder mehrere Rollen zuweisen.
Ähnlich wie bei anderen Google Cloud -Produkten werden in Managed Service for Apache Kafka drei Arten von Rollen unterstützt:
Einfache Rollen:Rollen mit sehr weitreichenden Berechtigungen, die vor der Einführung von IAM vorhanden waren. Weitere Informationen zu einfachen Rollen finden Sie unter Einfache Rollen.
Vordefinierte Rollen:ermöglichen einen detaillierten Zugriff auf bestimmte Google Cloud-Ressourcen. Weitere Informationen zu vordefinierten Rollen finden Sie unter Vordefinierte Rollen. Die vordefinierten Rollen für Managed Service for Apache Kafka werden später in diesem Abschnitt beschrieben.
Benutzerdefinierte Rollen helfen Ihnen, das Prinzip der geringsten Berechtigung durchzusetzen. Weitere Informationen zu benutzerdefinierten Rollen finden Sie unter Benutzerdefinierte Rollen.
Die vordefinierte Rolle Managed Kafka Viewer (roles/managedkafka.viewer) bietet beispielsweise schreibgeschützten Zugriff auf Managed Service for Apache Kafka-Ressourcen. Ein Hauptkonto mit dieser Rolle kann Cluster, Themen und Verbrauchergruppen ansehen, aber nicht erstellen, aktualisieren oder löschen.
Weitere Informationen zum Zuweisen von Rollen finden Sie in der Dokumentation unter Zugriff auf Ressourcen erteilen, ändern und entziehen.
Welche Berechtigungen Sie für eine bestimmte Aufgabe benötigen, erfahren Sie auf der Referenzseite Managed Service for Apache Kafka-Rollen und -Berechtigungen.
Funktionsweise der Zugriffssteuerung
Die Autorisierung für den Zugriff auf Managed Service for Apache Kafka über Google Cloud APIs wird von IAM übernommen. Die Autorisierung für den Zugriff von Open-Source-Apache Kafka-Clients, die die SASL-Authentifizierung verwenden, wird von IAM geprüft.
Wenn ein Client eine Verbindung über SASL herstellt, prüft IAM zuerst, ob das Hauptkonto die Berechtigung
managedkafka.clusters.connecthat. Wenn diese Prüfung fehlschlägt, wird die Verbindung abgelehnt.Wenn ein Client über mTLS eine Verbindung herstellt, wird diese erste IAM-Berechtigungsprüfung umgangen und die Autorisierung erfolgt ausschließlich über Kafka-ACLs.
Für umfassende Sicherheit müssen Sie Folgendes konfigurieren:
IAM-Berechtigungen für den Verwaltungszugriff.
IAM-Berechtigungen für den Verbindungszugriff bei Verwendung von SASL.
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. Dafür gibt es zwei Möglichkeiten:
Vollständig über IAM. Verweigern Sie dem Prinzipal sowohl die Rolle Managed Kafka Topic Editor (
roles/managedkafka.topicEditor) als auch die Rolle Managed Kafka Client (roles/managedkafka.client). Diese Konfiguration schränkt die Bearbeitung von Themen über Google CloudAPIs vollständig ein und verhindert jeden Kafka-API-Zugriff über SASL. Diese Konfiguration verhindert keine Verbindungen, die mTLS verwenden.Kafka-ACLs in Verbindung mit IAM verwenden Diese Methode ist erforderlich, wenn das Hauptkonto mTLS verwendet oder SASL-Zugriff für andere Vorgänge benötigt. Beschränken Sie die folgenden Vorgänge mit Kafka-ACLs:
Erstellen Sie Themen auf Clusterebene.
„Alter“, „AlterConfigs“, „Delete“ (für die Änderung und Löschung von Themen) auf Themenebene.
Sie können die geeignete Methode je nachdem auswählen, ob das Prinzipal Zugriff auf die Kafka-APIs benötigt und welche Authentifizierungsmethode verwendet wird.
Zugriffssteuerung auf Projektebene festlegen
Informationen zum Festlegen der Zugriffssteuerung auf Projektebene finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Zugriffssteuerung auf Ressourcenebene festlegen
Einige Managed Service for Apache Kafka-Anfragen, z. B. zum Erstellen oder Aktualisieren von Clustern, sind Vorgänge, die lange dauern. Damit ein Hauptkonto diese Aktionen ausführen kann, müssen Sie ihm neben der spezifischen Clusterressource auch Zugriff auf managedkafka.googleapis.com/Operation-Ressourcen gewähren.
Diese Konfiguration sorgt dafür, dass der Prinzipal den Vorgang sowohl starten als auch seinen Fortschritt überwachen kann.
Das folgende Beispiel zeigt eine IAM-Bedingung, die für ein Thema mit dem Namen "test-topic" festgelegt ist:
{'expression': 'resource.name.endsWith('test-topic') 'title': 'SampleIAMCondition'}`.
In diesem Beispiel wird eine IAM-Bedingung gezeigt, mit der geprüft wird, ob ein Ressourcenname mit test-topic endet. Ist dies der Fall, lautet die Bedingung true. Diese spezielle Bedingung heißt SampleIAMCondition und kann in einer IAM-Richtlinie verwendet werden, um den Zugriff auf dieses bestimmte Thema einzuschränken.
Bestimmte Managed Service for Apache Kafka-Anfragen, z. B. zum Erstellen oder Aktualisieren von Clustern, geben Vorgänge zurück, die lange dauern. Wenn Sie Zugriff auf Clusterebene gewähren möchten, müssen Sie zusätzlich zur Ressourcenbedingung pro Cluster auch Zugriff für alle Ressourcen vom Typ managedkafka.googleapis.com/Operation einbeziehen. So kann der Auftraggeber den Vorgang starten und seinen Fortschritt verfolgen.
Projektübergreifende Zugriffssteuerung
Wenn Sie einem Client in einem anderen Projekt Zugriff auf einen Cluster gewähren möchten, weisen Sie dem Dienstkonto des Clients im Projekt des Clusters die Rolle Managed Kafka Client (roles/managedkafka.client) zu.
Wenn Sie beispielsweise einer Compute Engine-VM in project-B den Zugriff auf einen Cluster in project-A erlauben möchten, weisen Sie in project-A dem Dienstkonto der Compute Engine-VM in project-B die Rolle Managed Kafka Client (roles/managedkafka.client) zu.
Nächste Schritte
Weitere Informationen zu den grundlegenden Konzepten von IAM finden Sie unter 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 im Cluster finden Sie unter Kafka-ACLs.
Eine vollständige Liste der Rollen und Berechtigungen für Managed Service for Apache Kafka finden Sie unter Rollen und Berechtigungen für Managed Service for Apache Kafka.