Zugriffssteuerung mit Kafka-ACLs

In diesem Dokument wird beschrieben, wie Sie Apache Kafka-Zugriffssteuerungslisten (Access Control Lists, ACLs) für die Zugriffssteuerung in Google Cloud Managed Service for Apache Kafka verwenden.

Apache Kafka-ACLs ermöglichen eine detaillierte Zugriffssteuerung innerhalb des Kafka-Clusters. Managed Service for Apache Kafka ermöglicht die sofort einsatzbereite StandardAuthorizer, mit der ACLs in den KRaft-basierten Kafka-Clustermetadaten gespeichert werden.

  • Mit diesen ACLs wird gesteuert, welche authentifizierten Nutzer bestimmte Vorgänge für bestimmte Kafka-Ressourcen ausführen können, z. B. das Erstellen oder Abrufen von Nachrichten für ein Thema.

  • Diese ACLs sind nützlich, um Interaktionen mit dem Cluster mithilfe von Standard-Apache Kafka-Clients zu steuern, die nur einer IAM-Prüfung auf Clusterebene für die erste Verbindung unterliegen. Weitere Informationen finden Sie unter Zugriffssteuerung mit IAM.

Funktionsweise der Kafka-ACL-Zugriffssteuerung

Der Client interagiert mit dem standardmäßigen ACL-Autorisierer von Kafka im Cluster. Der Authorizer wertet die relevanten Apache Kafka-ACLs aus, um bestimmte vom Hauptkonto angeforderte Vorgänge zu autorisieren, z. B. das Erstellen von Daten für ein Thema oder das Abrufen von Daten aus einer Gruppe. Der für die ACL-Prüfung verwendete Prinzipal wird aus einer der folgenden Authentifizierungsmethoden abgeleitet:

  • SASL:Das IAM-Hauptkonto, z. B. die E-Mail-Adresse eines Dienstkontos.

  • mTLS:Der Distinguished Name (DN) aus dem Clientzertifikat, der möglicherweise durch Regeln für die Hauptzuordnung transformiert wurde.

Für umfassende Sicherheit müssen Sie Folgendes konfigurieren:

  • IAM-Berechtigungen für den Verwaltungszugriff. Weitere Informationen finden Sie unter Zugriffssteuerung mit IAM.

  • Kafka-ACLs für den Datenzugriff und Vorgänge im Cluster über Open-Source-Apache Kafka-Clients, unabhängig von der Authentifizierungsmethode.

Verwendung von Apache Kafka-ACLs

Apache Kafka-ACL-Bindungen haben das folgende Format:


Principal P is [Allowed/Denied] Operation O From Host H on any resource matching Resource Pattern RP.

Hier finden Sie eine Liste mit wichtigen Informationen zum Format:

  • Identität(P): Die Nutzeridentität, die autorisiert wird. Diesem wird das Präfix User: vorangestellt.

    • Bei der SASL-Authentifizierung ist dies der IAM-Prinzipal, z. B. User:my-service-account@my-project.iam.gserviceaccount.com.

    • Bei der mTLS-Authentifizierung ist dies der Distinguished Name (DN) aus dem Clientzertifikat, z. B. User:CN=my-client,OU=my-org-unit. Das genaue Format hängt vom Betreff des Zertifikats ab. Regeln für die Zuordnung von Identitäten können diesen Wert transformieren.

  • Berechtigungstyp(Zugelassen/Abgelehnt): Gibt an, ob die ACL-Bindung den Zugriff zulässt oder verweigert. Ablehnungsbindungen haben Vorrang.

  • Vorgang(O): Die ausgeführte Aktion, z. B. „Lesen“, „Schreiben“ oder „Erstellen“. Informationen dazu, welche Vorgänge für welche Ressourcen für verschiedene Kafka-Protokolle gelten, finden Sie in der Apache Kafka-Dokumentation unter Operations and Resources on Protocols.

  • Host(H): Der Computer, von dem die Anfrage stammt. Da Managed Service for Apache Kafka Client-Netzwerkadressen übersetzt, wird die Verwendung anderer Hosts als '*' nicht unterstützt.

  • Ressourcenmuster: Ein Muster, das verwendet wird, um bestimmte Ressourcen abzugleichen. Ein Ressourcenmuster besteht aus einem Ressourcentyp, einem Ressourcennamen und einem Muster-Typ (LITERAL oder PREFIXED).

Standardzugriff

