Kafka 目前支持SSL、SASL/Kerberos、SASL/PLAIN三种认证机制
kafka的认证范围
kafka client 与 kafka server(broker)
broker与broker之间
broker与zookeeper之间
zookpeer认证
在zookeeper安装根目录的conf目录下,创建zk_server_jaas.conf文件
Server {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"password="123456"user_admin="123456"user_zk001="123456"user_zk002="123456"user_zk003="123456"user_zk004="123456"user_zk005="123456";
};
#其中username和password用于brokers和zk进行认证,user_*用于zk client与zk server进行认证
#user_zk001="123456" 表示 zk001为用户名,123456为密码
zoo.cfg添加以下配置
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
将kafka libs目录下的jar包拷贝到zookeeper lib目录:
因为认证的时候用到包org.apache.kafka.common.security.plain.PlainLoginModule, 这个是kafka-client.jar里面,所有需要将相应的jar拷贝到zookeeper安装根目录的lib目录下, 大概要copy这些jar
kafka-clients-2.1.1.jar
lz4-java-1.5.0.jar
osgi-resource-locator-1.0.1.jar
slf4j-api-1.7.25.jar
snappy-java-1.1.7.2.jar
修改zk的启动参数, 修改bin/zkEnv.sh, 在文件尾加上
SERVER_JVMFLAGS="-Djava.security.auth.login.config=$ZOOCFGDIR/zk_server_jaas.conf"
kafka broker的认证配置
config目录下, 创建kafka_server_jaas.conf
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"password="123456"user_admin="123456"user_alice="123456"user_write="123456"user_read="123456"user_kafka001="123456"user_kafka002="123456"user_kafka003="123456"user_kafka004="123456"user_kafka005="123456";
};
Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"passwo