有没有一种方法可以设置kafka acl,允许在不列出任何消费者组的情况下使用它们

ryoqjall  于 2021-06-05  发布在  Kafka
关注(0)|答案(1)|浏览(470)

我正在尝试设置kafka,其中每个用户都有几个主题,但是每个主题都可以由主题所属的用户与任意数量的使用者组一起使用。
使用的Kafka服务器版本:Kafka2.12-2.4.0(commit:77a89fcf8d7fa018)
使用的Kafka客户端版本:confluent kafka 1.2.2
在kafka中,acl已经成功地配置了用户,所以他们只能访问自己的主题。我正在努力设置组权限,这样每个用户就可以为自己的主题使用任意数量的用户组,而不必查看其他用户组有哪些用户组。
通过以下功能,每个用户都可以使用任何用户组:

bin/kafka-acls.sh localhost:9092 --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=zookeeper.address --add --allow-principal User:* --operation Read --group '*'

然而,根据https://docs.confluent.io/current/kafka/authorization.html 读操作隐式授予描述操作。正如描述的操作包括访问“listgroup”api,我不希望我的用户能够这样做,我执行了以下操作:

bin/kafka-acls.sh localhost:9092 --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=zookeeper.address --add --deny-principal User:* --operation Describe --group '*'

上面的两个命令产生以下ACL:

Current ACLs for resource `Group:LITERAL:*`:
        User:* has Deny permission for operations: Describe from hosts: *
        User:* has Allow permission for operations: Read from hosts: *

问题是我遇到了以下例外:

Confluent.Kafka.ConsumeException: Broker: Group authorization failed

这让我相信我不是在尝试去实现不可能的事情,就是在尝试错误的事情。
tldr:是否可以设置kafka ACL以允许在不同时授予listgroups api权限的情况下使用任何使用者组?
谢谢你的回答。

zynd9foi

zynd9foi1#

目前决定使用前缀。效果很好。对于那些想知道如何做到这一点的人:

bin/kafka-acls.sh localhost:9092 --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=zookeeper.address --add --allow-principal User:XYZ --operation Read --group 'ABC-' --resource-pattern-type prefixed

这段代码将允许用户“xyz”使用以“-”开头的任何消费者组,如“-123”

相关问题