Managed Service for Apache Kafka-Cluster werden mit der Apache Kafka-Eigenschaft allow.everyone.if.no.acl.found auf true ausgeführt. Das Vorhandensein oder Fehlen von Kafka-ACLs bestimmt direkt den Zugriff auf Ressourcen:

  • Wenn für eine bestimmte Ressource wie ein Thema keine Kafka-ACLs definiert sind, wird allen authentifizierten Principals Zugriff darauf gewährt. Mit dieser Konfiguration können Managed Service for Apache Kafka-Cluster sofort verwendet werden, ohne dass ACLs konfiguriert werden müssen.

  • Sobald Sie eine Kafka-ACL für diese Ressource definieren, wird der Zugriff eingeschränkt. Nur Hauptkonten, denen explizit eine Berechtigung über einen ALLOW-Eintrag in einer Kafka-ACL gewährt wurde, können auf entsprechende Ressourcen zugreifen, sofern sie nicht durch einen DENY-Eintrag blockiert werden.

Managed Service for Apache Kafka gewährt dem Dienst-Agent Administratorzugriff auf Ihren Cluster. Dieser Zugriff ermöglicht dem Dienst-Agent, von der Managed Service for Apache Kafka API angeforderte Vorgänge auszuführen, unabhängig von anderen im Cluster konfigurierten ACLs. Managed Service for Apache Kafka erreicht dies durch die Änderung der StandardAuthorizer-Implementierung. Durch die Änderung erhält der Dienst-Agent Berechtigungen, die denen von Superusern ähneln, mit Ausnahme von Lese- und Schreibvorgängen. Sie können diese Konfiguration nicht ändern.

Kafka-Principals

Kafka-Principals für Managed Service for Apache Kafka-Cluster werden mit dem Präfix "User:" des Kafka StandardAuthorizer angegeben.

  • Für SASL/IAM:Das Hauptkonto ist das Google Cloud-Konto. Wenn Sie beispielsweise dem Dienstkonto test-kafka-client@test-project.iam.gserviceaccount.com Zugriff gewähren möchten, verwenden Sie das Kafka-Hauptkonto "User:test-kafka-client@test-project.iam.gserviceaccount.com". Für Kafka-ACL-Hauptkonten muss ein Nutzer, ein Dienstkonto oder ein einzelnes IAM-Hauptkonto angegeben werden, aber keine Gruppe oder Hauptkontogruppe. Kafka-ACLs unterstützen nicht das Auflösen von Gruppenmitgliedschaften für Google Cloud Principals.

  • Für mTLS:Der Principal wird aus dem Subject Distinguished Name (DN) des Clientzertifikats abgeleitet. Beispiel: User:CN=client1,OU=dev,O=MyOrg,L=City,ST=State,C=US Mit mTLS-Regeln für die Principal-Zuordnung können Sie den DN in einen nutzerfreundlicheren Principal-String für ACLs umwandeln.

Wenn Sie eine ACL erstellen möchten, die für alle Mitglieder einer Google-Gruppe oder einer Gruppe von Hauptkonten gilt, können Sie ein Proxy-Dienstkonto-Hauptkonto und die Identitätsübernahme des Dienstkontos verwenden:

  1. Erstellen Sie ein Dienstkonto, das als Proxy für die Gruppe verwendet werden soll.

  2. Weisen Sie der Google-Gruppe oder dem Hauptkonto die Rolle „Ersteller von Dienstkonto-Tokens“ für das Dienstkonto zu. Weitere Informationen finden Sie unter Zugriff auf Dienstkonten verwalten.

  3. Fügen Sie Kafka-ACLs für das Proxy-Dienstkonto hinzu. Ein Beispiel für ein Hauptkonto wäre: User:group-proxy@test-project.iam.gserviceaccount.com.

  4. Verwenden Sie die Identitätsübernahme des Dienstkontos in Kafka-Clients, um sich als Dienstkonto bei Kafka zu authentifizieren. Google Cloud IAM autorisiert ein einzelnes Hauptkonto als Mitglied der Gruppe, die die Identität des Proxy-Dienstkontos übernehmen darf. Kafka autorisiert das Proxy-Dienstkonto anhand der vorhandenen ACLs im Cluster.

Kafka-Vorgänge für Producer und Consumer

Ein Vorgang ist eine Aktion, die für eine Ressource ausgeführt wird. Für jede Ressource wird ein Vorgang einer oder mehreren Kafka-Protokollanfragen für diese Ressource zugeordnet. Ein READ-Vorgang für den Ressourcentyp topic wird beispielsweise den Apache Kafka-Protokollen Fetch, OffsetCommit und TxnOffsetCommit zugeordnet.

