Skip to content

AxonOps — AI-Native Control Plane for Open Source Data Platforms

Topic Access Control List (ACL)

Kafka Access Control Lists (ACLs) are a core part of Kafka’s security, defining which authenticated users or applications (principals) can perform specific operations on Kafka resources such as topics, consumer groups, or the cluster itself.

Kafka uses a pluggable authorization framework, enabled by setting the authorizer.class.name property in the broker configuration.

  • AclAuthorizer is used for ZooKeeper-based clusters (stores ACLs in ZooKeeper).
  • StandardAuthorizer is used for KRaft-based clusters (stores ACLs in Kafka metadata).

Before ACLs can be enforced, clients must be authenticated (commonly using SASL mechanisms). The authenticated identity is the principal referenced in ACLs

  • Principal (the user/application)
  • Operation (e.g., READ, WRITE)
  • Resource type (topic, group, cluster, delegation_token or transactional_id)
  • Permission type (ALLOW or DENY)
  • Host (the IP address or hostname)

The user or service account identity.

Format examples:

User:alice

User:admin

Define which users or services (principals) can perform specific operations.

OperationDescriptionTypical Resource(s)
READConsume messages from a topic, or read from a consumer groupTopic, Group
WRITEProduce (write) messages to a topicTopic
CREATECreate a new topic or consumer groupTopic, Group, Cluster
DELETEDelete a topic or consumer groupTopic, Group
ALTERChange configuration of a topic, group, or clusterTopic, Group, Cluster
ALTER_CONFIGSChange resource configuration (more granular than ALTER)Topic, Cluster
DESCRIBEView metadata of a resource (e.g., see topic or group details)Topic, Group, Cluster
DESCRIBE_CONFIGSView resource configurationTopic, Cluster
CLUSTER_ACTIONPerform internal cluster operations (e.g., leader election, replication)Cluster
ALLAll possible operations (admin-level permission)Any
IDEMPOTENT_WRITEAllow idempotent producer operationsCluster
Transactional and Delegation Token Operations
Section titled “Transactional and Delegation Token Operations”
OperationDescriptionTypical Resource(s)
WRITEInitiate and commit/abort transactionsTransactionalId
DESCRIBEView transactional state or delegation token detailsTransactionalId, DelegationToken

The type of Kafka resource to which the ACL applies:

  • Topic :

    Represents a Kafka topic, which is where messages are published and consumed.

  • Group :

    Refers to a consumer group, which is used for coordinating message consumption among multiple consumers.

  • Cluster :

    The entire Kafka cluster as a resource. Used for operations that affect the whole cluster.

  • Transactional ID :

    Identifies a transactional producer instance, enabling exactly-once semantics (EOS).

  • Delegation Token :

    Represents a token used for authentication between brokers and clients, often as part of SASL authentication.

  • ALLOW:

    Grants the specified operation(s) to the principal on the resource. If an ACL with ALLOW is present and matches the request, the operation is permitted.

  • DENY:

    Explicitly forbids the specified operation(s) to the principal on the resource. If an ACL with DENY matches, the operation is blocked—even if another ALLOW rule would also match.

  • Host Limiting:

    By specifying a host in an ACL, you restrict the permission so it only applies when the user connects from that host.

    e.g. setting the host as 192.168.1.100, will only allow or deny connections originating from that IP to perform the specific operation on the topic.

  • Wildcard Host:

    Using * means the permission applies from any host (no restriction).

  • Principals: Use a separate principal for each application or service. This limits the blast radius of a compromise and aids auditing.
  • Least Privilege: Grant only the permissions required for each principal - no more.
  • Host Restrictions: Use the host option to restrict access to trusted network locations or hosts.
  • Wildcard ACLs: Use with caution, typically only for admin users