【问题标题】:Kafka ACLs - unable to describe group or view offsets in Kafka Tool after setting ACLsKafka ACL - 设置 ACL 后无法在 Kafka 工具中描述组或查看偏移量
【发布时间】:2018-12-09 23:26:11
【问题描述】:

使用 Kafka 1.1 版
我已经在一个端口上为客户端启用了 SASL,同时使用 PLAINTEXT 将代理间通信移动到另一个端口。
问题是我在为客户端设置 ACL 后发现有关主题和组的信息时遇到了麻烦,如下所述。

server.properties - 在下面添加条目
allow.everyone.if.no.acl.found=true super.users=User:admin (user included in jaas config file)

创建主题“testavro”并按以下方式为其中一个主题设置 ACL:
kafka-acls --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:cons --consumer --topic testavro --group testavroCons


kafka-acls --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:prod --producer --topic testavro

现在生产和消费工作正常。
但是当我尝试使用 kafka-consumer-group 工具来描述 testavroCons 组时,我会收到以下消息:
错误:由于未授权访问组,执行消费者组命令失败:组授权失败。

当我尝试使用 Kafka 工具读取指定消费者组 testavroCons 的偏移量时类似。我看不到他们。我现在什至没有在列表中看到 testavro 主题。

在这种情况下还需要什么其他权限?我知道这是 ACL 问题,但我想避免使用全局规则。 Zookeeper 上或 Zookeeper 与 broker 之间是否缺少某些设置?

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    对于用户u 能够描述从主题t 消费的组g,需要这些ACL 权限:

    bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:u --operation Describe --group g
    bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:u --operation Describe --topic t
    

    Reference

    【讨论】:

    • 非常感谢您的回复。我发现我对 Kafka 环境中的客户端-服务器角色以及身份验证与授权的理解还不够,正如我在其他答案中所说的那样。
    【解决方案2】:

    有两件事是需要的。
    (除了对客户端-服务器角色和身份验证与授权的安全性有很好的理解!)

    首先将用户添加到 SASL 配置。既适用于经纪人,也适用于客户。
    (解决身份验证部分)
    第二是将新用户作为超级用户添加到 Kafka 代理 server.properties。
    (解决授权部分)

    详情(仅以一项为例):
    jaas 配置在代理端

     KafkaServer {
         org.apache.kafka.common.security.plain.PlainLoginModule required
         user_testuser="testuser_password";
     };
    

    jaas 配置“客户端”端

    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=PLAIN
    sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
    username=\"testuser\" password=\"testuser_password\";
    

    server.properties

    super.users=User:testuser
    

    现在当我跑步时
    (其中 kafka_tools_jaas.conf 包含客户端的 jaas 配置) 效果很好。

    kafka-consumer-groups --describe --group testavroCons --bootstrap-server server:port --command-config /tmp/kafka_tools_jaas.conf
    

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 2022-12-10
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多