So gewährst du einem Hauptkonto Zugriff auf ein Thema:

  1. Lassen Sie für die Themenressource die Vorgänge WRITE und CREATE zu.

  2. Wenn Sie Transaktions-IDs verwenden, lassen Sie für die Transaktions-ID-Ressource den Vorgang WRITE zu.

So gewähren Sie einem Hauptkonto Zugriff auf ein Thema:

  1. Erlauben Sie für die Themenressource den Vorgang READ.

  2. Erlauben Sie den Vorgang READ für die Ressource der Verbrauchergruppe.

Weitere Informationen zu den gültigen Vorgängen für Ressourcen, die von der Kafka API unterstützt werden, finden Sie in der Apache Kafka-Dokumentation unter Operations and Resources on Protocols.

ACLs für das Standardablehnungsverhalten konfigurieren

Verwaltete Kafka-Cluster werden mit allow.everyone.if.no.acl.found = true konfiguriert. Wenn für eine Ressource keine ACLs festgelegt sind, können standardmäßig alle Hauptkonten auf die Ressource zugreifen.

Wenn Sie das Verhalten von default-deny ähnlich wie in IAM konfigurieren möchten, können Sie zuerst den Zugriff für einen Administratornutzer auf alle Ressourcen im Cluster konfigurieren. Daher erhält jede Ressource eine ACL und das Verhalten von allow.everyone.if.no.acl.found wird unterdrückt. Standardmäßig wird jedem Prinzipal, der nicht explizit durch eine ALLOW-ACL zugelassen ist, der Zugriff verweigert.

Wenn Sie beispielsweise ACLs für alle Ressourcen im Cluster für das Dienstkonto clusterAdmin@test-project.iam.gserviceaccount.com festlegen möchten, erstellen Sie die folgenden ACL-Einträge.

Mit dem folgenden gcloud CLI-Befehl wird einem Dienstkonto mit dem Namen clusterAdmin@test-project.iam.gserviceaccount.com der vollständige Administratorzugriff (--operation=ALL) auf einen bestimmten Kafka-Cluster in einer bestimmten Region gewährt. Mit dieser Berechtigung kann das Dienstkonto beliebige Vorgänge für den Cluster von einem beliebigen Host aus ausführen.

gcloud managed-kafka acls add-acl-entry cluster \
    --principal=`User:clusterAdmin@test-project.iam.gserviceaccount.com` \
    --operation=ALL \
    --permission-type=ALLOW \
    --host=* \
    --cluster=CLUSTER_ID \
    --location=LOCATION

Mit dem folgenden gcloud CLI-Befehl wird einem Dienstkonto mit dem Namen clusterAdmin@test-project.iam.gserviceaccount.com der vollständige Administratorzugriff (--operation=ALL) auf alle Themen in einem bestimmten Kafka-Cluster in einer bestimmten Region gewährt. Mit dieser Berechtigung kann das Dienstkonto beliebige Vorgänge für alle Themen von jedem Host aus ausführen.

gcloud managed-kafka acls add-acl-entry allTopics \
    --principal=`User:clusterAdmin@test-project.iam.gserviceaccount.com` \
    --operation=ALL \
    --permission-type=ALLOW \
    --host=* \
    --cluster=CLUSTER_ID \
    --location=LOCATION

Mit dem folgenden gcloud CLI-Befehl wird einem Dienstkonto mit dem Namen clusterAdmin@test-project.iam.gserviceaccount.com der vollständige Administratorzugriff (--operation=ALL) auf alle Verbrauchergruppen in einem bestimmten Kafka-Cluster in einer bestimmten Region gewährt. Mit dieser Berechtigung kann das Dienstkonto beliebige Vorgänge für alle Verbrauchergruppen von jedem Host aus ausführen.

gcloud managed-kafka acls add-acl-entry allConsumerGroups \
    --principal=`User:clusterAdmin@test-project.iam.gserviceaccount.com` \
    --operation=ALL \
    --permission-type=ALLOW \
    --host=* \
    --cluster=CLUSTER_ID \
    --location=LOCATION

