在 Linux 上部署 Kafka 时,“权限”通常包含 三个层面,很多人会混淆:
下面按最常见场景给你一个清晰说明。
不要用 root 跑 Kafka。
useradd -m kafka
passwd kafka
假设 Kafka 安装在 /opt/kafka,数据在 /data/kafka
chown -R kafka:kafka /opt/kafka
chown -R kafka:kafka /data/kafka
chmod 750 /data/kafka
su - kafka
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
✅ 这一步解决的是:“谁能启动 Kafka、谁能读写数据文件”
只有开启了 SASL / SSL 后,ACL 才有意义。
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:admin
# server.properties
listeners=SASL_PLAINTEXT://:9092
security.interceptor.classes=org.apache.kafka.common.security.audit.AuditInterceptor
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
JAAS 文件示例:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin123"
user_admin="admin123"
user_reader="reader123"
user_writer="writer123";
};
kafka-acls.sh --bootstrap-server localhost:9092 \
--add --allow-principal User:writer \
--operation Write --topic test-topic
kafka-acls.sh --bootstrap-server localhost:9092 \
--add --allow-principal User:reader \
--operation Read --topic test-topic \
--group group1
kafka-acls.sh --bootstrap-server localhost:9092 --list
super.users✅ 必须:
能,但任何人都能读写所有 Topic(危险)
不推荐,安全风险大
检查:
AclAuthorizer如果你愿意,可以告诉我:
我可以直接给你一份 可用配置文件 + ACL 脚本。