日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

鉴权kafka生产端(SCRAM)

發布時間:2023/12/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 鉴权kafka生产端(SCRAM) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

kafka官網關于sasl_scram

鑒權Kafka消費端配置


創建SCRAM Credentials

依賴zk,需要先啟動zk,然后在zk中創建存儲SCRAM 憑證:

cd kafkacluster/kafka_2.11-1.1.1bin/kafka-configs.sh --zookeeper zkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka --alter --add-config 'SCRAM-SHA-256=[password=admin-secret],SCRAM-SHA-512=[password=admin-secret]' --entity-type users --entity-name admin


查看

bin/kafka-configs.sh --zookeeper zkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka --describe --entity-type users --entity-name admin

刪除

bin/kafka-configs.sh --zookeeper zkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka --alter --delete-config 'SCRAM-SHA-512' --entity-type users --entity-name admin

存在問題

確認命令無誤

zk創建目錄

進入客戶端:zk操作


KAFKA服務配置

創建Server的JAAS文件

在每個Kafka broker的config目錄中添加一個類似下面的JAAS文件,我們稱之為kafka_server_jaas.conf,這個文件我們用于啟動Kafka服務端:

KafkaServer {org.apache.kafka.common.security.scram.ScramLoginModule requiredusername="admin"password="admin-secret"; };

修改啟動命令kafka-server-start.sh

追加下面的內容,將配置注入運行環境:

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

$@

$@:打印所有的參數(一份數據);

$*:打印所有的參數(參數個數個數據);

$#: 打印參數個數;

[cbry@localhost test]$ sh test.sh arg0 arg2 arg3
print each param from “?"arg0arg2arg3printeachparamfrom"*" arg0 arg2 arg3 print each param from "?"arg0arg2arg3printeachparamfrom"@”
arg0 arg2 arg3
print each param from “$#”
3


修改服務啟動配置文件server.properties

vim config/server.properties

#鑒權 # 必須使用真實ip地址 listeners=SASL_PLAINTEXT://localhost:9092#使用的認證協議 security.inter.broker.protocol=SASL_PLAINTEXT#SASL機制 sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256 sasl.enabled.mechanisms=SCRAM-SHA-256# ACL配置 allow.everyone.if.no.acl.found=false super.users=User:admin authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

SCP分發集群

scp -r /realtime/cbry/software/kafka/ appuser@ip:/realtime//software/

重啟kafka

ps -ef | grep server.properties,手動停止或者

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

值得注意的是:-daemon使用守護進程啟動,會只啟動一個KAFKA進程。我在搭建不同端口的kafka的集群的時候遇到過這個問題,盡管他們的brokeId和端口不同。

多個不同端口的集群:

nohup sh kafka-server-start.sh ../config/server.properties >server.log 2>&1 &

配置生產者和消費者

consumer.properties和producer.properties

config下consumer.properties和producer.properties添加命令,里面默認是localhost:9092,改端口的這里也要改。

#security security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-256

配置生產者和消費者啟動命令

不配置則報錯:


配置sh文件, kafka-console-producer-admin.sh,該命令指定conf文件認證, 用于賬號密碼認證, 此處使用管理員賬號進行sasl認證, 可以生產所有主題:

cp bin/kafka-console-producer.sh bin/kafka-console-producer-admin.shvim bin/kafka-console-producer-admin.sh

kafka-console-producer-admin.sh追加內容

#exec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsoleProducer "$@"exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=$(dirname $0)/../config/kafka_client_jaas_admin.conf kafka.tools.ConsoleConsumer "$@"

同理生成:kafka-console-consumer-admin.sh


如果使用其它命令比如說:kafka-consumer-groups.sh,則也需要加上Client的驗證信息:


新增配置文件:kafka_client_jaas_admin.conf

KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret"; };

啟動生產者和消費者

sh bin/kafka-console-producer-admin.sh --broker-list kafkaIP:port --topic test --producer.config config/producer.properties sh bin/kafka-console-consumer-admin.sh --bootstrap-server kafkaIP:port --topic test --consumer.config config/consumer.properties

配置鑒權后用鑒權啟動

使用原先的provider和consumer會,必須用鑒權的provider/consumer-admin.sh和指定配置文件啟動:


服務端部署

在IDE的控制臺我們運行是沒有問題的,但是在服務端部署的時候遇到:


這里需要我們在java程序的依賴目錄lib下添加一個jdk的依賴:

nohup java -Djava.ext.dirs=/realtime/cbry/test/lib/ -cp /realtime/cbry/test/DataSourceAccessPage.jar com.cbry.adapter.JsonAdapter "" "" ""

依賴位于JDK的目錄:JDK\jre\lib\ext\sunjce_provider.jar,引入即可。


不同權限賬戶

不同的權限賬戶,在第一節的創建SCRAM憑證的時候,添加不同的賬戶并進行賦予讀寫賦權:

讀賦權

./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka --add --allow-principal User:"cbry" --consumer --operation Read --topic 'Tecdata_test' --group '*'

寫賦權

./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka --add --allow-principal User:"cbry" --producer --operation Write --topic 'Tecdata_test' --group '*'

查看權限

./bin/kafka-acls.sh --list --authorizer-properties zookeeper.connect=zkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka

總結

以上是生活随笔為你收集整理的鉴权kafka生产端(SCRAM)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。