Mit dem folgenden gcloud CLI-Befehl wird einem Dienstkonto mit dem Namen clusterAdmin@test-project.iam.gserviceaccount.com der vollständige Administratorzugriff (--operation=ALL) auf alle Transaktions-IDs in einem bestimmten Kafka-Cluster in einer bestimmten Region gewährt. Mit dieser Berechtigung kann das Dienstkonto beliebige Vorgänge für alle Transaktions-IDs von einem beliebigen Host aus ausführen.

gcloud managed-kafka acls add-acl-entry allTransactionalIds \
    --principal=`User:clusterAdmin@test-project.iam.gserviceaccount.com` \
    --operation=ALL \
    --permission-type=ALLOW \
    --host=* \
    --cluster=CLUSTER_ID \
    --location=LOCATION

Hier finden Sie eine Liste mit wichtigen Informationen zu den Befehlen:

  • --principal='User:test-kafka-client@test-project.iam.gserviceaccount.com': Das Hauptkonto, für das die ACL gilt. Das Hauptkonto ist ein Google Cloud -Konto mit dem Kafka-StandardAuthorizer-Präfix User:.

  • --operation=all: Der gewährte Kafka-Vorgang, in diesem Fall vollständiger Zugriff.

  • --permission-type=ALLOW: Dieser ACL-Eintrag gewährt Zugriff.

  • --host='*': Der Host, von dem aus das Hauptkonto auf die Ressource zugreifen kann. '*' gewährt Zugriff von jedem Host. Managed Service for Apache Kafka unterstützt nur ACLs mit dem Host '*'.

  • CLUSTER_ID: der Name Ihres Managed Service for Apache Kafka-Clusters.

  • LOCATION: Die Google Cloud Region, in der sich Ihr Managed Service for Apache Kafka-Cluster befindet, z. B. us-central1.

ACLs konfigurieren

Sie können Apache Kafka-ACLs mit den Managed Service for Apache Kafka-ACL-APIs oder mit Open-Source-Apache Kafka-Tools wie der Apache Kafka-Autorisierungs-CLI kafka-acls.sh oder Admin Client konfigurieren.

In Managed Service for Apache Kafka werden ACLs nach Kafka-Ressourcenmustern organisiert. Das Ressourcenmuster wird durch Folgendes definiert:

  • Ressourcentyp: Cluster, Thema, Nutzergruppe oder Transaktions-ID

  • Mustertyp: Literal oder mit Präfix (alle Ressourcen, deren Name mit dem angegebenen String beginnt)

  • Ressourcenname: Der Ressourcenname oder das Präfix, für das die ACL-Einträge gelten.

Eine ACL-Ressource für Managed Service for Apache Kafka stellt die gesamte Zugriffssteuerung dar, die für ein einzelnes Kafka-Ressourcenmuster konfiguriert ist, als wiederholte Liste von ACL-Einträgen. Der Name der ACL-Ressource identifiziert das Ressourcenmuster der ACL-Bindung eindeutig. Weitere Informationen finden Sie unter ACL-ID.

Sie können ACLs für Managed Service for Apache Kafka auf der Ebene der ACL-Ressource (alle ACL-Einträge für ein Ressourcenmuster) oder inkrementell verwalten, indem Sie einzelne ACL-Einträge für ein ACL-Ressourcenmuster hinzufügen und entfernen.

Weitere Informationen finden Sie unter Managed Kafka-ACL erstellen und Managed Kafka-ACL-Eintrag hinzufügen.

Lesen aus einem Thema erlauben

Damit Open-Source-Apache Kafka-Clients, die als Dienstkonto test-kafka-client@test-project.iam.gserviceaccount.com ausgeführt werden, aus dem Thema topic-name lesen können, erstellen Sie einen Managed Service for Apache Kafka-ACL-Eintrag mit dem managed-kafka acls add-acl-entry-Befehl:

gcloud managed-kafka acls add-acl-entry topic/topic-name \
    --cluster=CLUSTER_ID \
    --location=LOCATION
    --principal='User:test-kafka-client@test-project.iam.gserviceaccount.com' \
    --operation=READ \
    --permission-type=ALLOW \
    --host='*'

