温馨提示×

ubuntu kafka配置怎样设权限

小樊
43
2026-10-23 03:02:07
栏目: 智能运维

在 Ubuntu 上配置 Kafka 的权限,通常分 文件系统权限、Kafka 自身 ACL(访问控制) 和 网络/安全(SASL/SSL) 三个层面。下面按常见场景说明。


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

Kafka 通常以非 root 用户运行,例如 kafka。

1. 创建专用用户

sudo useradd -m kafka
sudo passwd kafka

2. 数据目录权限

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

3. 日志目录

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

4. 配置文件权限

sudo chown -R kafka:kafka /opt/kafka
sudo chmod 640 /opt/kafka/config/*.properties

二、Kafka ACL 权限(推荐生产使用)

Kafka 自带 ACL,基于 SASL 或 SSL 认证。

1. 启用 ACL

修改 server.properties:

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

2. 配置 SASL(示例:PLAIN)

server.properties:

listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=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";
};

启动:

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

三、使用 kafka-acls 设置权限

1. 创建 Topic

kafka-topics.sh --create \
  --topic test \
  --bootstrap-server localhost:9092 \
  --partitions 1 --replication-factor 1

2. 给生产者授权

kafka-acls.sh --authorizer-properties \
  bootstrap.servers=localhost:9092 \
  --add --allow-principal User:producer \
  --operation Write --topic test

3. 给消费者授权

kafka-acls.sh --authorizer-properties \
  bootstrap.servers=localhost:9092 \
  --add --allow-principal User:consumer \
  --operation Read --topic test \
  --group test-group

4. 查看 ACL

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

四、客户端配置示例

生产者

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

消费者

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

五、简单场景(开发/测试)

如果只是本地测试,可:

  • 不用 ACL
  • 使用 PLAINTEXT
  • 限制端口只对本机开放
listeners=PLAINTEXT://127.0.0.1:9092

并用 ufw 限制:

sudo ufw allow from 127.0.0.1 to any port 9092

如果你能说明:

  • Kafka 版本
  • 是否用 Docker
  • 是否需要公网访问
  • 开发 / 生产环境

我可以给你一份可直接用的配置模板。

0 踩