3.4 JAAS 配置方式
Kafka 使用 JAAS 进行 SASL 配置。
broker 端
broker 可以通过指定 JAAS 文件位置(-Djava.security.auth.login.config=
)或者 sasl.jaas.config
配置 JAAS。
JAAS 文件
JAAS 文件中 KafkaServer
section 提供 broker 端的 SASL 配置。如果有多个 SASL listener,可以在 section name 之前增加 listener name 的小写拼写作为前缀,以此区分不同 listener 的配置,例如 sasl_ssl.KafkaServer
。
JAAS 文件中 Client
section 提供连接 zookeeper 服务的 SASL 配置,可以通过在 system property 指定 zookeeper.sasl.clientconfig
指定 section name,例如 -Dzookeeper.sasl.clientconfig=ZkClient
。
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin_pass"
user_admin="admin_pass"
};
// 连接 zookeeper
Client {
org.apache.zookeeper.server.auth.DigestLoginModule required
username="zk_admin"
password="zk_admin_pass";
};
sasl.jaas.config 配置
另外,broker 同样可以使用 sasl.jaas.config
配置代替 JAAS 文件进行配置,这项配置的格式为 listener.name.{listenerName}.{saslMechanism}.sasl.jaas.config
,如果有多种 saslMechanism,可以通过该配置进行区分,例如:
listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
username="admin" \
password="admin-secret";
listener.name.sasl_ssl.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";
优先级
broker SASL 3 种配置方式的优先级为:
- 首先查看 broker 配置文件中的
listener.name.{listenerName}.{saslMechanism}.sasl.jaas.config
配置 - 如果没有,则查看 JAAS 配置文件中的
{listenerName}.KafkaServer
secion - 如果没有,则查看 JAAS 配置文件中的
KafkaServer
section
连接 zookeeper 的配置只能放在 JAAS 配置文件中。
client
client 可以通过指定 JAAS 文件位置(-Djava.security.auth.login.config=
)或者 sasl.jaas.config
配置 JAAS。
JAAS 文件
JAAS 文件中 KafkaClient
section 提供 client 端的 JAAS 配置,启动 client 时通过 JVM 参数指定 JAAS 文件位置,例如 -Djava.security.auth.login.config=/etc/kafka/kafka_client_jaas.conf
sasl.jaas.config
配置
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule sufficient username='admin' password='admin-secret';