在 Debian 下使用 Kafka,常见的**认证(Authentication)**方式主要有以下几种,按使用频率从高到低说明:
编辑 server.properties(一般在 /etc/kafka/ 或 /opt/kafka/config/):
listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
# JAAS 配置
listener.name.sasl_plaintext.plain.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" \
password="admin-secret" \
user_admin="admin-secret" \
user_alice="alice-secret";
创建 client.properties:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="alice" \
password="alice-secret";
使用方式:
kafka-console-consumer.sh --bootstrap-server localhost:9092 \
--topic test --consumer.config client.properties
kafka-configs.sh --bootstrap-server localhost:9092 \
--alter --add-config 'SCRAM-SHA-256=[password=alice-secret]' \
--entity-type users --entity-name alice
sasl.enabled.mechanisms=SCRAM-SHA-256
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
JAAS:
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
username="admin" \
password="admin-secret";
keytool -genkey -alias kafka -keystore kafka.server.keystore.jks
keytool -export -alias kafka -file kafka.cert
keytool -import -file kafka.cert -keystore kafka.client.truststore.jks
listeners=SSL://:9093
security.inter.broker.protocol=SSL
ssl.keystore.location=/path/kafka.server.keystore.jks
ssl.keystore.password=123456
ssl.key.password=123456
ssl.truststore.location=/path/kafka.server.truststore.jks
ssl.truststore.password=123456
ssl.client.auth=required
适合 Kafka Connect / Streams:
kafka-delegation-tokens.sh --bootstrap-server localhost:9092 \
--create --renewer-principal User:admin
认证后通常要加 ACL:
kafka-acls.sh --bootstrap-server localhost:9092 \
--add --allow-principal User:alice \
--operation Read --topic test
confluent-platform如果你能告诉我:
我可以直接给你一份可复制的 Debian 完整配置。