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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

Kafka SCRAM和PLAIN权限认证

發(fā)布時間:2023/12/14 ChatGpt 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kafka SCRAM和PLAIN权限认证 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目前Kafka ACL支持多種權(quán)限認(rèn)證,今天筆者給大家介紹一下SCRAM和PLAIN的權(quán)限認(rèn)證。驗證環(huán)境如下:

?

  • JDK:

    1.8

  • Kafka:

    2.3.0

  • Kafka Eagle:

    1.3.8

?

2.1?PLAIN認(rèn)證

首先,在$KAFAK_HOME/config目錄新建一個文本文件,名為kafka_server_plain_jaas.conf,配置內(nèi)容如下:

KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret" user_admin="admin-secret" user_ke="ke";};

接著,將腳本文件kafka-server-start.sh重命名為kafka-server-plain-start.sh,并修改最后一行的內(nèi)容為:

# 添加鑒權(quán)文件 exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=$base_dir/../config/kafka_server_plain_jaas.conf kafka.Kafka "$@"

然后,復(fù)制server.properties文件并重命名為plain.properties,接著修改服務(wù)端配置文件plain.properties,內(nèi)容如下:

# Protocollisteners=SASL_PLAINTEXT://127.0.0.1:9092security.inter.broker.protocol=SASL_PLAINTEXTsasl.mechanism.inter.broker.protocol=PLAINsasl.enabled.mechanisms=PLAIN # ACLallow.everyone.if.no.acl.found=falsesuper.users=User:adminauthorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

最后,創(chuàng)建客戶端用戶認(rèn)證文件,kafka_client_plain_jaas.conf內(nèi)容如下:

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

?

2.2 啟動PLAIN認(rèn)證集群

2.2.1 啟動Zookeeper

# Zookeeper的配置比較簡單,這里不多做介紹 zkServer.sh start

?

2.2.2 啟動Kafka集群

?

# 進(jìn)入到Kafka安裝bin目錄 ./kafka-server-plain-start.sh ../config/plain.properties &

?

2.2.3 創(chuàng)建Topic

./kafka-topics.sh --create --zookeeper 127.0.0.1:2181/plain --replication-factor 1 --partitions 3 --topic test_plain

?

2.2.4 添加讀寫權(quán)限

# 添加讀權(quán)限./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/plain --add --allow-principal User:ke --operation Read --topic test_plain # 添加寫權(quán)限./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/plain --add --allow-principal User:ke --operation Write --topic test_plain# 添加消費(fèi)者組權(quán)限./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/plain --add --allow-principal User:ke --operation Read --group g_plain_test# 查看權(quán)限列表./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/plain --list

?

2.2.5 執(zhí)行結(jié)果

?

2.3?SCRAM認(rèn)證

PLAIN認(rèn)證有個問題,就是不能動態(tài)新增用戶,每次添加用戶后,需要重啟正在運(yùn)行的Kafka集群才能生效。為此,在生產(chǎn)環(huán)境,這種認(rèn)證方式不符合實際業(yè)務(wù)場景。而SCRAM不一樣,使用SCRAM認(rèn)證,可以動態(tài)新增用戶,添加用戶后,可以不用重啟正在運(yùn)行的Kafka集群即可進(jìn)行鑒權(quán)。

新增kafka_server_scram_jaas.conf,配置內(nèi)容如下:

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

接著,將腳本文件kafka-server-start.sh重命名為kafka-server-scram-start.sh,并修改最后一行的內(nèi)容為:

# 添加鑒權(quán)文件 exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=$base_dir/../config/kafka_server_scram_jaas.conf kafka.Kafka "$@"

?

然后在$KAFKA_HOME/config目錄中,復(fù)制server.properties文件并重命名為scram.properties,接著修改服務(wù)端配置文件scram.properties,內(nèi)容如下:

# Protocollisteners=SASL_PLAINTEXT://dn1:9092security.inter.broker.protocol=SASL_PLAINTEXTsasl.mechanism.inter.broker.protocol=SCRAM-SHA-256sasl.enabled.mechanisms=SCRAM-SHA-256 # ACLallow.everyone.if.no.acl.found=falsesuper.users=User:adminauthorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

