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 規則,以及為用戶分配角色。