Kafka 服务器 - 在 JAAS 中找不到“KafkaServer”

问题描述 投票:0回答:3

我有一个独立的 kafka 代理,我正在尝试为其配置 SASL。配置如下。 我正在尝试在代理上设置 SASL_PLAIN 身份验证。

我的理解是,通过server.properties中的listener.name...配置,我不需要jaas文件。但我已经尝试过一种方法,看看这是否是更好的方法。

我已经尝试过每个命令,但都导致相同的异常。

  • sudo bin/kafka-server-start etc/kafka/server.properties
  • sudo -Djava.security.auth.login.config=etc/kafka/kafka_server_jaas.conf bin/kafka-server-start etc/kafka/server.properties

显示的异常是:

KafkaServer 启动期间发生致命错误。准备关机...可以 在中找不到“KafkaServer”或“sasl_plaintext.KafkaServer”条目 JAAS 配置。系统属性“java.security.auth.login.config” 没有设置

服务器.属性:

listeners=SASL_PLAINTEXT://0.0.0.0:9092
listener.security.protocol.map: SASL_PLAINTEXT:SASL_PLAINTEXT
listener.name.SASL_PLAINTEXT.plain.sasl.jaas.config:
            org.apache.kafka.common.security.plain.PlainLoginModule required /
username="username" /
password="Password" /
user_username="Password";  

advertised.listeners=SASL_PLAINTEXT://[ipaddress]:9092
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
secutiy.inter.broker.protocol=SASL_PLAINTEXT

kafka_server_jaas.conf:

KafkaServer {
  org.apache.kafka.common.security.plain.PlainLoginModule required
   username="username"
   password="Password"
   user_username="Password";
};

我已经花了一天时间研究这个问题 - 还有其他人遇到过这个问题吗?

apache-kafka jaas sasl
3个回答
6
投票

您需要导出一个变量,而不是将配置内联到 kafka-server-start (或

sudo
)。

export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/kafka_server_jaas.conf"
bin/kafka-server-start /path/to/server.properties

参考。 Confluence 有关 Kafka 安全性的部分


4
投票

把我的错误放在这里:

  • 不要从 cli 执行启动命令,将它们放入 .sh 文件中并从那里运行: 例如,这样的事情:

zk开始

export KAFKA_OPTS="-Djava.security.auth.login.config=etc/kafka/zookeeper_jaas.conf"
bin/zookeeper-server-start etc/kafka/zookeeper.properties &

kafkastart

export KAFKA_OPTS=-Djava.security.auth.login.config=etc/kafka/kafka_server_jaas.conf
bin/kafka-server-start etc/kafka/server.properties
  • 如果您仍然遇到与配置相关的错误,请检查您的 _jaas 文件以确保错误消息中的所有配置部分都存在。如果是,则格式可能不太正确 - 检查每个部分中的两个分号,如果失败,请尝试完全从头开始(或从文档中的 c&p)重新创建文件。

编辑 因此,我的最终解决方案是将 export.... 行添加到相应的 kafka-server-start 和 Zookeeper-server-start 文件的开头。 我花了一段时间才最终点击“一切都是文件”,我意识到脚本文件是服务的实际基础。


0
投票

这与其他接受的答案一致,但如果您在 docker 上或使用更多环境变量来传递 SASL JAAS 配置,则需要此环境变量:

environment:
      KAFKA_LISTENER_NAME_SASL_LISTENER_PLAIN_SASL_JAAS_CONFIG: org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret" user_admin="admin-secret" ;

(用户名和密码需要根据您的设置更新)

重要:这里

_SASL_LISTENER_
是SASL侦听器的名称,您可以从该变量的大部分值中引用您的名称
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP

© www.soinside.com 2019 - 2024. All rights reserved.