2.3.1 啟動Zookeeper

# Zookeeper的配置比較簡單,這里不多做介紹 zkServer.sh start

?

2.3.2 添加管理員權(quán)限和普通用戶

# 添加管理員 ./kafka-configs.sh --zookeeper 127.0.0.1:2181/scram --alter --add-config 'SCRAM-SHA-256=[password=admin-secret],SCRAM-SHA-512=[password=admin-secret]' --entity-type users --entity-name admin # 添加普通用戶(ke) ./kafka-configs.sh --zookeeper 127.0.0.1:2181/scram --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=ke],SCRAM-SHA-512=[password=ke]' --entity-type users --entity-name ke

?

2.3.3 啟動SCRAM認(rèn)證集群

./kafka-server-scram-start.sh ../config/scram.properties &

?

2.3.4 創(chuàng)建Topic

?

./kafka-topics.sh --create --zookeeper 127.0.0.1:2181/scram --replication-factor 1 --partitions 3 --topic test_scram

?

2.3.5 添加權(quán)限

# 添加讀權(quán)限 ??? ./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/scram --add --allow-principal User:ke --operation Read --topic test_scram # 添加寫權(quán)限 ?????? ./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/scram --add --allow-principal User:ke --operation Write --topic test_scram # 添加消費(fèi)者組權(quán)限 ./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/scram --add --allow-principal User:ke --operation Read --group g_scram_test # 查看權(quán)限列表 ./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/scram --list

?

2.3.6 執(zhí)行結(jié)果

Kafka權(quán)限級別包含Topic、Group、Cluster、TransactionalId,每個維度涉及的權(quán)限內(nèi)容如下:

ResourceOperations
TopicRead,Write,Describe,Delete,DescribeConfigs,AlterConfigs,All
GroupRead,Describe,All
ClusterCreate,ClusterAction,DescribeConfigs,AlterConfigs,IdempotentWrite,Alter,Describe,All
TransactionalIdDescribe,Write,All

?

例如,統(tǒng)計Topic的Capacity大小時,如果拋出異?!癈luster authorization failed”,這是由于沒有開啟Cluster級別的Describe權(quán)限,執(zhí)行如下命令即可:

./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/scram --add --allow-principal User:ke --operation Describe --cluster

那么如何使用Kafka Eagle來集成有SCRAM認(rèn)證的Kafka集群,進(jìn)行監(jiān)控呢?訪問http://www.kafka-eagle.org/,下載安裝包,解壓并配置如下內(nèi)容:

# 這里對啟動一個擁有SCRAM認(rèn)證的Kafka集群(別名為cluster1)進(jìn)行配置cluster1.kafka.eagle.sasl.enable=truecluster1.kafka.eagle.sasl.protocol=SASL_PLAINTEXTcluster1.kafka.eagle.sasl.mechanism=SCRAM-SHA-256cluster1.kafka.eagle.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="ke" password="ke";# 這里ClientId如果不需要,可以不用配置cluster1.kafka.eagle.sasl.client.id=

然后,執(zhí)行ke.sh start進(jìn)行啟動Kafka Eagle監(jiān)控系統(tǒng)。

4.1 Topic預(yù)覽

?

4.2 使用KSQL查詢Topic

執(zhí)行如下SQL語句,代碼如下:

select * from "test_scram" where "partition" in (0) limit 1

執(zhí)行結(jié)果如下:

生產(chǎn)環(huán)境中,用戶可能隨著業(yè)務(wù)需要,增加或者刪除,此時動態(tài)控制用戶時很有必要的。而且,生產(chǎn)環(huán)境Kafka集群不可能隨隨便便重啟,因此采用SCRAM來進(jìn)行Kafka鑒權(quán)非常適合。

總結(jié)

以上是生活随笔為你收集整理的Kafka SCRAM和PLAIN权限认证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。