Clever Castle
388 words
2 minutes
配置kafka认证

Kafka支持多种安全验证方式,本文主要介绍使用用户名/密码的方式的方式认证Kafka。

Zookeeper 相关更改#

zookeeper-server-start.bat(win) 添加

IF ["%KAFKA_SASL_OPTS%"] EQU [""] (
    set KAFKA_SASL_OPTS=-Djava.security.auth.login.config=filepath\kafka_2.11-1.1.0\kafka_zoo_jaas.conf
)

kafka_zoo_jaas.conf

Server {  
  org.apache.kafka.common.security.plain.PlainLoginModule required  
    username="zoo-admin"
    password="zoo-admin-pass"
    user_zooUser="zooUser-pass";
}; 

Kafka配置 相关更改#

kafka-server-start.bat(win) 添加

IF ["%KAFKA_SASL_OPTS%"] EQU [""] (
    set KAFKA_SASL_OPTS=-Djava.security.auth.login.config=filepath\kafka_2.11-1.1.0\kafka_server_jaas.conf
)

kafka_server_jaas.conf

KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="user"
    password="user-pass"
    user_kafkaUser="kafkaUser-pass"
};
    
Client {
    org.apache.kafka.common.security.plain.PlainLoginModule required
        username="zooUser"
        password="password";
};  

KafkaServer中的内容是Producer,Consumer连接Kafka时要输入的验证信息。

Client中的内容即连接zookeeper是需要输入的验证信息,和kafka_zoo_jaas.conf中的内容一致。

使得JVM参数生效#

zookeeper-server-start.batkafka-server-start.bat最终都是使用kafka-run-class.bat来真正运行的,所以需要将这两个文件添加的JVM参数添加到此文件。

打开kafka-run-class.bat(win)

KAFKA_SASL_OPTS添加到set COMMAND后面(不要放在%Java%之前)。

注意点#

  1. zookeeper的登陆名最好不要和kafka的登陆名有重复,在我尝试的时候发现,名称相同的时候,会直接使用KafkaServer下的用户去登陆zookeeper导致无法登陆成功。
  2. 理论上讲kafka_server_jaas.conf中Client中为连接zookeeper的认证信息。但是在我尝试的时候发现,只在Client中记录登陆信息并不能成功,还需要将该信息填入KafkaServer中才能成功(即使如此,也未必能成功)。
    目前发现的一个成功的组合,是使用kafka_zoo_jaas.conf中的username后面的用户名称,并在该文件下,添加user_...=password,使用此作为密码,并将这一认证信息添加到kafka_serve_jass.conf中的KafkaServerClient中。
配置kafka认证
https://blog.ivyxjc.com/posts/config-kafka-auth/
Author
ivyxjc
Published at
2018-05-05