在 Ubuntu 上配置 Kafka 的权限,通常分为 文件系统权限、Kafka 自身 ACL(访问控制) 以及 SASL/SSL 安全认证 三个层面。下面按常见使用场景说明。
Kafka 通常以非 root 用户运行(推荐 kafka 用户)。
sudo useradd -m kafka
sudo passwd kafka
sudo chown -R kafka:kafka /opt/kafka
sudo chmod -R 750 /opt/kafka
sudo mkdir -p /var/lib/kafka /var/log/kafka
sudo chown -R kafka:kafka /var/lib/kafka /var/log/kafka
⚠️ ACL 只在 启用安全认证(SASL 或 SSL) 后才真正生效
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:admin
allow.everyone.if.no.acl.found=false
# server.properties
listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
/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";
};
启动:
export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"
kafka-acls.sh \
--bootstrap-server localhost:9092 \
--add \
--allow-principal User:producer \
--producer \
--topic test-topic
kafka-acls.sh \
--bootstrap-server localhost:9092 \
--add \
--allow-principal User:consumer \
--consumer \
--topic test-topic \
--group test-group
kafka-acls.sh --bootstrap-server localhost:9092 --list
| 场景 | 建议 |
|---|---|
| 内网测试 | SASL_PLAINTEXT + ACL |
| 生产环境 | SASL_SSL + ACL |
| 单用户 | 文件权限即可 |
| 多租户 | 必须 ACL + 用户隔离 |
Q:ACL 不生效?
AclAuthorizerallow.everyone.if.no.acl.found=trueQ:Permission denied?
如果你能说明:
我可以给你一份 可直接用的配置文件示例。