Hier finden Sie eine Liste wichtiger Informationen zum Befehl:

  • topic/topic-name: Gibt das Managed Service for Apache Kafka-Thema an, für das Sie Zugriff gewähren möchten. Ersetzen Sie topic-name durch den tatsächlichen Namen Ihres Themas. Das Präfix topic/ gibt an, dass dieser ACL-Eintrag für ein bestimmtes (literales) Themenressourcenmuster gilt.

  • LOCATION: Die Google Cloud Region, in der sich Ihr Managed Service for Apache Kafka-Cluster befindet, z. B. us-central1.

  • CLUSTER_ID: der Name Ihres Managed Service for Apache Kafka-Clusters.

  • --principal='User:test-kafka-client@test-project.iam.gserviceaccount.com': Das Hauptkonto, für das die ACL gilt. Das Hauptkonto ist ein Google Cloud -Konto mit dem Kafka-StandardAuthorizer-Präfix User:.

  • --operation=READ: Der gewährte Kafka-Vorgang, in diesem Fall READ.

  • --permission-type=ALLOW: Gibt an, dass dieser ACL-Eintrag Zugriff gewährt.

  • --host='*': Gibt den Host an, über den das Hauptkonto auf die Ressource zugreifen kann. '*' gewährt Zugriff von jedem Host. Managed Service for Apache Kafka unterstützt nur ACLs mit dem Host '*'.

Wenn Sie den Lesezugriff entfernen möchten, können Sie den Befehl remove-acl-entry mit denselben Parametern verwenden.

gcloud managed-kafka acls remove-acl-entry topic/topic-name \
    --cluster=CLUSTER_ID \
    --location=LOCATION
    --principal='User:test-kafka-client@test-project.iam.gserviceaccount.com' \
    --operation=READ \
    --permission-type=ALLOW \
    --host='*'

Schreiben zu allen Themen mit einem gemeinsamen Präfix zulassen

Damit Open-Source-Apache Kafka-Clients, die als Dienstkonto test-kafka-client@test-project.iam.gserviceaccount.com ausgeführt werden, in alle Themen schreiben können, deren Name mit dem Präfix topic-prefix beginnt, fügen Sie einen Managed Kafka-ACL-Eintrag wie folgt hinzu:

gcloud managed-kafka acls add-acl-entry topicPrefixed/topic-prefix \
    --cluster=CLUSTER_ID \
    --location=LOCATION
    --principal='User:test-kafka-client@test-project.iam.gserviceaccount.com' \
    --operation=WRITE \
    --permission-type=ALLOW \
    --host='*'

Hier finden Sie eine Liste wichtiger Informationen zum Befehl:

  • topicPrefixed/topic-prefix: Gibt das Ressourcenmuster für Managed Service for Apache Kafka an, für das Sie Zugriff gewähren möchten. Ersetzen Sie topic-prefix durch das tatsächliche Präfix Ihrer Themen. Das Präfix topicPrefixed/ gibt an, dass dieser ACL-Eintrag für ein Ressourcenmuster mit Präfix gilt: alle Themen, die mit dem angegebenen Präfix übereinstimmen.

  • PROJECT: Die ID Ihres Google Cloud Projekts, in dem sich Ihr Managed Service for Apache Kafka-Cluster befindet.

  • LOCATION: Die Google Cloud Region, in der sich Ihr Managed Service for Apache Kafka-Cluster befindet, z. B. us-central1.

  • CLUSTER_ID: der Name Ihres Managed Service for Apache Kafka-Clusters.

  • --principal='User:test-kafka-client@test-project.iam.gserviceaccount.com': Das Hauptkonto, für das die ACL gilt. Das Hauptkonto ist ein Google Cloud -Konto mit dem Kafka-StandardAuthorizer-Präfix User:.

  • --operation=WRITE: Die gewährte Kafka-Operation, in diesem Fall WRITE.

  • --permission-type=ALLOW: Dieser ACL-Eintrag gewährt Zugriff.

  • --host='*': Der Host, von dem aus das Hauptkonto auf die Ressource zugreifen kann. '*' gewährt Zugriff von jedem Host. Managed Service for Apache Kafka unterstützt nur ACLs mit dem Host '*'.

Wenn Sie den Schreibzugriff für dieses Dienstkonto entfernen möchten, löschen Sie den ACL-Eintrag:

gcloud managed-kafka acls remove-acl-entry topicPrefixed/topic-prefix \
    --cluster=CLUSTER_ID \
    --location=LOCATION
    --principal='User:test-kafka-client@test-project.iam.gserviceaccount.com' \
    --operation=WRITE \
    --permission-type=ALLOW \
    --host='*'

Änderung aller Themen ablehnen

