在 Debian 上部署和使用 Kafka 时,"认证"通常指 Kafka 的客户端/ broker 之间的安全认证,而不是 Linux 系统登录。Kafka 常见认证方式包括:
下面以 Debian + Kafka + SASL/SCRAM 为例,说明如何做认证(最常用、易落地)。
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
/etc/kafka/kafka_server_jaas.conf
KafkaServer {
org.apache.kafka.common.security.scram.ScramLoginModule required
username="admin"
password="admin-secret";
};
修改启动脚本或 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"
kafka-configs.sh \
--bootstrap-server localhost:9092 \
--alter \
--add-config 'SCRAM-SHA-256=[iterations=8192,password=test123]' \
--entity-type users \
--entity-name testuser
security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
username="testuser" \
password="test123";
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
Kafka 认证 ≠ 授权
kafka-acls.sh \
--bootstrap-server localhost:9092 \
--add \
--allow-principal User:testuser \
--operation Read \
--topic test
kafka)6409092| 方式 | 适用 |
|---|---|
| SASL/PLAIN | 测试 |
| SASL/SCRAM | 推荐 |
| Kerberos | 企业 |
| SSL | 高安全 |
如果你愿意,可以告诉我:
我可以直接给你 可用的配置文件清单。