Skip to content

Best tools to manage Kafka ACLs

Comparisons
Chad Harris·September 22, 2026·12 min read

The best tools to manage Kafka ACLs fall into three groups: declarative GitOps tools that keep ACLs in version control (Terraform’s Kafka provider, Strimzi’s User Operator, kafka-gitops, Julie Ops), self-service portals that put an approval step in front of each ACL request (Klaw), and central security managers that replace ACLs with their own policies (Apache Ranger, OPA). Kafka UIs sit alongside all three for viewing and editing ACLs directly. Kpow is Factor House’s product, and I work at Factor House as a Solutions Architect, so it is scored on the same rubric and the same sources as every other option.

Underneath every one of them sits the same thing: Kafka’s authorizer and the kafka-acls.sh tool that ships with Apache Kafka. Our Kafka ACL page covers the syntax and the copy-paste commands. It sits under Kafka stream governance, and the complete Kafka guide holds the wider picture. This page is for the point where running those commands by hand stops scaling and you need to pick a tool.

How to score a Kafka ACL tool

A data platform team looking for an ACL tool is usually solving three problems at once: proving who granted access and why, handling prefixed rules so the ACL count does not explode, and automating the separate ACL sets that producers, consumers and stream processors each need. Those three are the first three criteria. The last two come from what goes wrong after the tool is in place.

1. Auditability. Can you answer “who granted write on this topic, when, and who approved it” without reading broker logs? Git history, an audit log or a request trail all count. A tool that writes ACLs straight to the cluster and keeps no record fails this for an auditor even if it works perfectly.

2. Pattern handling. Kafka supports literal and prefixed resource patterns, added in KIP-290, so one ACL can cover every topic starting with payments.:

kafka-acls.sh --bootstrap-server localhost:9092 --add \
  --allow-principal User:Jane --producer \
  --topic payments. --resource-pattern-type prefixed

A tool that can only express literal ACLs will push you towards thousands of entries. The Apache Kafka documentation also warns that listing ACLs for a topic returns only exact matches unless you ask for --resource-pattern-type match, which is how people miss the prefixed rule that is actually granting access.

3. Automation. A Kafka Streams application needs a different set of ACLs from a plain consumer, and writing each set by hand is where mistakes creep in. The strongest tools derive the ACLs from a description of the service. ACLs deserve the same treatment as broker config, which in our Kafka operational issues talk I described as version-controlled and applied through CI where you can.

4. Drift and source of truth. What happens when someone adds an ACL with the CLI during an incident? In the same talk I pointed out that teams running GitOps still keep a break-glass path for emergency changes, and those changes do not always make it back into the repository. The advice I give for config applies here too: diff what is running against your baseline after every incident. Some tools detect or revert drift, most ignore it.

5. Visibility. Can an engineer see which ACLs actually apply to a principal or a topic, without composing a --list query? This is the criterion people underrate until the first “why can’t my service read this topic” ticket. The German bank NORD/LB put it directly in its case study with us: “If you want to check if your SSL certificate is authorized to access a topic and so on, it’s really nice to just have it displayed in Kpow.”

One more distinction runs through all five. Kafka ACLs authorize principals on the connection to the broker, which usually means services. People logging in to a tool are a separate identity problem. Tom Crowley, our founding engineer, draws the line clearly when customers ask how Kpow relates to ACLs: “Kpow does not use Kafka ACLs to authorize a user’s request, instead we use our RBAC permissions to authorize requests”, while ACLs are “assigned to Kpow’s AdminClient connection, determining how Kpow is authorized when making Kafka AdminClient calls”. Keep machine ACLs and human roles in separate models and both stay manageable. The human side has its own comparisons: Kafka RBAC tools for role models and Kafka SSO tools for getting identities into them.

GitOps and declarative infrastructure as code

Rank 4

32 out of 50 Total

Group
GitOps
Latest release
0.2.15, February 2021
Auditability
8 out of 10
Pattern handling
7 out of 10
Automation
9 out of 10
Drift and source of truth
5 out of 10
Visibility
3 out of 10

What it is: a desired-state tool for topics and ACLs.

Strengths: you describe services, and it generates the ACLs each type needs, with its README saying there is “no need to manually create a bunch of ACLs for Kafka Connect, Kafka Streams, etc.” It produces a plan before applying, much like Terraform.

Weaknesses: the last release was 0.2.15 in February 2021.

Source: kafka-gitops.

Rank 5

