温馨提示×

debian kafka怎样配认证

小樊
36
2026-09-16 01:07:42
栏目: 智能运维

在 Debian 上给 Kafka 配置认证,常见做法有三种:SASL/PLAIN、SASL/SCRAM、SSL(TLS),也可以组合使用(如 SASL + SSL)。下面以 最常用的 SASL/SCRAM + PLAINTEXT(或 SSL) 为例,一步步说明。


一、环境前提

  • Debian 11/12
  • 已安装 Kafka(假设路径 /opt/kafka
  • Kafka 版本 ≥ 2.0(推荐 3.x)

二、方式一:SASL/SCRAM 认证(推荐)

1. 修改 server.properties

# 监听地址
listeners=SASL_PLAINTEXT://:9092
advertised.listeners=SASL_PLAINTEXT://your-host:9092

# 开启 SASL
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
sasl.enabled.mechanisms=SCRAM-SHA-256

# 授权(先用最简单)
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
allow.everyone.if.no.acl.found=true

2. 配置 JAAS 文件

新建 /opt/kafka/config/kafka_server_jaas.conf

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

3. 启动 Kafka 时加载 JAAS

编辑 /opt/kafka/bin/kafka-server-start.sh 或设置环境变量:

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

4. 创建用户(SCRAM)

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

5. 客户端配置

生产者/消费者

client.properties

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

使用:

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

三、方式二:SASL/PLAIN(简单但不安全)

适合内网测试。

server jaas

KafkaServer {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="admin"
  password="admin123"
  user_admin="admin123"
  user_client="client123";
};

server.properties

sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN

四、方式三:SSL/TLS 认证(双向)

适合公网或安全要求高。

1. 生成证书

keytool -keystore server.keystore.jks -alias kafka -validity 365 -genkey
keytool -keystore client.truststore.jks -alias CARoot -import -file ca-cert

2. server.properties

listeners=SSL://:9093
ssl.keystore.location=/opt/kafka/ssl/server.keystore.jks
ssl.keystore.password=123456
ssl.key.password=123456
ssl.truststore.location=/opt/kafka/ssl/server.truststore.jks
ssl.truststore.password=123456
ssl.client.auth=required

五、systemd 启动(Debian)

/etc/systemd/system/kafka.service

[Service]
Environment=KAFKA_OPTS=-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
systemctl daemon-reload
systemctl restart kafka

六、验证

bin/kafka-topics.sh --list \
  --bootstrap-server localhost:9092 \
  --command-config client.properties

七、建议组合

  • 内网:SASL_SCRAM + PLAINTEXT
  • 公网:SASL_SCRAM + SSL

如果你告诉我:

  • Kafka 版本
  • 是否用 Docker
  • 是否需要 ACL 权限控制

我可以给你一份可直接用的完整配置

0