温馨提示×

ubuntu kafka如何配置权限

小樊
46
2026-07-18 21:27:56
栏目: 智能运维

在 Ubuntu 上配置 Kafka 权限,通常分为 三种场景,你可以按需求选择:


一、Kafka 基于 ACL 的权限控制(最常用 ✅)

适用于 多用户 / 多应用 / 生产环境

1️⃣ 启用 Kafka ACL(核心步骤)

编辑 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

2️⃣ 创建用户(SASL/PLAIN 示例)

编辑用户配置:

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"

3️⃣ 配置 Kafka 监听 SASL

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

4️⃣ 给用户授权(ACL)

创建 Topic

/opt/kafka/bin/kafka-topics.sh \
--create --topic test-topic \
--bootstrap-server localhost:9092

授权 producer

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

授权 consumer

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

5️⃣ 客户端连接示例

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

二、Ubuntu 系统级权限(Linux 用户)

适用于 防止误删 / 服务运行身份

# 创建 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

四、常见权限问题排查

❌ TopicAuthorizationException

✅ 没有 ACL 权限,检查 --allow-principal

❌ SASL authentication failed

✅ jaas 配置或用户名密码错误

❌ Broker not available

✅ listeners / advertised.listeners 配置错误


五、推荐组合(生产环境)

ACL + SASL_PLAINTEXT / SASL_SSL
kafka 用户运行服务
最小权限原则


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

  • Kafka 版本
  • 是否使用 Zookeeper 还是 KRaft
  • 是否需要 SSL
  • 单机还是集群

我可以给你一份 完整可用的配置文件模板

0