32 out of 50 Total

Group
GitOps
Formerly
Kafka Topology Builder
Status
In hibernation, per its README
Auditability
8 out of 10
Pattern handling
7 out of 10
Automation
9 out of 10
Drift and source of truth
5 out of 10
Visibility
3 out of 10

What it is: formerly Kafka Topology Builder, a GitOps CLI for topics, ACLs, Confluent RBAC bindings and schemas.

Strengths: automatic ACLs for consumers, producers, Connect, Kafka Streams and ksqlDB applications, topic naming conventions, and a documented pull-request change process.

Weaknesses: the maintainer’s own README describes the project as in “hibernation” and asks users to “take the project with care”.

Source: Julie Ops.

Rank 6

Kafka Security Manager

31 out of 50 Total

Group
GitOps
Latest release
v1.0.1, January 2022
Auditability
8 out of 10
Pattern handling
7 out of 10
Automation
3 out of 10
Drift and source of truth
10 out of 10
Visibility
3 out of 10

What it is: an open-source controller, sponsored by Conduktor, that treats an external source such as a Git repository as the truth for ACLs.

Strengths: its README says ACLs added with the CLI “would be reverted by KSM within 10 seconds”, which is the strongest drift answer in this list.

Weaknesses: the last release was v1.0.1 in January 2022 and parts of its documentation still describe ZooKeeper as the ACL store.

Source: the project’s GitHub README.

Rank 7

Strimzi User Operator

strimzi.io

30 out of 50 Total

Group
GitOps
Requires
Kafka on Kubernetes under Strimzi
Auditability
8 out of 10
Pattern handling
7 out of 10
Automation
5 out of 10
Drift and source of truth
7 out of 10
Visibility
3 out of 10

What it is: part of the Strimzi operator for Kafka on Kubernetes. Each KafkaUser resource carries its ACL rules, and with simple authorization the operator manages them through the Kafka Admin API.

Strengths: ACLs live next to the user’s credentials as Kubernetes resources, so GitOps tooling such as Argo CD or Flux applies them, and Strimzi rejects ACL rules if ACL management is not enabled for the cluster’s authorization type.

Weaknesses: it assumes Kafka on Kubernetes under Strimzi.

Source: Strimzi deploying guide, configuring user authorization.

Rank 9

Terraform with the Kafka provider

github.com/Mongey/terraform-provider-kafka

28 out of 50 Total

Group
GitOps
License
MIT
Latest release
v0.13.1, September 2025
Auditability
8 out of 10
Pattern handling
7 out of 10
Automation
5 out of 10
Drift and source of truth
5 out of 10
Visibility
3 out of 10

What it is: Mongey/terraform-provider-kafka, MIT licensed, latest release v0.13.1 (September 2025), with a kafka_acl resource alongside kafka_topic.

Strengths: if your company already runs Terraform, ACLs join the same plan, review and apply flow as the rest of your infrastructure, and the pull request is the audit trail.

Weaknesses: it manages the ACLs you declare, one resource per ACL, with no derivation of service ACL sets, and a change made outside Terraform only shows up the next time someone runs a plan.

Source: terraform-provider-kafka.

Rank 11

kafka-acls.sh and the Admin API (the baseline)

kafka.apache.org

16 out of 50 Total

Group
Baseline
Ships with
Apache Kafka
Auditability
2 out of 10
Pattern handling
8 out of 10
Automation
3 out of 10
Drift and source of truth
0 out of 10
Visibility
3 out of 10

What it is: the CLI in every Kafka distribution’s bin directory, and the Admin API it calls.

Strengths: complete, supports literal and prefixed patterns, --producer and --consumer convenience flags, no extra system to run.

Weaknesses: no record of who ran what beyond your shell history, no drift detection, and the list semantics above catch people out.

Source: Apache Kafka authorization and ACLs.

Self-service portals and governance workflows

Conduktor Console. What it is: a commercial Kafka console. Conduktor’s documentation, Self-service concepts page, describes applications that own topics and ACLs, and cross-team access requests approved by the owning application team rather than the platform team, with every change going into Git. Weaknesses on this rubric: it is a commercial platform with its own ownership model to adopt. Source: Conduktor’s documentation (not linked).

Rank 2

33 out of 50 Total

Group
Self-service portal
License
Apache 2.0
Latest release
v2.10.6, September 2026
Auditability
8 out of 10
Pattern handling
7 out of 10
Automation
5 out of 10
Drift and source of truth
6 out of 10
Visibility
7 out of 10

