有没有办法设置 Kafka ACL 以允许使用任何消费者组而不列出它们

Is there a way to set up Kafka ACL to allow using any consumer group without listing them

我正在尝试设置 Kafka,其中每个用户都有多个主题,但每个主题可能会被该主题所属的用户与任意数量的消费者组一起使用。

使用的 Kafka 服务器版本:kafka_2.12-2.4.0(提交:77a89fcf8d7fa018)

使用的Kafka客户端版本: confluent kafka 1.2.2

在Kafka ACL中已经成功配置用户,所以他们只能访问自己的topic。我正在努力以这样一种方式设置组权限,即每个用户都可以仅针对自己的主题使用任意数量的消费者组,而无需查看其他消费者组。

以下内容使每个用户都可以使用任何消费者组:

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 Read 操作隐式授予 Describe 操作。由于 Describe 操作包括访问 '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 权限?

感谢您的回答。

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

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' 使用任何以 'ABC-' 开头的消费者组,例如 'ABC-123'