【问题标题】:Kafka Authentication with SASL - duplicate admin user?使用 SASL 的 Kafka 身份验证 - 重复的管理员用户?
【发布时间】:2020-12-06 16:41:07
【问题描述】:

我正在运行一个分布式 Kafka-Broker,其中通过 SASL/SSL 设置代理间通信。为此,我调整了给定here 的 JAAS 配置。完成的文件如下所示:

KafkaServer {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="admin"
  password="admin-secret"
  user_admin="admin-secret"
  user_alice="alice-secret"
  security.protocol=SASL_PLAINTEXT
  sasl.mechanism=PLAIN;

  org.apache.kafka.common.security.scram.ScramLoginModule required;
};

Client {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="admin"
  password="admin-secret";
};

我注意到“KafkaServer”部分有 2 个管理员用户。我也学到了我需要两者的艰难方法,但这是为什么呢?我感觉几个月前我已经阅读(并忘记了)原因,但我似乎再也找不到了。

【问题讨论】:

    标签: apache-kafka jaas sasl


    【解决方案1】:

    根据Apache Kafka documentationKafkaServer 部分用于配置身份验证此代理到其他代理,以及客户端和其他代理连接 这个经纪人。 Client 部分用于连接到 Zookeeper。

    由于您的问题是关于 KafkaServer 部分,并且您正在配置 SASL/PLAIN 身份验证机制,请参阅 Apache Kafka 文档的 this part

    此配置定义了两个用户(adminalice)。代理使用KafkaServer 部分中的属性usernamepassword 来启动与其他代理的连接。在本例中,admin 是代理间通信的用户。属性集user_userName 定义了连接到代理的所有用户的密码,代理使用这些属性验证所有客户端连接,包括来自其他代理的连接。

    也就是说,这里配置了两种不同的情况:

    • 当此代理连接到其他代理时,它将使用usernamepassword 中定义的用户名和密码。
    • 当客户端和其他代理连接到此代理时user_userName 条目用于验证这些连接,其中用户名是user_userName 密钥的 userName 部分,密码就是值。

    因此,在您的示例中,由于这两行,此代理将使用用户名admin 和密码admin-secret 连接到其他代理:

    username="admin"
    password="admin-secret"
    

    并且,客户端和其他代理可以使用admin / admin-secretalice / alice-secret 的用户名密码组合连接到此代理,因为这两行:

    user_admin="admin-secret"
    user_alice="alice-secret"
    

    如果您只接受来自其他代理的连接以在此侦听器上进行代理间通信,那么他们可能正在使用配置的user_admin="admin-secret" 部分,而user_alice="alice-secret" 可能是多余的。

    【讨论】:

    • 这证实了我的怀疑。引用的部分甚至是我以前读过但再也找不到的部分。非常感谢:)
    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 2011-11-30
    • 1970-01-01
    • 2020-08-12
    • 2016-04-19
    相关资源
    最近更新 更多