在 Ubuntu 上给 Kafka 配置用户(认证 + 授权),常见做法是使用 SASL(用户名/密码),一般配合 PLAINTEXT 或 SSL。下面给你一套最常用、可落地的 Kafka 用户配置方案(SASL/PLAIN)。
/opt/kafkasudo mkdir -p /opt/kafka/config/users
sudo nano /opt/kafka/config/users/kafka_server_jaas.conf
内容示例:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin123"
user_admin="admin123"
user_kafka="kafka123"
user_producer="prod123"
user_consumer="cons123";
};
说明:
username/password:broker 之间通信账号user_xxx="密码":普通用户编辑:
sudo nano /opt/kafka/config/server.properties
添加 / 修改:
listeners=SASL_PLAINTEXT://:9092
advertised.listeners=SASL_PLAINTEXT://localhost:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
allow.everyone.if.no.acl.found=false
super.users=User:admin
编辑启动脚本:
sudo nano /opt/kafka/bin/kafka-server-start.sh
在 KAFKA_HEAP_OPTS 行前加:
export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/users/kafka_server_jaas.conf"
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
nano kafka_client_jaas.conf
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="producer"
password="prod123";
};
client.properties
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="producer" \
password="prod123";
kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic test \
--producer.config client.properties
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test \
--from-beginning \
--consumer.config client.properties
kafka-acls.sh \
--bootstrap-server localhost:9092 \
--add \
--allow-principal User:producer \
--operation Write \
--topic test \
--command-config admin.properties
kafka-acls.sh \
--bootstrap-server localhost:9092 \
--add \
--allow-principal User:consumer \
--operation Read \
--group '*' \
--topic test
✅ Ubuntu 上 不要 root 跑 Kafka(建议 kafka 用户)
✅ JAAS 文件路径必须 broker 能读
✅ SASL_PLAINTEXT 不是加密,生产建议 SASL_SSL
✅ 改完配置必须 重启 Kafka
我可以帮你:
直接说你用在哪(测试 / 生产 / 开发)。