天天看點

kafka配置SASL适用于kafka_2.11-1.1.1版本

适用于kafka_2.11-1.1.1版本

第1步

将kafka_client_jaas.conf/kafka_server_jaas.conf/kafka_zoo_jaas.conf三個檔案放入kafka的config檔案夾中,檔案中配置使用者,admin使用者必須配置。

  • kafka_client_jaas.conf内容如下
KafkaClient {  
org.apache.kafka.common.security.plain.PlainLoginModule required  
    username="admin"  
    password="admin";  
};
           
  • kafka_server_jaas.conf内容如下
KafkaServer {
	org.apache.kafka.common.security.plain.PlainLoginModule required
		username="admin"
		password="admin"
		user_admin="admin"
		user_test="test#2018";
};
KafkaClient {
	org.apache.kafka.common.security.plain.PlainLoginModule required
		username="admin"
		password="admin";
};

Client {
	org.apache.kafka.common.security.plain.PlainLoginModule required
		username="admin"
		password="admin";
};
           
  • kafka_zoo_jaas.conf内容如下
ZKServer{
	org.apache.kafka.common.security.plain.PlainLoginModule required
		username="admin"
		password="admin"
		user_admin="admin";
};
           

第2步

修改kafka的bin檔案夾中的zookeeper-server-start.sh,

添加:

export KAFKA_OPTS=" -Djava.security.auth.login.config=/data/application/kafka_2.11-1.1.1/config/kafka_zoo_jaas.conf -Dzookeeper.sasl.serverconfig=ZKServer"

第3步

修改kafka的bin檔案夾中的kafka-server-start.sh,

添加:

export KAFKA_OPTS=" -Djava.security.auth.login.config=/data/application/kafka_2.11-1.1.1/config/kafka_server_jaas.conf"

第4步

修改kafka的bin檔案夾中的kafka-console-producer.sh

添加:

export KAFKA_OPTS=" -Djava.security.auth.login.config=/data/application/kafka_2.11-1.1.1/config/kafka_client_jaas.conf"

第5步

修改kafka的bin檔案夾中的kafka-console-consumer.sh

添加:

export KAFKA_OPTS=" -Djava.security.auth.login.config=/data/application/kafka_2.11-1.1.1/config/kafka_client_jaas.conf"

第6步

修改kafka的config檔案夾中的consumer.properties

添加:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
           

第7步

修改kafka的config檔案夾中的producer.properties

添加:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
           

第8步

修改kafka的config檔案夾中的zookeeper.properties

添加:

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
           

第9步

修改kafka的config檔案夾中的server.properties

修改:

listeners=SASL_PLAINTEXT://192.168.1.115: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=true
super.users=User:admin

delete.topic.enable=true
auto.create.topics.enable=false
           

第10步

啟動zookeeper服務

執行

sh bin/zookeeper-server-start.sh config/zookeeper.properties

第11步

啟動kafka服務

執行

sh bin/kafka-server-start.sh config/server.properties

第12步

檢視topic清單

執行

sh bin/kafka-topics.sh --list --zookeeper localhost:2181

第13步

建立新的topic

執行

sh bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 16 --topic test

第14步

給admin使用者授權

執行

sh bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:admin --group=* --topic=*

第15步

給使用者test授予某個topic的讀寫的權限

執行

sh bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:test --operationRead --operationWrite --topic test --group=*

說明:

控制讀寫:–operationRead–operationWrite

控制消費組:不控制組 --group=*,指定消費組 --grouptest-comsumer-group

第16步

移除權限

執行

sh bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --remove --allow-principal User:test --allow-host 192.168.1.101 --operationRead --operationWrite --topic test

第17步

列出topic為test的所有權限賬戶

執行

sh bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --list --topic test

第18步

測試啟動消費者

執行

sh bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.115:9092 --topic test --from-beginning --consumer.config config/consumer.properties

第19步

測試啟動生産者

執行

sh bin/kafka-console-producer.sh --broker-list 192.168.1.115:9092 --topic test --producer.config config/producer.properties

第20步

啟用kafka-manager,需要使用最新版本1.3.3.21,

連結:https://pan.baidu.com/s/1H6rMOdKrEJ59pivgCkSdjg 
提取碼:vreq 
           

第21步

将my-jaas.conf移到kafa-manager的conf檔案夾中

my-jaas.conf内容如下:

KafkaClient {
	org.apache.kafka.common.security.plain.PlainLoginModule required
		username="admin"
		password="admin";
};

Client {
	org.apache.kafka.common.security.plain.PlainLoginModule required
		username="admin"
		password="admin";
};
           

第22步

修改kafa-manager的conf檔案夾中的consumer.properties,

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
           

第23步

修改kafa-manager的conf檔案夾中的application.conf

kafka-manager.consumer.properties.file=(上面修改的consumer.properties)

第24步

啟動kafka-manager

bin/kafka-manager -Djava.security.auth.login.config=conf/my-jaas.conf -Dconfig.file=conf/application.conf