在 Ubuntu 上配置 Kafka 权限,通常分为 三种场景,你可以按需求选择:
适用于 多用户 / 多应用 / 生产环境。
编辑 Kafka 配置文件(以 KRaft 或 ZK 模式为例):
sudo vim /opt/kafka/config/server.properties
添加或修改以下内容:
# 开启 ACL
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
# 允许超级用户(可选)
super.users=User:admin
# 允许自动创建 Topic(可选)
auto.create.topics.enable=true
重启 Kafka:
sudo systemctl restart kafka
# 或
/opt/kafka/bin/kafka-server-stop.sh
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
编辑用户配置:
sudo vim /opt/kafka/config/kafka_server_jaas.conf
内容:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_producer="producer-secret"
user_consumer="consumer-secret";
};
配置 Kafka 使用 JAAS:
export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"
listeners=SASL_PLAINTEXT://localhost:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
/opt/kafka/bin/kafka-topics.sh \
--create --topic test-topic \
--bootstrap-server localhost:9092
/opt/kafka/bin/kafka-acls.sh \
--bootstrap-server localhost:9092 \
--add \
--allow-principal User:producer \
--producer \
--topic test-topic
/opt/kafka/bin/kafka-acls.sh \
--bootstrap-server localhost:9092 \
--add \
--allow-principal User:consumer \
--consumer \
--topic test-topic \
--group test-group
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="producer" \
password="producer-secret";
适用于 防止误删 / 服务运行身份
# 创建 Kafka 用户
sudo useradd -r -m -U -d /opt/kafka -s /bin/bash kafka
# 修改目录权限
sudo chown -R kafka:kafka /opt/kafka /var/log/kafka
# 使用 kafka 用户启动
sudo su - kafka
sudo chown -R kafka:kafka /opt/kafka/data
sudo chmod -R 750 /opt/kafka/data
✅ 没有 ACL 权限,检查 --allow-principal
✅ jaas 配置或用户名密码错误
✅ listeners / advertised.listeners 配置错误
✅ ACL + SASL_PLAINTEXT / SASL_SSL
✅ kafka 用户运行服务
✅ 最小权限原则
如果你愿意,可以告诉我:
我可以给你一份 完整可用的配置文件模板 ✅