温馨提示×

ubuntu kafka怎么配置权限

小樊
40
2026-09-17 18:34:05
栏目: 智能运维

在 Ubuntu 上配置 Kafka 权限,通常涉及两类:Linux 系统级权限Kafka 自身的安全/ACL 权限。下面按常见场景一步一步说明。


一、Linux 系统级权限(最基础)

1. 创建专用用户(推荐)

不要用 root 跑 Kafka:

sudo useradd -m kafka
sudo passwd kafka

2. 修改 Kafka 目录权限

假设你解压在 /opt/kafka

sudo chown -R kafka:kafka /opt/kafka
sudo chmod -R 755 /opt/kafka

3. 日志和数据目录

sudo mkdir -p /var/lib/kafka /var/log/kafka
sudo chown -R kafka:kafka /var/lib/kafka /var/log/kafka

二、Kafka 基础安全配置(无 SASL)

如果只是限制谁能访问 Kafka,可以先做网络层控制:

1. 修改 server.properties

listeners=PLAINTEXT://192.168.1.10:9092
advertised.listeners=PLAINTEXT://192.168.1.10:9092

限制只能内网访问(配合防火墙):

sudo ufw allow from 192.168.1.0/24 to any port 9092

三、Kafka SASL + ACL 权限(生产推荐)

1. 启用 SASL_PLAINTEXT

编辑 config/server.properties

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

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

2. 配置 JAAS 文件

新建 config/kafka_server_jaas.conf

KafkaServer {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="admin"
  password="admin-secret"
  user_admin="admin-secret"
  user_alice="alice-secret";
};

3. 启动 Kafka 时加载 JAAS

修改 bin/kafka-server-start.sh 或启动命令:

export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"

4. 客户端配置(示例)

client.properties

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

四、Kafka ACL 权限配置

1. 给用户授权 Topic

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

2. 授权消费组

kafka-acls.sh \
  --bootstrap-server localhost:9092 \
  --add \
  --allow-principal User:alice \
  --operation Read \
  --group test-group

3. 查看 ACL

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

五、常见错误排查

问题 原因
TopicAuthorizationException ACL 没配置
SASL authentication failed 用户名/密码错误
Kafka 无法启动 JAAS 路径错误
客户端连不上 listener 配置错误

六、总结(推荐方案)

  • 测试环境:Linux 用户权限 + 内网访问
  • 生产环境SASL_PLAINTEXT + ACL
  • 高安全SASL_SSL + ACL

如果你愿意,我可以:

  • 给你一份 完整 server.properties 示例
  • 或按 Docker / Systemd / 集群 场景配置
  • 或帮你做 Kafka + Zookeeper 权限一体化

你现在是 单机还是集群?测试还是生产?

0