使用 SASL/PLAIN 認證java
一、配置kafka server端(每一個broker)git
vi $KAFKA_HOME/server.properties
listeners=SASL_PLAINTEXT://x-x-x-x:9092 security.inter.broker.protocol=SASL_PLAINTEXT sasl.enabled.mechanisms=PLAIN sasl.mechanism.inter.broker.protocol=PLAIN在$KAFKA_HOME路徑下新建JAAS文件。
vi kafka_server_jaas.conf
KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafka#secret" user_kafka="kafka#secret" user_alice="alice#secret" }
這個配置定義了2個用戶(kafka 和 alice)。在KafkaServer部分,username和password是broker用於初始化鏈接到其餘的broker,在這個例子中,kafka用戶爲broker間的通信,useruserName定義了全部鏈接到broker和broker驗證的全部的客戶端鏈接包括其餘broker的用戶密碼。(轉自連接:http://orchome.com/270) 另,useruserName必須配置kafka用戶,不然報錯。博客http://wangzzu.github.io/2016/07/29/sasl-plain-kafka/和一些問答中都反應此問題。github
JAAS文件做爲每一個broker的jvm參數,在kafka-server-start.sh腳本中增長以下配置。
vi $KAFKA_HOME/bin/kafka-server-start.sh
if [ "x$KAFKA_OPTS" ]; then export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/local/kafka_0.10/kafka_server_jaas.conf" fi
二、配置kafka client端 PLAIN機制下kafka生產者/消費者如何生產/消費web
第一種,consoleapache
在$KAFKA_HOME路徑下新建JAAS文件。
vi kafka_client_jaas.conf
KafkaClient { org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafka#secret"; };
KafkaClient部分,username和password是客戶端用來配置客戶端鏈接broker的用戶,在這個例子中,客戶端使用kafka 用戶鏈接到broker。bootstrap
修改consuer和producer的配置文件(配置注意空格否則報錯)
在$KAFKA_HOME/config/consumer.properties和$KAFKA_HOME/config/producer.properties裏分別加上以下配置
security.protocol=SASL_PLAINTEXT sasl.mechanism=PLAIN在啓動consumer和producer時,分別添加jvm參數。
vi kafka-console-consumer.sh/kafka-console-producer.sh($KAFKA_HOME/bin目錄下)
if [ "x$KAFKA_OPTS" ]; then export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/local/kafka_0.10/kafka_client_jaas.conf" fiproduce
kafka-console-producer.sh --broker-list x.x.x.x:9092 --topic perf --producer.config /usr/local/kafka_0.10/config/producer.propertiesconsume 只支持新的消費方式--bootstrap-server
不報錯 --bootstrap-server
kafka-console-consumer.sh --bootstrap-server x.x.x.x:9092 --topic perf --from-beginning --consumer.config /usr/local/kafka_0.10/config/consumer.properties --new-consumer報錯 --zookeeper
kafka-console-consumer.sh --zookeeper x.x.x.x:21818/kafka --topic perf --consumer.config /usr/local/kafka_0.10/config/consumer.properties
第二種,java客戶端消費安全
運行jar包的服務器的指定路徑下必須有kafka_client_jaas.conf文件
在程序中添加以下配置
System.setProperty("java.security.auth.login.config", "/tmp/kafka_client_jaas.conf"); //配置文件路徑 props.put("security.protocol", "SASL_PLAINTEXT"); props.put("sasl.mechanism", "PLAIN");
本文參考了: kafka使用SASL驗證 http://orchome.com/270服務器
Kafka JAAS Plain SASL 安全認證配置 http://blog.csdn.net/geting/article/details/52044055jvm
Kafka 0.10.0 SASL/PLAIN身份認證及權限實現 http://wangzzu.github.io/2016/07/29/sasl-plain-kafka/ui