Kafka能否仅对SSL监听器启用SSL与ACL认证授权,PLAINTEXT监听器不生效?
Kafka双监听器差异化权限配置解决方案
该需求可以通过Kafka原生的监听器粒度权限配置实现,不需要修改全局权限逻辑,具体操作步骤如下:
1. 调整服务端配置
首先保留全局ACL安全规则,同时给PLAINTEXT监听器单独配置权限策略,修改server.properties配置文件:
- 保留全局配置
allow.everyone.if.no.acl.found=false,保证SSL监听器默认没有匹配ACL时拒绝所有访问,符合SSL端口的安全要求 - 新增PLAINTEXT监听器的专属权限配置:
# 配置值和你定义的PLAINTEXT监听器名称保持一致即可,比如监听器命名为PLAINTEXT_PUBLIC就填plaintext_public listener.name.plaintext.allow.everyone.if.no.acl.found=true
修改配置后重启Kafka集群生效。
2. 配置SSL监听器ACL规则
仅给需要访问SSL端口的已知用户配置对应资源权限,示例ACL配置命令如下:
# 给指定用户授予所有Topic的读写权限 kafka-acls.sh --authorizer-properties zookeeper.connect=zk集群地址:2181 \ --add --allow-principal User:指定用户名 \ --operation Read --operation Write --topic '*'
如果你使用KRaft模式的Kafka集群,将命令中的
zookeeper.connect参数替换为bootstrap-server指向SSL监听器地址即可。
3. 权限效果验证
- SSL监听器:未配置ACL的用户、匿名用户访问会被直接拒绝,仅授权用户可以正常访问对应资源
- PLAINTEXT监听器:所有用户包括匿名用户无需配置ACL即可获得全量访问权限,完全符合开放需求
内容的提问来源于stack exchange,提问作者FrVaBe
相关产品推荐
相关产品推荐

