欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

kafka topic acl授权

程序员文章站 2024-02-28 17:31:58
...

在前一篇,kafka启用认证(http://blog.csdn.net/zhoudetiankong/article/details/78229416)的基础上,来说明kafka topic的acl权限。

1.修改server.properties

authorizer.class.name = kafka.security.auth.SimpleAclAuthorizer

#设置超级用户
super.users=User:admin

allow.everyone.if.no.acl.found参数,默认是false。如果一个资源R没有任何acl设置,那么默认是除了超级用户之外,其他用户都不可见。设置为true可以改变这个情况。

2.授权方法

Principal P is [Allowed/Denied] Operation O From Host H On Resource R

需要说明的是,Principal是根据之前的kafka认证中的主体,比如我上篇使用的是SASL/PLAIN,则acl授权体系中 Principal=PLAIN中的用户名。我刚开始打算单独使用kafka acl而不启用kafka authentication,结果是Principal并不是我想象中的linux用户名,而是基于kafka authentication体系中的用户名,这样才能生效。另外,可以通过重写principal.builder.class参数的类,来实现单独使用acl。

以上一篇中的例子来说明,plain中配置了两个用户,admin和alice。
现在授权给aclie用户topic:test的生产者和消费者的权限,没有限定ip。

授权用户alice在任何ip上有topic:test的生产者权限

./kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:alice   --producer  --topic test

授权用户alice在任何ip上有topic:test的消费者权限,并且group是任意名字

./kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:alice   --consumer  --group=*  --topic test

查看kafka集群所有的acl授权信息

./kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --list

具体授权使用方法可以查看官网:
http://kafka.apache.org/0102/documentation.html#security_authz_examples

另外需要注意的是,由于acl信息存储在zookeeper中,所以在没有启用zookeeper权限体系的情况下,任何用户理论上都可以执行/kafka-acls.sh。