需要Kafka KRAFT SASL_PLAINTEXT

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

我正在尝试让 Kafka 处于 kraft 模式并运行

SASL_PLAINTEXT

我已经在本地运行了一个功能正常的 kafka 代理/控制器,无需

SASL
使用此
servier.properties

process.roles=broker,controller
node.id=1
controller.quorum.voters=1@localhost:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://:9092
controller.listener.names=CONTROLLER
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT

我已将 kafka docker 容器 9092 的端口绑定到主机上的 9092

kafka-topics.sh --list --bootstrap-server localhost:9092
kafka-topics.sh --bootstrap-server localhost:9092 --topic test --create --partitions 2 --replication-factor 1

就像魅力一样,我可以生产和消费。 Docker 容器日志看起来也不错。

我需要一些用户来处理我们主题的 ACL,所以我认为用 SASL_PLAINTEXT 替换所有 PLAINTEXT 字段很容易,我错了!!

我们在另一个级别上处理加密,所以

SASL_PLAINTEXT
就足够了,我们不需要
SASL_SSL

这是我迄今为止一直在尝试的

config/kraft/sasl_server.properties
,但没有运气。

我通过阅读此内容构建了此属性文件https://docs.confluence.io/platform/current/kafka/authentication_sasl/authentication_sasl_plain.html

process.roles=broker,controller
node.id=1
controller.quorum.voters=1@localhost:9094
listeners=SASL_PLAINTEXT://:9092,CONTROLLER://:9094
advertised.listeners=SASL_PLAINTEXT://:9092
controller.listener.names=CONTROLLER
listener.security.protocol.map=CONTROLLER:SASL_PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT

sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
security.inter.broker.protocol=SASL_PLAINTEXT

sasl.mechanism=PLAIN
security.protocol=SASL_PLAINTEXT
listener.name.controller.plain.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
  username="admin" \
  password="admin-secret" \
  user_admin="admin-secret";
plain.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
   username="admin" \
   password="admin-secret";

我收到此错误

java.lang.IllegalArgumentException: Could not find a 'KafkaServer' or 'controller.KafkaServer' entry in the JAAS configuration. System property 'java.security.auth.login.config' is not set

我在这里做错了什么?

apache-kafka sasl kraft
2个回答
3
投票
process.roles=$KAFKA_PROCESS_ROLES
node.id=$KAFKA_NODE_ID
controller.quorum.voters=$KAFKA_CONTROLLER_QUORUM_VOTERS

listeners=BROKER://:9092,CONTROLLER://:9093
advertised.listeners=BROKER://:9092
listener.security.protocol.map=BROKER:SASL_PLAINTEXT,CONTROLLER:SASL_PLAINTEXT

inter.broker.listener.name=BROKER
controller.listener.names=CONTROLLER

sasl.enabled.mechanisms=PLAIN
sasl.mechanism.controller.protocol=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN

listener.name.broker.plain.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
    username="admin" \
    password="$KAFKA_ADMIN_PASSWORD" \
    user_admin="$KAFKA_ADMIN_PASSWORD";

listener.name.controller.plain.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
    username="admin" \
    password="$KAFKA_ADMIN_PASSWORD" \
    user_admin="$KAFKA_ADMIN_PASSWORD";

这是一个工作配置。

sasl.mechanism.controller.protocol=PLAIN
很重要。


-1
投票

感谢上述解决方案,我也被这个问题困扰了。现在工作正常。

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