温馨提示×

kafka linux如何鉴权

小樊
39
2026-10-08 05:49:30
栏目: 智能运维

在 Linux 上部署的 Kafka,常见鉴权(认证 + 授权)方式主要有以下几种,按使用频率从高到低说明:


一、Kafka 鉴权体系概览

Kafka 的安全通常包含三部分:

  1. 认证(Authentication):你是谁
  2. 授权(Authorization):你能干什么
  3. 传输加密(SSL/TLS):防止被窃听

常用组合:

  • SASL + ACL(最常用)
  • SSL 双向认证
  • SASL_SSL(生产推荐)

二、方式一:SASL 鉴权(用户名/密码)

1. 启用 SASL 认证

修改 server.properties:

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

2. 配置 JAAS 文件

kafka_server_jaas.conf:

KafkaServer {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="admin"
  password="admin-secret"
  user_admin="admin-secret"
  user_user1="user1-secret";
};

启动 Kafka 时指定:

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

3. 客户端配置

producer.properties / consumer.properties:

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

三、方式二:ACL 授权(配合 SASL)

开启 ACL:

authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:admin

授权示例:

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

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

适合内网强安全场景。

1. 生成证书

keytool -genkey -alias kafka -keystore kafka.server.keystore.jks
keytool -export -alias kafka -file ca-cert
keytool -import -file ca-cert -keystore kafka.client.truststore.jks

2. server.properties

listeners=SSL://:9093
security.inter.broker.protocol=SSL
ssl.keystore.location=/path/kafka.server.keystore.jks
ssl.keystore.password=xxx
ssl.truststore.location=/path/kafka.server.truststore.jks
ssl.truststore.password=xxx
ssl.client.auth=required

五、方式四:SASL_SSL(生产推荐 ✅)

组合:

  • SASL:身份认证
  • SSL:加密传输
listeners=SASL_SSL://:9092
security.inter.broker.protocol=SASL_SSL
sasl.enabled.mechanisms=SCRAM-SHA-256
ssl.keystore.location=...
ssl.truststore.location=...

六、常见错误 & 排查

  • 客户端连不上:检查 security.protocol 是否一致
  • 认证失败:JAAS 文件路径是否正确
  • 权限拒绝:ACL 没配或 principal 写错

七、简单推荐方案

场景 推荐
测试环境 SASL_PLAINTEXT
生产环境 SASL_SSL + ACL
金融/强安全 SSL 双向 + ACL

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

  • Kafka 版本
  • 是否用 Docker
  • 只是认证还是也要 ACL

我可以直接帮你写 完整可跑的配置文件。

0 踩