基于ambari hdp的kafka用戶授權讀寫權限
- 版本Kafka 2.0.0
- 添加自定義配置
- 修改admin密碼
- 重啟kafka
- 授權讀取
- 授權寫入
- 有效通配符
- 部分舉例
版本Kafka 2.0.0
添加自定義配置
authorizer.class.name = kafka.security.auth.SimpleAclAuthorizer
super.users = User:admin
allow.everyone.if.no.acl.found = true
allow.everyone.if.no.acl.found
此處只說實踐中的結論
測試中針對消費者組起到了作用,
false必須嚴格按照授權的用戶組進行消費
true則不需要指定消費者組
如果沒有添加參數,組消費模式報錯
org.apache.kafka.common.errors.GroupAuthorizationException: Group authorization failed.
解決:
allow.everyone.if.no.acl.found=true
修改admin密碼
實踐測試中admin,屬于super用戶,可以繞過權限認證,只要密碼正確,可讀可寫
安全起見,還是修改下密碼,密碼上下兩個位置一樣才可以
重啟kafka
授權讀取
我的配置是沒有添加這個配置:allow.everyone.if.no.acl.found
給saa用戶授權A1 topic 的讀取權限(這里不知道為啥通配符* 沒有起作用)
./kafka-acls.sh --authorizer-properties zookeeper.connect=test-master1:2181 --add --allow-principal User:sunway --operation Read --topic A1
–add 改成 --remove是移除權限
./kafka-acls.sh --authorizer-properties zookeeper.connect=test-master1:2181 --remove --allow-principal User:sunway --operation Read --topic A1
授權寫入
kafka-acls.sh --authorizer-properties zookeeper.connect=test-master1:2181 --add --allow-principal User:sun --operation Write --topic A1
–add 改成 --remove是移除權限
同時有讀寫賦權
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=test-master1:2181 --add --allow-principal User:my_read_write --operation Read --group test-py-3 --topic TSET-2024042401 --operation Write --topic TSET-2024042401
** 賦予寫權限**
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=test-master1:2181 --add --allow-principal User:my_only_write --operation Write --topic TSET-2024042401
** 賦予讀權限**
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=test-master1:2181 --add --allow-principal User:sunway --operation Read --group ioi --topic kafka_vip_info
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=test-master1:2181 --list
有效通配符
## 無效命令
./kafka-acls.sh --authorizer-properties zookeeper.connect=test-master1:2181 --add --allow-principal User:sunway --operation Read --topic *## 有效命令
./kafka-acls.sh --authorizer-properties zookeeper.connect=test-master1:2181 --add --allow-principal User:sunway --operation Read --topic '*'
## 通配符* 需要加上單引號
部分舉例
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:z1 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:z2 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:z3 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:z4 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:z5 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:z6 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:c1 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:z8 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:z9 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:z10 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:z11 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:w1 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:z12 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:z13 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:z14 --operation Write --topic '*'
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=myhostname:2181 --add --allow-principal User:s1 --operation Read --topic '*'