Kafka-ACLs konfigurieren

Mit Kafka-Zugriffskontrolllisten (ACLs) werden Berechtigungen zum Clustern von Ressourcen in Streaming mit Apache Kafka angegeben.

Principal
Ein Benutzer oder eine Anwendung, der/die vom Kafka-Cluster authentifiziert wird. Das Format des Principal-Namens hängt vom verwendeten Authentifizierungsmechanismus ab, wie SASL/SCRAM oder mTLS.
Arbeitsvorgänge
Eine Aktion, die für eine Kafka-Clusterressource ausgeführt wird, wie Erstellen, Löschen, Produzieren oder Konsumieren.
Ressourcen
Eine Kafka-Clusterressource, wie Cluster, Broker, Brokergruppe oder Thema. Wenn einer Ressource keine ACL zugeordnet ist, kann nur ein Superuser auf die Ressource zugreifen.

Kafka-ACLs steuern, welcher Principal Vorgänge an den Ressourcen ausführen kann. Wenn Sie sowohl allow- als auch deny-ACLs für eine Ressource erstellen, haben die deny-ACLs Vorrang vor den allow-ACLs.

Führen Sie die folgenden Aufgaben aus, um eine ACL für ein Cluster zu konfigurieren.

  1. Autorisierer aktivieren
  2. Kafka-ACL erstellen
  3. Clusterkonfiguration aktualisieren

Autorisierer aktivieren

In Apache Kafka ist der Autorisierer eine Komponente, die Access Control-Listen (ACLs) durchsetzt und sicherstellt, dass nur autorisierte Benutzer oder Clients die in ACLs definierten Aktionen ausführen.

Aktualisieren Sie die Konfigurationsdatei config_name.properties für das Cluster mit den folgenden Informationen:
authorizer.class.name=kafka.security.authorizer.AclAuthorizer

Kafka-ACL erstellen

Um ACLs in einem Cluster hinzuzufügen, zu entfernen oder aufzulisten, verwenden Sie die Apache Kafka-Autorisierer-CLI.

Die Zugriffsregeln in Apache Kafka-ACLs werden im folgenden Format erstellt:

Principal P is [Allowed/Denied] Operation O From Host H on any Resource R matching ResourcePattern RP

Hier,

  • Principal P ist der Benutzer oder Client, dem der Zugriff erteilt oder verweigert wird.
  • Zulässig/Abgelehnt ist die Berechtigung, die für den Principal festgelegt ist.
  • Vorgang O ist die Aktion für die Ressource, wie Lesen, Schreiben, Erstellen und Löschen.
  • Host H ist die Quelle, von der die Anforderung ausgeführt wird. Der Platzhalter * wird zur Darstellung eines beliebigen Hosts verwendet.
  • Ressource R ist die Kafka-Entity, wie Topic oder Cluster.
  • ResourcePattern RP gibt an, wie die Ressource abgeglichen wird. Beispiel: ResourcePattern RP könnte PREFIXED mit dem Wert logs- sein, was bedeutet, dass die ACL für alle Themen gilt, deren Namen mit logs- beginnen. Wenn RP nicht mit einer bestimmten Ressource R übereinstimmt, sind R keine ACLs zugeordnet.
Führen Sie den folgenden Befehl aus, um eine ACL-Regel zu erstellen, mit der ein Benutzer Alice von einem beliebigen Host aus in alle Themen schreiben kann, die mit logs- beginnen:
kafka-acls --bootstrap-server <bootstrap-server-url> \
--command-config <config-file-path> \
--add \
--allow-principal User:Alice \
--operation Write \
--topic logs- \
--resource-pattern-type prefixed

Clusterkonfiguration aktualisieren

Wenn Sie ein Cluster erstellen, wird eine Standardkonfigurationsdatei für das Cluster erstellt. Die ACL-Eigenschaft ist so eingestellt, dass jeder auf Ressourcen zugreifen kann, wenn keine ACL für das Cluster gefunden wird.

Ändern Sie die Eigenschaft allow.everyone.if.no.acl.found in false, um einen standardmäßigen Sicherheitszugriff zu erzwingen. Wenn Sie den Wert dieser Eigenschaft auf "false" setzen, können nur die Clients oder Benutzer, die in der ACL zugelassen sind, und Superuser auf die Ressourcen zugreifen.
allow.everyone.if.no.acl.found=false
Sie können auch den Standardwert true für allow.everyone.if.no.acl.found beibehalten, um uneingeschränkten Zugriff auf Ressourcen ohne ACLs zuzulassen, während Sie ACLs für Ressourcen erzwingen, die diese enthalten.