温馨提示×

kafka在debian如何认证

小樊
47
2026-09-19 01:46:14
栏目: 智能运维

在 Debian 上部署和使用 Kafka 时,"认证"通常指 Kafka 的客户端/ broker 之间的安全认证,而不是 Linux 系统登录。Kafka 常见认证方式包括:

  • SASL/PLAIN(用户名密码,最简单)
  • SASL/SCRAM(推荐,配合 Zookeeper)
  • SASL/GSSAPI(Kerberos,企业常用)
  • SSL 双向认证(mtls)

下面以 Debian + Kafka + SASL/SCRAM 为例,说明如何做认证(最常用、易落地)。


一、环境假设

  • Debian 11/12
  • Kafka 3.x
  • 使用 systemd 或手动启动
  • 单 broker(多 broker 同理)

二、启用 SASL/SCRAM 认证

1. 修改 server.properties

# 监听地址
listeners=SASL_PLAINTEXT://:9092
advertised.listeners=SASL_PLAINTEXT://kafka.example.com:9092

# 安全协议
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
sasl.enabled.mechanisms=SCRAM-SHA-256

# Zookeeper(Kafka 3.0+ 可无 ZK,但示例保留)
zookeeper.connect=localhost:2181

如果使用 SSL:
SASL_SSL://:9093


2. 创建 JAAS 配置文件

/etc/kafka/kafka_server_jaas.conf

KafkaServer {
  org.apache.kafka.common.security.scram.ScramLoginModule required
  username="admin"
  password="admin-secret";
};

3. 启动 Kafka 时加载 JAAS

修改启动脚本或 systemd:

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

systemd 示例:

[Service]
Environment="KAFKA_OPTS=-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf"

4. 创建 SCRAM 用户

kafka-configs.sh \
  --bootstrap-server localhost:9092 \
  --alter \
  --add-config 'SCRAM-SHA-256=[iterations=8192,password=test123]' \
  --entity-type users \
  --entity-name testuser

三、客户端认证配置(Producer / Consumer)

1. client.properties

security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
  username="testuser" \
  password="test123";

2. 使用客户端

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

kafka-console-consumer.sh \
  --bootstrap-server localhost:9092 \
  --topic test \
  --from-beginning \
  --consumer.config client.properties

四、ACL 权限控制(可选但重要)

Kafka 认证 ≠ 授权

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

五、Debian 系统级建议

  • Kafka 用 非 root 用户 运行(如 kafka
  • 配置文件权限 640
  • 防火墙只开放 9092

六、其他方式简述

方式 适用
SASL/PLAIN 测试
SASL/SCRAM 推荐
Kerberos 企业
SSL 高安全

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

  • Kafka 版本
  • 是否使用 Zookeeper
  • 是否要 SSL
  • 单节点还是集群

我可以直接给你 可用的配置文件清单

0