開啓Kafka ACL認證控制

通過 producer、consumer、admin 實現了寫入、讀取和 consumer-group 控制權限的分離。沒有配置 zookeeper 的 SASL


Broker 端

1. 創建 JAAS 文件,注意結尾兩個分號,保存爲 kafka_server_jaas.conf

#vim config/kafka_server_jaas.conf

KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required

     username="admin"

     password="admin"

     user_admin="admin"

     user_reader="reader"

     user_writer="writer";

     };

由於 kafka-server-start.sh 只接收 server.properties 的位置,故需要修改啓動腳本,cp 一份修改最後一行爲

vim ../bin/kafka-server-start.sh 

exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/workspace/kafka/kafka_2.11-0.11.0.3/config/kafka_server_jaas.conf kafka.Kafka "$@"

2. 修改 broker 啓動所需的 server.properties 文件,前五條必須

vim config/server.properties

# 配置ACL入口類

authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

# 本例使用SASL_PLAINTEXT

listeners=SASL_PLAINTEXT://:9092

security.inter.broker.protocol= SASL_PLAINTEXT

sasl.mechanism.inter.broker.protocol=PLAIN

sasl.enabled.mechanisms=PLAIN

# 設置本例中admin爲超級用戶

super.users=User:admin

#一個參數allow.everyone.if.no.acl.found

#設置爲true,ACL機制改爲黑名單機制,只有黑名單中的用戶無法訪問

#設置爲false,ACL機制改爲白名單機制,只有白名單中的用戶可以訪問,默認值爲false

 啓動 broker

nohup bin/kafka-server-start.sh config/server.properties > /dev/null 2>&1 &

console-producer 腳本

  1.  創建 kafka-prod-jaas.conf 認證文件

vim config/writer_jaas.conf

KafkaClient { org.apache.kafka.common.security.plain.PlainLoginModule required

     username="writer"

     password="writer";

     };

2. cp 一份腳本,修改最後一行

vim bin/kafka-console-producer.sh

exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=/workspace/kafka/kafka_2.11-0.11.0.3/config/writer_jaas.conf kafka.tools.ConsoleProducer "$@"

使用 ACL 配置 producer 寫入授權

bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:writer --operation Write --topic test

使用修改後的 console-producer 腳本發送消息

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

如果失敗,請將localhost更改成brokerIP

console-cosnumer 腳本

1. 創建 kafka-cons-jaas.conf 認證文件

vim config/reader_jaas.conf

KafkaClient {

org.apache.kafka.common.security.plain.PlainLoginModule required

username="reader"

password="reader";

};

2. cp 一份腳本,修改最後一行

vim bin/kafka-console-consumer.sh

exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=/workspace/kafka/kafka_2.11-0.11.0.3/config/reader_jaas.conf kafka.tools.ConsoleConsumer "$@"

3. 創建 consumer.config 文件或修改 /config/consumer.properties 文件

vim consumer.config

security.protocol=SASL_PLAINTEXT

sasl.mechanism=PLAIN

group.id=test-group

#group.id=test-group

#group可以指定,也可以不指定。

#一個問題:指定group後--from-beginning不生效,consumer會從記錄的offset處繼續消費

4. 使用 ACL 配置 consumer 讀取授權

bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:reader --operation Read --topic test

5.使用修改後的 console-consumer 腳本接收消息

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

仍然會報錯

6.消費者組制授權

bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:reader --operation Read --group test-group

就可以正常消費數據了

kafka-manager

在 Kafka 配置 SASL 後,需要對 kafka-manager 增加相應配置,監控 offset 等指標

無 SASL zookeeper ,在勾選 poll consumer info 後注意以下三個選項對應 broker 的配置即可,升級到最新版本,賬號密碼使用管理員

image.png

















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章