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

Permissions 如何限制Kafka管理客户端访问控制以授予acl权限?,permissions,apache-kafka,acl,Permissions,Apache Kafka,Acl,摘要 主要问题是如何确保在卡夫卡上设置ACL的安全。ACL可用于限制谁可以消费/生产主题,但如何限制ACL的设置?例如,某些用户在另一台网络计算机上使用kafka acls.sh 详细信息 我对kafka很陌生,我刚刚安装了第一个kafka 1.0.0集群,我正在使用kafka admin CLI(kafka acls.sh)为主体授予ACL 我发现了一个问题:我可以在任何其他机器上使用这个kafka-acls.sh来操纵我的kafka集群,而无需任何许可?!这是一个现有的安全问题吗 我的要求是

摘要

主要问题是如何确保在卡夫卡上设置ACL的安全。ACL可用于限制谁可以消费/生产主题,但如何限制ACL的设置?例如,某些用户在另一台网络计算机上使用
kafka acls.sh

详细信息

我对kafka很陌生,我刚刚安装了第一个kafka 1.0.0集群,我正在使用kafka admin CLI(kafka acls.sh)为主体授予ACL

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

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

我试过这些:

kafka-acls.sh--授权者属性zookeeper.connect=localhost:2181--添加--群集--操作创建--拒绝主体用户:*

kafka-acls.sh--授权者属性zookeeper.connect=localhost:2181--添加--群集--操作更改--拒绝主体用户:*

资源
群集的当前ACL:kafka群集

用户:*具有拒绝操作的权限:从主机创建:* 用户:*具有拒绝操作的权限:从主机更改:*

我希望这可以阻止任何人在任何主题上更改ACL;但我仍然可以允许任何校长。我期待一些设置在卡夫卡属性文件,可以做的工作。有关ACL的“我的属性”设置为:

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

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

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

super.users=用户:Admin

伙计们,有没有限制管理员CLI的想法


任何建议都将不胜感激。

ACL存储在Zookeeper中,因此您需要在安全模式下运行Zookeeper,并具有经过身份验证的访问权限(需要Apache Kafka 0.9或更高版本)

这将允许您限制ACL管理工具在任何地方和任何人使用,因为它们包括zookeeper客户端,为了连接和更改zookeeper中存储的Kafka ACL,必须使用有效的管理凭据配置该客户端

这篇博文中介绍了一个安全的Kafka代理和Zookeeper设置示例

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


但是,目前/bin中的CLI命令尚未重写以使用此新API,这就是它们仍然直接连接到Zookeeper的原因。

H Hans,感谢您的回复。同意您的zookeeper acl身份验证。非常有用的链接。我的朋友@acarlon也提到了这个KIP,我认为这对我理解这个问题同样重要。我还发现这个博客也很有帮助:我将更改我的zookeeper的身份验证和ACL。希望这些讨论也能帮助其他人。与此相关的,除了ACL。如何限制客户端创建主题,但仅使用管理客户端。我正在使用AWSMSK+基于证书的身份验证