如何限制Kafka Admin Client访问控制以授予acl权限?

时间:2018-01-07 21:54:36

标签: permissions apache-kafka acl

摘要

主要问题是如何确保在Kafka上设置ACL的设置。 ACL可用于限制谁可以使用/生成主题,但ACL的设置如何受限制?例如。使用kafka-acls.sh

的其他网络计算机上的某些用户

详情

我对kafka很新,我刚刚建立了我的第一个kafka 1.0.0群集,而我正在使用Kafka管理员CLI(kafka-acls.sh)为校长授予acls。

这是我发现的问题:我可以在任何其他机器上使用此kafka-acls.sh来操作我的kafka群集,而无需任何许可?!这是现有的安全问题吗?

我的要求是,作为管理员,对于我的kafka主题,我会向消费者授予读取权限。但如果消费者所有者可以使用kafka-acls.sh,他们可以自己添加该权限。

我试过这些:

  

kafka-acls.sh --authorizer-properties zookeeper.connect = localhost:2181 --add --cluster --operation创建--deny-principal用户:*

     

kafka-acls.sh --authorizer-properties zookeeper.connect = localhost:2181 --add --cluster --operation Alter - deny-principal用户:*

     

资源Cluster:kafka-cluster的当前ACL:

     

用户:*拥有拒绝操作权限:从主机创建:*    用户:*具有拒绝操作权限:来自主机:*

我希望这可以阻止任何人更改任何主题的ACL;但我仍然可以给任何委托人许可。我期待kafka属性文件中的一些设置可以完成工作。我关于ACL的属性设置是:

  

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

     

###在代理上启用ZooKeeper身份验证   zookeeper.set.acl =真

     

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

     

super.users =用户:管理

任何限制管理员CLI的想法,伙计们?

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

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/

在更新版本的Apache Kafka中,还有一个名为AdminClient的API,它允许在没有直接的Zookeeper依赖关系或连接的情况下编写应用程序。在1.0.0中,AdminClient包含创建ACL的方法。

https://kafka.apache.org/10/javadoc/index.html?org/apache/kafka/clients/admin/AdminClient.html

但是目前还没有重写/ bin中的CLI命令来使用这个新的API,这就是为什么它们仍然直接连接到Zookeeper。