代码之家  ›  专栏  ›  技术社区  ›  Dan Loc

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

  •  2
  • Dan Loc  · 技术社区  · 7 年前

    总结

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

    细节

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

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

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

    我试过这些:

    卡夫卡acls。sh—授权人属性zookeeper。connect=本地主机:2181--添加--群集--操作创建--拒绝主体用户:*

    卡夫卡acls。sh—授权人属性zookeeper。connect=本地主机:2181--添加--群集--操作更改--拒绝主要用户:*

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

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

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

    #切换是否启用主题删除,默认值为false #删除。话题启用=真

    ###在代理上启用ZooKeeper身份验证 动物园管理员。设置acl=真

    授权人。班名称=卡夫卡。安全授权。简单授权人

    超级的用户=用户:管理员

    伙计们,有什么办法限制admin CLI吗?

    如有任何建议,将不胜感激。

    1 回复  |  直到 4 年前
        1
  •  2
  •   Hans Jespersen    7 年前

    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 broker和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的原因。