Damit Open-Source-Apache Kafka-Clients, die als Dienstkonto test-kafka-client@test-project.iam.gserviceaccount.com ausgeführt werden, nicht alle Themen in einem Cluster ändern können, können Sie eine Managed Service for Apache Kafka-ACL-Ressource mit einer Liste von AclEntry-Ressourcen erstellen, um die Vorgänge ALTER, ALTER_CONFIGS und DELETE für alle Themen zu verweigern. Bei diesem Ansatz wird der erforderliche Status in einer einzigen Konfiguration definiert.

Alternativ können Sie dasselbe Ergebnis erzielen, indem Sie mit dem Befehl gcloud managed-kafka acls add-acl-entry drei separate ACL-Einträge imperativ hinzufügen. Bei dieser Methode wird der Befehl ausgeführt, um den Zugriff auf die einzelnen Vorgänge ALTER, ALTER_CONFIGS und DELETE zu verweigern:

gcloud managed-kafka acls add-acl-entry allTopics \
    --cluster=CLUSTER_ID \
    --location=LOCATION
    --principal='User:test-kafka-client@test-project.iam.gserviceaccount.com' \
    --operation=ALTER \
    --permission-type=DENY \
    --host='*'
gcloud managed-kafka acls add-acl-entry allTopics \
    --cluster=CLUSTER_ID \
    --location=LOCATION
    --principal='User:test-kafka-client@test-project.iam.gserviceaccount.com' \
    --operation=ALTER_CONFIGS \
    --permission-type=DENY \
    --host='*'
gcloud managed-kafka acls add-acl-entry allTopics \
    --cluster=CLUSTER_ID \
    --location=LOCATION
    --principal='User:test-kafka-client@test-project.iam.gserviceaccount.com' \
    --operation=DELETE \
    --permission-type=DENY \
    --host='*'

Die folgenden Informationen gelten für jeden der add-acl-entry-Befehle:

  • allTopics: Gibt an, dass diese ACL für alle Themen im Managed Service for Apache Kafka-Cluster gilt.

  • LOCATION: Die Google Cloud Region, in der sich Ihr Managed Service for Apache Kafka-Cluster befindet, z. B. us-central1.

  • CLUSTER_ID: der Name Ihres Managed Service for Apache Kafka-Clusters.

  • --principal='User:test-kafka-client@test-project.iam.gserviceaccount.com': Gibt das Hauptkonto an, für das die ACL gilt. Das Hauptkonto ist ein Google Cloud Konto mit dem Kafka-PräfixStandardAuthorizerUser:.

  • --operation: gibt den verweigerten Kafka-Vorgang an:

    • ALTER: umfasst Aktionen wie das Ändern der Anzahl der Partitionen oder des Replikationsfaktors.

    • ALTER_CONFIGS: Dazu gehört auch das Ändern von Konfigurationen auf Themenebene.

    • DELETE: Dazu gehört das Löschen von Themen.

  • --permission-type=DENY: Gibt an, dass diese ACL-Einträge den Zugriff für die angegebenen Vorgänge blockieren.

  • --host='*': Gibt an, dass diese Ablehnung unabhängig vom Host gilt, von dem die Anfrage stammt. Managed Service for Apache Kafka unterstützt nur ACLs mit dem Host '*'.

Um diese Einschränkungen zu entfernen, verwenden Sie für jeden der hinzugefügten Einträge den Befehl remove-acl-entry mit denselben Parametern. So aktivieren Sie beispielsweise das Löschen von Themen wieder:

gcloud managed-kafka acls remove-acl-entry allTopics \
    --cluster=CLUSTER_ID \
    --location=LOCATION
    --principal='User:test-kafka-client@test-project.iam.gserviceaccount.com' \
    --operation=DELETE \
    --permission-type=DENY \
    --host='*'

Fehlerbehebung bei ACLs

Der Apache Kafka Standard Authorizer schreibt standardmäßig Audit-Logs für Autorisierungsverweigerungen. Wenn Sie einen Kafka-Autorisierungsfehler erhalten, können Sie das abgelehnte Hauptkonto, die abgelehnte Ressource und den abgelehnten Vorgang bestätigen, indem Sie in den Clusterlogs nach StandardAuthorizerData logAuditMessage suchen.

Hier ist ein Beispiel für ein Cluster-Log.

org.apache.kafka.metadata.authorizer.StandardAuthorizerData logAuditMessage\n
INFO: Principal = User:556291496362-compute@developer.iam.gserviceaccount.com is
Denied operation = DESCRIBE from host = 172.16.0.20 on resource = Topic:LITERAL:t1
for request = Metadata with resourceRefCount = 1 based on rule DefaultDeny

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.