streams

Users & ACLs

Use SCRAM users and ACLs to give each app only the Kafka permissions it needs.

Last updated ยท 29 May 2026


Every Streams cluster is created with an admin SCRAM credential. For applications, create separate SCRAM users and grant only the required Kafka ACLs.

Create a user

exc stream user create \
  --id <cluster_id> \
  --username orders-app

The response includes the generated password once. Store it in Secrets or your own secret manager before you close the terminal.

List users

exc stream user list --id <cluster_id>

Passwords are never returned by list.

Rotate a password

exc stream user rotate \
  --id <cluster_id> \
  --username orders-app

Update your application secret with the new password before restarting consumers or producers.

Delete a user

exc stream user delete \
  --id <cluster_id> \
  --username orders-app

Deleting a user removes its SCRAM credential. Existing clients using that username will fail authentication.

Create ACLs

Kafka principals use the User:<username> form:

exc stream acl create \
  --id <cluster_id> \
  --principal User:orders-app \
  --resource_type TOPIC \
  --resource_name orders \
  --operation READ \
  --pattern_type LITERAL \
  --permission_type ALLOW \
  --host '*'

Create separate ACLs for each operation the app needs, such as READ, WRITE, CREATE, or DESCRIBE.

List ACLs

exc stream acl list --id <cluster_id>

Delete an ACL

exc stream acl delete \
  --id <cluster_id> \
  --acl_id <acl_id>

Required permissions

ActionPermission
List usersstream:user:list
Create userstream:user:create
Rotate userstream:user:rotate
Delete userstream:user:delete
List ACLsstream:acl:list
Create ACLstream:acl:create
Delete ACLstream:acl:delete

See the Policies guide.