ACLs
The following page provides a management guide for ACLs (Access Control Lists). This document provides instructions on how to enable, disable, create, and delete ACLs for your WarpStream clusters.
Prerequisites
Before you begin, ensure you have administrative access to the WarpStream console and are familiar with the basic concepts of ACLs.
The current version of ACLs supports SASL and mTLS authentication method. Review Authentication for more information.
Important: ACLs are only compatible with Agent version 526 and above. Make sure you use a compatible agent version, if your cluster has self-hosted agents.
Important considerations
There are a few things to keep in mind when using ACLs, which are covered below.
ACL Principal
ACLs operate using Principals, which are entities capable of being authenticated by the Authorizer. In the context of WarpStream agents, clients authenticate as a specific principal by utilizing either SASL or mTLS authentication.
With SASL, the principal is identified by the assigned username(prefixed with ccun_
) or chosen name during credential creation.
With mTLS, the principal is identified from the Distinguished Name(DN) from the client TLS certificate. To use a custom principal, view the mutual TLS authentication page. Importantly, note that mTLS ACL principals don't have to be identified using a valid cluster credential username(ccun_...
) or cluster credential name like the SASL ACL principals.
Super users
In the context of ACLs, a 'superuser' is a specially designated user who possesses elevated privileges. Superusers are granted overarching access rights, allowing them to bypass standard ACL restrictions. This includes unrestricted abilities to create, modify, or delete resources, and to manage access controls for other users. In Warpstream you can create super users through the credentials, as explained at SASL Generating Credentials.
For SASL, you can authorize as super user by setting your SASL username as either the generated cluster credentials username(ccun_
) or by using the "Name" which you set while generating credentials.
For mTLS, the ACL principal is either the Distinguished Name(DN) from the client TLS certificate, or extracted from the DN according to the -tlsPrincipalMappingRule
flag set in the Agents as described in the mutual tls authentication page.
If you set a
tlsPrincipalMappingRule
in the Agents, then you need to make sure that the string extracted from the DN which will be used as the ACL principal matches either the "Name" you picked when generating credentials or matches the generated cluster credentials username(ccun_
).If you don't set a
tlsPrincipalMappingRule
in the Agents and if you set the "Name" when generating credentials as the DN of your certificate, then the certificate will authorize as superuser.
Caching of ACLs
For performance reasons, ACLs are cached, so changes to ACLs may take between 30 seconds to 1 minute to take effect. Plan accordingly when updating ACLs in a production environment to ensure a smooth transition.
allow.everyone.if.no.acl.found
Warpstream does not implement the allow.everyone.if.no.acl.found
Kafka configuration, because:
It's not safe for production environments.
You can get the equivalent (and safer) behaviour by simply using Super users, who are authorized to access everything.
Enabling and Disabling ACLs
To Enable ACLs
Navigate to the WarpStream console.
Select the desired Virtual Cluster, for example
vcn_default
.Click on the
ACLs
tab.You will see the
ACLs: Disabled
status label if ACLs are currently disabled.Click on the
Enable ACLs
button to change its status toEnabled
.
To Disable ACLs
Follow the same steps to navigate to the
ACLs
tab of your Virtual Cluster.If ACLs are enabled, you will see the
ACLs: Enabled
status label.Click on the
Disable ACLs
button to turn off ACLs for the cluster.
Enable/Disbable Using the HTTP API
Alternatively, you can switch ACLs on and off using the HTTP APIs, which is a convenient alternative to doing it through the console UI. Refer toDescribeConfiguration and UpdateConfiguration for details.
Generating Credentials
To interact with WarpsSream clusters, you need to generate credentials:
Within the WarpStream console, navigate to the
Credentials
tab of your Virtual Cluster.Click on
Generate Credentials
.Provide a name for the credentials.
If necessary, enable
Super User
for broader permissions.Important: If a resource has no associated ACLs, then only superusers can access that resource.
Click
Generate Credentials
. The credentials will be displayed for you to use with the CLI.
Important: Credentials are shown only once. Store them securely.
Managing ACLs via Kafka API
To manage ACLs via the Kafka API, use the Kafka Admin API with appropriate Kafka credentials.
Create an ACL
To create an ACL, use the createAcls
method with the required ACL details:
Delete an ACL
To delete an ACL, use the deleteAcls
method with a filter matching the ACL you wish to remove:
The examples above use the librdkafka
package from Go. You can also try the bin/kafka-acls.sh
script from Apache Kafka®'s official binary release for more hands-on experience:
Last updated