What it is: an open-source, Apache 2.0 self-service portal for topics, ACLs, schemas and connectors, maintained under the Aiven-Open GitHub organisation, latest release v2.10.6 in September 2026.

Strengths: every ACL create or delete is a request that someone approves, service accounts are assigned to the requesting team, roles can come from Active Directory, and it reconciles its records against the cluster and emails the differences. Of every tool here it is the most direct answer to “stop engineers messaging the platform team for access”.

Weaknesses: it governs requests made through Klaw, so direct CLI changes still need the reconciliation report to surface.

Source: Klaw.

Centralized enterprise security managers

Rank 3

Apache Ranger

ranger.apache.org

33 out of 50 Total

Group
Central security manager
Model
Replaces Kafka ACLs
Auditability
8 out of 10
Pattern handling
8 out of 10
Automation
5 out of 10
Drift and source of truth
5 out of 10
Visibility
7 out of 10

What it is: an Apache framework for central security policy and auditing across a data platform, with a Kafka plugin that implements Kafka’s Authorizer interface.

Strengths: one policy console for Kafka, HDFS, Hive and the rest, role and attribute-based policies, and central audit of access decisions. If your organisation already runs Ranger, putting Kafka under it is the cleanest way to match Kafka permissions to the rest of the data stack.

Weaknesses: Ranger policies replace Kafka ACLs rather than managing them, so ACL-based tools and scripts stop describing what is enforced.

Sources: Apache Ranger, Ranger Kafka plugin source.

Rank 8

29 out of 50 Total

Group
Central security manager
Model
Replaces Kafka ACLs
Latest plugin release
v1.5.1, March 2023
Auditability
5 out of 10
Pattern handling
8 out of 10
Automation
8 out of 10
Drift and source of truth
5 out of 10
Visibility
3 out of 10

What it is: a broker authorizer plugin that sends each decision to an OPA policy.

Strengths: policy as code in Rego, so a rule such as “services may only write to topics under their own prefix” is one rule rather than an ACL per service.

Weaknesses: the plugin’s last release was v1.5.1 in March 2023, it needs OPA running beside every broker, and like Ranger it replaces ACLs rather than managing them.

Source: opa-kafka-plugin.

Kafka UIs for ACL management

Rank 1

32 out of 50 Total

Listed first because it is our product. Scores are unadjusted.

Group
Kafka UI
ACL views
Principals, hosts, resources and controls
ACL actions
Create, clone and delete
Auditability
8 out of 10
Pattern handling
8 out of 10
Automation
5 out of 10
Drift and source of truth
1 out of 10
Visibility
10 out of 10

Covered in its own section below.

Rank 10

Kafbat UI

ui.docs.kafbat.io

19 out of 50 Total

Group
Kafka UI
License
Apache 2.0
ACL access
View and edit
Auditability
6 out of 10
Pattern handling
5 out of 10
Automation
0 out of 10
Drift and source of truth
1 out of 10
Visibility
7 out of 10

Open source, Apache 2.0. Its RBAC model includes view and edit permissions for ACLs.

Source: Kafbat UI RBAC.

Rank 12

AKHQ

akhq.io

11 out of 50 Total

Group
Kafka UI
License
Apache 2.0
ACL access
Read only
Auditability
1 out of 10
Pattern handling
2 out of 10
Automation
0 out of 10
Drift and source of truth
1 out of 10
Visibility
7 out of 10

Open source, Apache 2.0. Its role model includes an ACL resource with read access only, so AKHQ shows ACLs but does not create or delete them.

Source: AKHQ groups and roles.

Tools compared

