Kafka開啟SASL認證 【windowe詳細版】
一、JAAS配置
Zookeeper配置JAAS
zookeeper環境下新增一個配置文件,如zk_server_jass.conf,內容如下:
Server {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin"
user_admin="admin";
};
其作用是:在改zookeeper節點創建了一個Server節點,其中
org.apache.kafka.common.security.plain.PlainLoginModule required是加密機製為PLAIN的處理類。在kafka-client包下username、password是zookeeper之間通訊的用戶名和密碼,user_admin="admin"的結構是user_[username]=[password],定義kafka-broker(zookeeper客戶端)連接到zookeeper時用的用戶名和密碼。
注意jaas配置都要以
;結尾
Kafka-Broker配置JAAS
在kafka-broker環境下新增配置,如kafka_server_jaas.conf,內容如下:
# 用於broker和zookeeper之間的認證,對應zk_server_jass.conf中的【user_admin="admin"】配置
Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin";
};
# 定義kafka客戶端與broker的認知資訊
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin"
user_admin="admin"
user_alice="alice";
};
Client:用於broker和zookeeper之間的認證,對應zk_server_jass.conf中的【user_admin="admin"】配置KafkaServer:集群中,broker之間用節點中的username,password進行通訊KafkaServer:kafka客戶端(producer,consumer)連接broker時,用該配置下user_[username]=[password]結構配置的帳號密碼登錄
Kafka-Producer配置JAAS
在kafka-broker環境下新增配置,如kafka_producer_jaas.conf,內容如下:
Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin";
};
Client:客戶端登錄服務端認證資訊,對應broker配置中user_[username]=[password]定義的配置
Kafka-Consumer配置JAAS
新增kafka_consumer_jaas.conf,配置同producer
從以上配置可以得出結論:
username="admin" password="admin"配置格式有兩種場景1、是用於服務端集群之間的認證資訊,定義在Server節點裡
2、用戶登錄服務端的認證資訊,定義在Client節點裡
user_[username]=[password]配置定義在Server節點裡,用於提供給客戶端登錄。以上關係是:Zookeeper:Kafka-Broker關係里,Zookeeper是服務端,Kafka-Broker是客戶端;Kafka-Broker:Kafka-Producer、Kafka-Consumer關係里,Kafka-Broker是服務端,Kafka-Producer、Kafka-Consumer是客戶端
二、SASL配置
zookeeper的sasl配置
zookeeper.properties配置文件新增:
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
修改zookeeper-server-start.bat,新增一個配置KAFKA_OPTS
SetLocal
set KAFKA_OPTS=-Djava.security.auth.login.config=【zk_server_jass.conf路徑】
......
EndLocal
broker新增sasl配置
server.properties新增配置
listeners=SASL_PLAINTEXT://localhost:9092
#使用的認證協議
security.inter.broker.protocol=SASL_PLAINTEXT
#SASL機制
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
# 完成身份驗證的類
#authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
# 如果沒有找到ACL(訪問控制列表)配置,則允許任何操作。
allow.everyone.if.no.acl.found=false
#超級管理員許可權用戶
super.users=User:admin
advertised.listeners=SASL_PLAINTEXT://localhost:9092
修改kafka-server-start.bat ,新增一個配置KAFKA_OPTS:
SetLocal
set KAFKA_OPTS=-Djava.security.auth.login.config=【kafka_server_jass.conf路徑】
......
EndLocal
producer的sasl配置
producer.properties新增配置
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
producer的sasl配置
consumer.properties新增配置
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
三、啟動命令【示例】
zk:
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
broker:
.\bin\windows\kafka-server-start.bat .\config\server.properties
producer:
.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic testTopic --producer.config .\config\producer.properties
consumer:
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic testTopic --consumer.config .\config\consumer.properties
