Apache kafka 有没有办法设置Kafka ACL以允许在不列出任何消费者组的情况下使用它们
我正在尝试设置Kafka,其中每个用户都有几个主题,但是每个主题都可以由该主题所属的用户使用任意数量的消费者组 使用的Kafka服务器版本:Kafka_2.12-2.4.0(提交:77a89fcf8d7fa018) 使用的卡夫卡客户端版本:融合卡夫卡1.2.2 在Kafka中,ACL已成功配置用户,因此他们只能访问自己的主题。我正在努力以这样的方式设置组权限:每个用户都可以为自己的主题使用任意数量的消费组,而不必查看其他用户的消费组 以下内容允许每个用户使用任何消费者组:Apache kafka 有没有办法设置Kafka ACL以允许在不列出任何消费者组的情况下使用它们,apache-kafka,apache-kafka-security,Apache Kafka,Apache Kafka Security,我正在尝试设置Kafka,其中每个用户都有几个主题,但是每个主题都可以由该主题所属的用户使用任意数量的消费者组 使用的Kafka服务器版本:Kafka_2.12-2.4.0(提交:77a89fcf8d7fa018) 使用的卡夫卡客户端版本:融合卡夫卡1.2.2 在Kafka中,ACL已成功配置用户,因此他们只能访问自己的主题。我正在努力以这样的方式设置组权限:每个用户都可以为自己的主题使用任意数量的消费组,而不必查看其他用户的消费组 以下内容允许每个用户使用任何消费者组: bin/kafka-a
bin/kafka-acls.sh localhost:9092 --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=zookeeper.address --add --allow-principal User:* --operation Read --group '*'
然而,根据读取操作隐式授予描述操作。如上所述,操作包括访问“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”现在决定使用前缀。效果很好。 对于那些想知道如何做到这一点的人:
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”