Kafka 的 Broker 权限管理主要通过访问控制列表(Access Control List,ACL)来实现。ACL 是一组允许或拒绝用户对 Kafka 资源(如主题、分区等)执行特定操作的规则。Kafka 还支持基于角色的访问控制(Role-Based Access Control,RBAC),通过为用户分配角色来简化权限管理。
以下是 Kafka Broker 权限管理的关键概念和步骤:
首先,需要在 Kafka 配置文件 server.properties
中启用 ACL 支持:
kafka.security.authorization.enable=true
使用 kafka-acls.sh
工具创建 ACL 规则。例如,创建一个用户 user1
并授予其对主题 my-topic
的读权限:
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--add --allow --user=user1 --operation=Read --topic=my-topic
Kafka 还支持基于角色的访问控制。可以创建角色并分配权限,然后将角色分配给用户。例如,创建一个角色 reader
并授予其对主题 my-topic
的读权限:
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--add --allow --role=reader --operation=Read --topic=my-topic
然后为用户 user1
分配角色 reader
:
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--add --allow --user=user1 --role=reader
可以使用 kafka-acls.sh
工具验证 ACL 规则是否正确应用:
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--list --topic=my-topic
当用户尝试执行受保护的操作时,Kafka 会根据 ACL 规则进行授权检查。如果用户没有相应的权限,操作将被拒绝。
Kafka 的 Broker 权限管理通过 ACL 和 RBAC 实现。ACL 提供了细粒度的权限控制,而 RBAC 则简化了权限分配和管理。通过 kafka-acls.sh
工具,可以轻松地创建和管理 ACL 规则,以及为用户分配角色。