我有一个独立的 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";
};
我已经花了一天时间研究这个问题 - 还有其他人遇到过这个问题吗?
您需要导出一个变量,而不是将配置内联到 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
把我的错误放在这里:
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
编辑 因此,我的最终解决方案是将 export.... 行添加到相应的 kafka-server-start 和 Zookeeper-server-start 文件的开头。 我花了一段时间才最终点击“一切都是文件”,我意识到脚本文件是服务的实际基础。
这与其他接受的答案一致,但如果您在 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