Kafka ACL management tools scored on the five criteria (read 22 September 2026)
Tool Auditability Pattern handling Automation Drift Visibility Source
kafka-acls.sh Weak. Nothing beyond shell history and broker logs Strong. Literal and prefixed, plus match for listing Weak. --producer and --consumer flags only None Weak. You compose the query Apache Kafka docs
Terraform Kafka provider Strong. Pull requests and plans Good. Pattern type on each kafka_acl resource Partial. One resource per ACL Detected at the next plan Weak. State file, not a view GitHub
kafka-gitops Strong. Git history Good Strong. Derives service ACLs Plan shows drift Weak GitHub
Julie Ops Strong. Git history Good Strong. Derives ACLs for many app types On next run Weak GitHub
Strimzi User Operator Strong. Git history of KafkaUser resources Good. Literal and prefix in resource rules Partial. Rules per user Operator reconciles its own users Weak Strimzi docs
Kafka Security Manager Strong. Source repo history Good Weak Strong. Reverts within 10 seconds Weak Project README (not linked)
Klaw Strong. Request and approval trail Good. Literal and prefixed subscriptions Partial. Per request Reconciliation report by email Good. Per-team ACL views and reports GitHub
Apache Ranger Strong. Central audit Strong. Its own policy model Partial Not applicable. Ranger is the enforcement Good. Policy console ranger.apache.org
OPA plugin Depends on policy repo and OPA logs Strong. Anything Rego expresses Strong for rule-based access Not applicable Weak GitHub
AKHQ Opt-in audit to a topic, not for ACLs Read only None None Good for reading AKHQ docs
Kafbat UI Audit log to a topic or console View and edit None None Good Kafbat docs
Kpow Strong. Every ACL create, clone and delete in the audit log Full Kafka ACL surface Partial. Clone a principal's ACLs to another None. Reads the cluster live Strong. Principals, hosts, resources and controls tables, plus per-topic and per-group ACL tabs Kpow ACL docs

No tool wins every column, and the gaps line up by group. GitOps tools are strongest on auditability and automation and weakest on visibility. UIs are the reverse. Ranger and OPA replace ACLs and so change the question entirely. Most platform teams end up with a GitOps tool as the source of truth for service ACLs and a UI for seeing what is actually in force.

How Factor House approaches it

Kpow’s position is that ACLs for services belong in whatever infrastructure-as-code you already run, and that the job of a UI is to show what is really on the cluster, change it safely when you have to, and record every change. Toby Roger, on our team, describes the division of labour the same way: Terraform-style config and schema tooling are solved elsewhere, and Kpow’s job is the data access layer.

In practice, the ACL management screens break a cluster’s ACLs into four tables, principals, hosts, resources and controls, and the Topics and Consumers pages have their own ACL tabs filtered to that topic or group. You can create an ACL, delete at the control, resource, host or principal level, or clone every ACL for one principal to another, which is how you onboard a second instance of a service without retyping its rules. Every create, clone and delete is written to the audit log, the layer compared in Kafka audit logging tools. Tom summed up the coverage for our own sales team as “the full surface area of Kafka broker ACL management”.

Who may edit ACLs in Kpow is itself a Kpow RBAC decision, through the ACL_EDIT action, so you can let a platform team manage ACLs while application teams only view them. The effect of this, as NORD/LB described it, was separating people from service identities: “In production, we really want to narrow what people can see, and with Kpow’s two-step authorization, we could finally enforce that.”

Where Kpow does not win: it has no drift detection or desired-state model, so it does not replace Terraform, Strimzi or kafka-gitops as a source of truth. It manages Kafka ACLs, not Confluent’s RBAC role bindings, which Tom confirmed is a backlog item rather than a shipped feature. For how RBAC and tenancy let many teams share clusters, see Kpow multi-tenancy.

To judge the visibility criterion for yourself, open the Kpow demo and explore a live cluster’s topic, consumer group and broker screens, where the ACL tabs described above sit, before pointing Kpow at your own cluster.

Kpow live demo

See Kafka ACLs and user roles apart

Explore Kpow in a live environment, then weigh how its role-based permissions for people sit alongside the ACLs your services use.

For platform and security teams who have to show who can do what.

Try the Kpow demo

FAQ

What is the best free tool to manage Kafka ACLs?

For a source of truth, the Terraform Kafka provider or Strimzi’s User Operator, depending on whether you run Terraform or Kubernetes. For an approval workflow, Klaw. kafka-acls.sh remains the baseline every tool builds on.

Should Kafka ACLs be managed with GitOps?

For service principals, yes. A pull request gives you review and an audit trail, and a desired-state tool can derive the ACL set a Streams or Connect application needs. Keep a UI or a regular diff for the changes made outside the repository during incidents.

How do I avoid thousands of Kafka ACLs?

Use prefixed resource patterns, name topics so one prefix maps to one owning team, and grant ACLs to service principals rather than individuals. Where rules get more complex than prefixes, Apache Ranger or an OPA policy can replace per-ACL entries with one rule.

Can Kpow manage ACLs on Confluent Cloud?

Kpow manages Kafka ACLs on any cluster its credentials can administer. It does not manage Confluent’s RBAC role bindings.

Related reading