温馨提示×

debian kafka权限如何设

小樊
45
2026-09-09 21:23:05
栏目: 智能运维

在 Debian 上部署 Kafka 时,“权限”通常涉及 3 个层面

  1. Linux 系统/文件权限(谁跑 Kafka、数据目录权限)
  2. Kafka ACL 权限(Topic / 消费组 / 集群级别访问控制)
  3. 网络与安全(防火墙、SASL/SSL)

下面按常见场景给你一套「从基础到安全」的配置说明。


一、Linux 系统 & 文件权限(最基础)

1. 不建议用 root 跑 Kafka

sudo useradd -r -m -s /bin/bash kafka

2. 数据 & 日志目录权限

sudo mkdir -p /data/kafka
sudo chown -R kafka:kafka /data/kafka
sudo chmod 750 /data/kafka

server.properties 中:

log.dirs=/data/kafka

3. 安装目录权限

sudo chown -R kafka:kafka /opt/kafka

4. 用 kafka 用户启动

sudo -u kafka /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties

二、Kafka ACL 权限(重点)

1. 启用 ACL(server.properties)

authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:admin
allow.everyone.if.no.acl.found=false

⚠️ 生产环境一定要 false

2. 创建 admin 用户(示例 SASL/PLAIN)

kafka_server_jaas.conf

KafkaServer {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="admin"
  password="admin-secret"
  user_admin="admin-secret"
  user_producer="prod-secret"
  user_consumer="cons-secret";
};

3. 常见 ACL 命令

授权 producer

kafka-acls.sh \
  --bootstrap-server localhost:9092 \
  --add \
  --allow-principal User:producer \
  --producer \
  --topic test-topic

授权 consumer

kafka-acls.sh \
  --bootstrap-server localhost:9092 \
  --add \
  --allow-principal User:consumer \
  --consumer \
  --topic test-topic \
  --group test-group

查看 ACL

kafka-acls.sh --bootstrap-server localhost:9092 --list

三、SASL + ACL(推荐生产方案)

server.properties

listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN

authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:admin

客户端配置

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="producer" password="prod-secret";

四、防火墙(Debian)

sudo ufw allow 9092/tcp

仅允许内网:

sudo ufw allow from 10.0.0.0/8 to any port 9092

五、常见问题

Q1:ACL 不生效?

  • 确认 allow.everyone.if.no.acl.found=false
  • 客户端必须带 SASL 用户
  • Topic 已存在或提前授权

Q2:Permission denied?

  • Kafka 用户无 log.dirs 写权限
  • 用 root 启动过,目录被 root 占用

Q3:Zookeeper 权限?

Kafka 3.x 可弃用 ZK(KRaft),否则 ZK 也要限制端口。


六、最小安全推荐组合(生产)

✅ 非 root 用户
✅ SASL_PLAINTEXT 或 SASL_SSL
✅ ACL 开启
✅ 防火墙限制 IP
✅ 单独 admin 账号


如果你愿意,可以告诉我:

  • Kafka 版本(2.x / 3.x)
  • 是否用 KRaft
  • 内网还是公网

我可以直接给你 一份可直接用的 Debian 配置示例

0