如何限制kafka管理客户端访问控制以授予acl权限?

qaxu7uf2  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(629)

总结
主要的问题是如何确保Kafka上ACL的设置安全。ACL可以用来限制谁可以使用/产生主题,但是ACL的设置是如何限制的?e、 g.另一台网络机器上的某个用户使用 kafka-acls.sh 细节
我对kafka还很陌生,我刚刚建立了我的第一个kafka 1.0.0集群,我正在使用kafka admin cli(kafka acls.sh)为主体授予acl。
我发现了一个问题:我可以在任何其他机器上使用这个kafka-acls.sh来操纵我的kafka集群,而不需要任何许可?!这是现有的安全问题吗?
我的要求是,作为一名管理员,对于我的Kafka主题,我会授予消费者阅读权限。但如果消费者所有者可以使用kafka-acls.sh,他们可以自己添加该权限。
我试过这些:
kafka-acls.sh—授权者属性zookeeper.connect=localhost:2181 --add --cluster--操作create--拒绝主体用户:*
kafka-acls.sh—授权者属性zookeeper.connect=localhost:2181 --add --cluster--操作alter--拒绝主体用户:*
资源的当前ACL Cluster:kafka-cluster :
用户:*对操作具有拒绝权限:从主机创建:*用户:对操作具有拒绝权限:从主机更改:
我希望这可以阻止任何人改变任何主题的ACL;但我还是可以允许任何校长。我期待在Kafka属性文件中的一些设置,可以做的工作。我的有关acl的属性设置为:

切换是否启用主题删除,默认值为false#delete.topic.enable=true

在代理上启用zookeeper身份验证zookeeper.set.acl=true

authorizer.class.name=kafka.security.auth.simpleClauthorizer
超级用户=user:admin
有没有办法限制管理员cli,伙计们?
如有任何建议,将不胜感激。

xtfmy6hx

xtfmy6hx1#

ACL存储在zookeeper中,因此您需要以安全模式运行zookeeper,并具有经过身份验证的访问权限(需要apache kafka 0.9或更高版本)。
https://cwiki.apache.org/confluence/display/kafka/kip-38%3a+zookeeper+authentication
这将允许您限制acl管理工具在任何地方和任何人使用,因为它们包括zookeeper客户端,必须使用有效的管理凭据配置该客户端才能连接和更改存储在zookeeper中的kafka acl。
这篇博文中解释了一个安全的kafka代理和zookeeper设置示例https://www.confluent.io/blog/apache-kafka-security-authorization-authentication-encryption/
在apachekafka的最新版本中,还有一个名为adminclient的api,它允许在没有直接依赖关系或连接的情况下编写应用程序。在1.0.0中,adminclient包含创建ACL的方法。
https://kafka.apache.org/10/javadoc/index.html?org/apache/kafka/clients/admin/adminclient.html
但是目前/bin中的cli命令还没有被重写以使用这个新的api,这就是为什么它们仍然直接连接到zookeeper的原因。

相关问题