温馨提示×

Ubuntu Kafka如何开认证

小樊
35
2026-07-07 12:15:18
栏目: 智能运维

Ubuntu 上部署 Kafka 并开启认证,常见做法是使用 SASL + PLAIN(用户名/密码)SASL + SCRAM。下面我给你一个 最常用、可落地的完整示例(SASL/PLAIN),适合 Ubuntu 20.04/22.04 + Kafka 2.x/3.x。


一、环境假设

  • OS:Ubuntu 22.04
  • Kafka 目录:/opt/kafka
  • Zookeeper 也在本机(Kafka 自带)
  • Kafka 版本:3.x(2.x 同样适用)

二、开启 SASL/PLAIN 认证(最常用)

1️⃣ 创建 Kafka 配置文件

(1)创建 JAAS 配置文件

sudo vi /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_alice="alice-secret";
};

说明:

  • admin:broker 之间通信用户
  • alice:普通客户端用户(示例)

2️⃣ 修改 Kafka 启动参数

编辑 Kafka 启动脚本:

vi /opt/kafka/bin/kafka-server-start.sh

在文件顶部添加:

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

3️⃣ 修改 server.properties

vi /opt/kafka/config/server.properties

追加或修改以下内容:

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

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

如果你需要 SSL,可改为 SASL_SSL


4️⃣ 启动 Zookeeper 和 Kafka

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

三、客户端如何连接(Producer / Consumer)

1️⃣ 创建客户端 JAAS 文件

vi /opt/kafka/config/kafka_client_jaas.conf
KafkaClient {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="alice"
    password="alice-secret";
};

2️⃣ 配置客户端属性

Producer 示例

vi /opt/kafka/config/producer.properties
bootstrap.servers=localhost:9092
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN

3️⃣ 启动 Producer

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

/opt/kafka/bin/kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic test \
--producer.config /opt/kafka/config/producer.properties

4️⃣ Consumer 示例

/opt/kafka/bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test \
--from-beginning \
--consumer.config /opt/kafka/config/producer.properties

四、ACL 权限控制(推荐)

给用户 alice 授权

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

五、常见问题

❌ 报错:SASL authentication failed

  • JAAS 文件路径错误
  • username/password 不一致
  • sasl.mechanism 不匹配

❌ 9092 端口连不上

netstat -tnlp | grep 9092

六、其他认证方式(可选)

认证方式 适用场景
SASL/PLAIN 简单、测试、内网
SASL/SCRAM 更安全、推荐生产
SSL 双向认证 高安全要求
Kerberos (GSSAPI) 企业 AD / Kerberos

七、我可以继续帮你

你可以直接告诉我:

  • ✅ 是 测试环境还是生产环境
  • ✅ 是否需要 SSL
  • ✅ 是否使用 KRaft(无 Zookeeper)
  • ✅ 是否用 Docker / K8s

我可以给你 完全贴合你场景的配置方案

0