国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Apache zookeeper kafka 開啟SASL安全認證

這篇具有很好參考價值的文章主要介紹了Apache zookeeper kafka 開啟SASL安全認證。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

背景:我之前安裝的kafka沒有開啟安全鑒權(quán),在沒有任何憑證的情況下都可以訪問kafka。搜了一圈資料,發(fā)現(xiàn)有關(guān)于sasl、acl相關(guān)的,準備試試。

簡介

Kafka是一個高吞吐量、分布式的發(fā)布-訂閱消息系統(tǒng)。Kafka核心模塊使用Scala語言開發(fā),支持多語言(如Java、Python、Go等)客戶端,它可以水平擴展和具有高吞吐量特性而被廣泛使用,并與多類開源分布式處理系統(tǒng)進行集成使用。

? Kafka作為一款開源的、輕量級的、分布式、可分區(qū)和具備復(fù)制備份的、基于ZooKeeper協(xié)調(diào)管理的分布式流平臺的功能強大的消息系統(tǒng)。與傳統(tǒng)消息系統(tǒng)相比,Kafka能夠更好的處理活躍的流數(shù)據(jù),讓數(shù)據(jù)在各個子系統(tǒng)中高性能、低延遲地不停流轉(zhuǎn)。

自0.9.0.0版本開始Kafka社區(qū)添加了許多功能用于提高Kafka集群的安全性,Kafka提供SSL或者SASL兩種安全策略。SSL方式主要是通過CA令牌實現(xiàn),此方案主要介紹SASL方式。

SASL驗證分類
驗證方式?? ?kafka版本?? ?特點
SASL/PLAIN?? ?0.10.0.0?? ?不能動態(tài)添加用戶
SASL/SCRAM?? ?0.10.2.0?? ?可以動態(tài)添加用戶
SASL/Kerberos?? ?0.9.0.0?? ?需要獨立部署驗證服務(wù)
SASL/oauthbearer?? ?2.0.0?? ?需要自己實現(xiàn)接口,實現(xiàn)token的創(chuàng)建和驗證,需要額外的oauth服務(wù)

使用SSL加密在代理和客戶端之間,代理之間或代理和工具之間傳輸?shù)臄?shù)據(jù)

SCRAM認證配置的優(yōu)點:

? 如果使用PLAIN認證有個問題,就是不能動態(tài)新增用戶,每次添加用戶后,需要重啟正在運行的Kafka集群才能生效。

? 因此,在生產(chǎn)環(huán)境中,這種認證方式不符合實際業(yè)務(wù)場景,不利于后期擴展。然而使用SCRAM認證,可以動態(tài)新增用戶,添加用戶后,可以不用重啟正在運行的Kafka集群即可進行鑒權(quán)。所以生產(chǎn)環(huán)境推薦使用SCRAM+PLAIN搭配的認證方案。

配置zookeeper集群啟用SASL

1. 配置zookeeper,啟用sasl認證,cat zoo.cfg查看到如下內(nèi)容:

tickTime=2000
initLimit=1
syncLimit=5
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/log
clientPort=2181
admin.serverPort=8888
maxClientCnxns=3000
autopurge.snapRetainCount=3
autopurge.purgeInterval=24
server.1=localhost:2888:3888
4lw.commands.whitelist=conf,stat,srvr,mntr.envi
#zk SASL
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000
requireClientAuthScheme=sasl
zookeeper.sasl.client=true

2. 配置zookeeper?JAAS

cat zk_jaas.conf文件內(nèi)容如下,如果沒有改文件則使用vi命令編輯


Server {
    org.apache.zookeeper.server.auth.DigestLoginModule required
    username="admin"
    password="admin123"
    user_kafka="kafka123";
};
  1. 注意:admin用戶 是zk 集群之間使用的。kafka用戶 是 broker 與 zk 之間使用的。

3.?修改zkEnv.sh

將上一步添加的 jaas 配置文件添加到zookeeper的環(huán)境變量中,zkEnv.sh文件最后添加一行:
 
vim zkEnv.sh
 
ZOOBINDIR="${ZOOBINDIR:-/usr/bin}"
ZOOKEEPER_PREFIX="${ZOOBINDIR}/.."
 
# 添加如下 新增變量SERVER_JVMFLAGS:
 
export SERVER_JVMFLAGS="-Djava.security.auth.login.config=../conf/zk_jaas.conf"

配置kafka sasl動態(tài)認證

SASL/SCRAM認證是把憑證(credential)存儲在Zookeeper,使用kafka-configs.sh在Zookeeper中創(chuàng)建憑據(jù)。對于每個SCRAM機制,必須添加具有機制名稱的配置來創(chuàng)建憑證,所以在啟動Kafka broker之前需要創(chuàng)建代理間通信的憑據(jù)。

  這里配置的 Kafka和生產(chǎn)者/消費者之間 采用SASL/PLAIN和SASL/SCRAM兩種方式共同完成認證,授權(quán)使用ACL方式。PLAIN方式的用戶是在jaas文件中寫死的,不能動態(tài)的添加;SCRAM支持動態(tài)的添加用戶。

1. 創(chuàng)建用戶

配置SASL/SCRAM認證的第一步,是配置可以連接到kafka集群的用戶。本案例創(chuàng)建了3個用戶:admin,producer,consumer。kafka_server_admin用戶用于broker之間的認證通信,producer用戶用于生產(chǎn)者連接kafka,consumer用戶用于消費者連接kafka 。

./kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=admin123],SCRAM-SHA-512=[password=admin123]' --entity-type users --entity-name admin
 
./kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=admin123],SCRAM-SHA-512=[password=admin123]' --entity-type users --entity-name producer
 
./kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=admin123],SCRAM-SHA-512=[password=admin123]' --entity-type users --entity-name consumer

Apache zookeeper kafka 開啟SASL安全認證,JAVA,zookeeper,kafka,安全?

?

2. 查看創(chuàng)建的用戶信息

kafka-configs 腳本是用來設(shè)置主題級別參數(shù)的。其實,它的功能還有很多。比如在這個例子中,我們使用它來創(chuàng)建 SASL/SCRAM 認證中的用戶信息??梢允褂孟铝忻顏聿榭磩偛艅?chuàng)建的用戶數(shù)據(jù)。

./kafka-configs.sh --zookeeper localhost:2181 --describe --entity-type users 
 
#(可以單獨指定某個用戶 --entity-name producer,如下)
./kafka-configs.sh --zookeeper localhost:2181 --describe --entity-type users --entity-name producer

Apache zookeeper kafka 開啟SASL安全認證,JAVA,zookeeper,kafka,安全

Apache zookeeper kafka 開啟SASL安全認證,JAVA,zookeeper,kafka,安全

ZK客戶端命令行查看:
 
./zkCli.sh  -server localhost:2181
 
ls /config/users

Apache zookeeper kafka 開啟SASL安全認證,JAVA,zookeeper,kafka,安全

3.?配置kafka jaas文件

配置了用戶之后,我們需要為 Broker 創(chuàng)建一個對應(yīng)的 JAAS 文件。在實際場景中,需要為每臺單獨的物理 Broker 機器都創(chuàng)建一份 JAAS 文件。

Kafka 的 jaas認證配置文件,配置的是登錄類,超管密碼和管理的帳號密碼列表

vim kafka_server_jaas.conf

KafkaServer {
    org.apache.kafka.common.security.scram.ScramLoginModule required
    username ="admin"
    password="admin123"
    user_admin="admin123"
    user_producer="producer123"
    user_consumer="consumer123";
};
KafkaClient {
    org.apache.kafka.common.security.scram.ScramLoginModule required
    username="admin"
    password="admin123"
    user_producer="producer123"
    user_consumer="consumer123";
};
Client {
    org.apache.kafka.common.security.scram.ScramLoginModule required
    username="kafka"
    password="kafka123";
};

KafkaServer中usename配置的是kafka服務(wù)端使用的賬號和密碼,后面的user_xxx事預(yù)設(shè)的普通帳號認證信息。
?
中間部分配置的是PLAIN認證方式的賬戶和密碼,其中producer1是賬戶名,producer123是密碼。
Client配置了broker到Zookeeper的連接用戶名密碼,這里要和前面zookeeper配置中的zk_jaas.conf.conf 中 user_kafka 的賬號和密碼相同。
?
關(guān)于這個文件內(nèi)容,需要注意以下兩點:
?
1)不要忘記最后一行和倒數(shù)第二行結(jié)尾處的分號;
?
2)JAAS 文件中不需要任何空格鍵。

4.?kafka 配置文件啟用SASL認證

Kafka 服務(wù)配置文件 server.propertis,配置認證協(xié)議及認證實現(xiàn)類
cat server.properties其它內(nèi)容都注釋掉,然后追加如下內(nèi)容:

broker.id=0
listeners=SASL_PLAINTEXT://:9092
advertised.listeners=SASL_PLAINTEXT://localhost:9092
sasl.enabled.mechanisms=SCRAM-SHA-256,PLAIN
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
security.inter.broker.protocol=SASL_PLAINTEXT
allow.everyone.if.no.acl.found=false
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
super.users=User:admin
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka/logs
num.partitions=3
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.flush.interval.messages=10000
log.flush.interval.ms=1000
log.retention.hours=168
log.retention.bytes=1073741824
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
delete.topic.enable=true
auto.create.topics.enable=false
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=60000
group.initial.rebalance.delay.ms=0

Host.name=43.138.0.199

5.?kafka 啟動腳本添加認證文件路徑的環(huán)境變量

Kafka 安全認證可以直接通過環(huán)境變量 -Djava.security.auth.login.config 設(shè)置,修改 Kafka 啟動腳本 kafka-start-server.sh 文件最后一行,增加一個參數(shù)指向 jaas 配置文件的絕對路徑

vi?kafka-server-start.sh

exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/home/lighthouse/kafka_2.12-2.2.1/config/kafka_server_jaas.conf  kafka.Kafka "$@"

?6.??kafka客戶端配置

1)?配置consumer.properties和producer.properties,都要加入以下配置

security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-512

2)?生產(chǎn)者配置

使用kafka-console-producer.sh腳本測試生產(chǎn)者,由于開啟安全認證和授權(quán),此時使用console-producer腳本來嘗試發(fā)送消息,那么消息會發(fā)送失敗,原因是沒有指定合法的認證用戶,因此客戶端需要做相應(yīng)的配置,需要創(chuàng)建一個名為producer.conf的配置文件給producer程序使用。

config目錄下創(chuàng)建一個producer.conf的文件,cat producer.conf文件內(nèi)容如下:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.Scra
mLoginModule required username="producer" password="producer123";

注意:Topic設(shè)置寫權(quán)限

3)?消費者配置

使用kafka-console-consumer.sh腳本測試生產(chǎn)者,由于開啟安全認證和授權(quán),因此客戶端需要做相應(yīng)的配置。需要為 consumer 用戶創(chuàng)建consumer.conf給消費者程序,同時設(shè)置對topic的讀權(quán)限。

config目錄下創(chuàng)建一個consumer.conf的文件,cat consumer.conf文件內(nèi)容如下:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.Scra
mLoginModule required username="consumer" password="consumer123";

注意:Topic設(shè)置讀權(quán)限。

4)?在生產(chǎn)者和消費者啟動腳本中引入JAAS文件

vim bin/kafka-console-producer.sh
 
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx512M"
fi
 
# 添加這行
export KAFKA_OPTS="-Djava.security.auth.login.config=../config/kafka_server_jaas.conf"
 
exec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsoleProducer "$@"
 
 
# vim bin/kafka-console-consumer.sh
 
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx512M"
fi
 
# 添加這行
export KAFKA_OPTS="-Djava.security.auth.login.config=../config/kafka_server_jaas.conf"
 
exec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsoleConsumer "$@"

啟動kafka

nohup kafka-server-start.sh /path-to-kafka/config/server.properties &

我自己寫了一個腳本,同時啟動zookeeper和kafka

文件名稱叫startup.sh內(nèi)容如下:

cd /home/lighthouse/zk-3.4.14/zookeeper-3.4.14/bin
./zkServer.sh start
cd /home/lighthouse/kafka_2.12-2.2.1/
nohup bin/kafka-server-start.sh config/server.properties > output.txt &

zookeeper沒有啟動成功,我找下原因。把整個過程重新整理了一遍,發(fā)現(xiàn)zookeeper、kafka啟動成功了。

Apache zookeeper kafka 開啟SASL安全認證,JAVA,zookeeper,kafka,安全

檢查驗證

./zkCli.sh  -server localhost:2181

ls /brokers/ids

Apache zookeeper kafka 開啟SASL安全認證,JAVA,zookeeper,kafka,安全

1. 生產(chǎn)者測試

1)?創(chuàng)建一個測試主題test_topic

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

Apache zookeeper kafka 開啟SASL安全認證,JAVA,zookeeper,kafka,安全

2)查看創(chuàng)建的Topic

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

Apache zookeeper kafka 開啟SASL安全認證,JAVA,zookeeper,kafka,安全文章來源地址http://www.zghlxwxcb.cn/news/detail-839621.html

到了這里,關(guān)于Apache zookeeper kafka 開啟SASL安全認證的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • kafka安全認證與授權(quán)(SASL/PLAIN)

    SASL 鑒權(quán)協(xié)議,主要用來保證客戶端登錄服務(wù)器的時候,傳輸?shù)蔫b權(quán)數(shù)據(jù)的安全性,SASL是對用戶名和密碼加解密用的 SSL 是一種間于傳輸層(比如TCP/IP)和應(yīng)用層(比如HTTP)的協(xié)議。對傳輸內(nèi)容進行加密,如HTTPS 如果使用了SASL但是沒有使用SSL,那么服務(wù)端可以認證客戶端的身

    2023年04月25日
    瀏覽(21)
  • Kafka安全認證機制詳解之SASL_PLAIN

    Kafka安全認證機制詳解之SASL_PLAIN

    官方文檔: https://kafka.apache.org/documentation/#security 在官方文檔中,kafka有五種加密認證方式,分別如下: SSL:用于測試環(huán)境 SASL/GSSAPI (Kerberos) :使用kerberos認證,密碼是加密的,也是當前企業(yè)中使用最多的,最小支持版本0.9 SASL/PLAIN :使用簡單用戶名和密碼形式,生產(chǎn)環(huán)境中一

    2024年01月21日
    瀏覽(22)
  • 第一章 Kafka 配置部署及SASL_PLAINTEXT安全認證

    第一章 Kafka 配置部署及SASL_PLAINTEXT安全認證

    第一章 Kafka 配置部署及SASL_PLAINTEXT安全認證 第二章??Spring Boot 整合 Kafka消息隊列?生產(chǎn)者 第三章??Spring Boot 整合 Kafka消息隊列?消息者 Kafka下載地址:Apache Kafka 2.1、修改 Zookeeper 配置文件 config/zookeeper.properties 2.2、Zookeeper 配置文件修改內(nèi)容 2.2、Zookeeper 配置文件增加配置說明

    2024年01月16日
    瀏覽(47)
  • Kafka增加安全驗證安全認證,SASL認證,并通過spring boot-Java客戶端連接配置

    公司Kafka一直沒做安全驗證,由于是誘捕程序故需要面向外網(wǎng)連接,需要增加Kafka連接驗證,保證Kafka不被非法連接,故開始研究Kafka安全驗證 使用Kafka版本為2.4.0版本,主要參考官方文檔 官網(wǎng)對2.4版本安全驗證介紹以及使用方式地址: https://kafka.apache.org/24/documentation.html#secu

    2024年02月01日
    瀏覽(93)
  • storm統(tǒng)計服務(wù)開啟zookeeper、kafka 、Storm(sasl認證)

    storm統(tǒng)計服務(wù)開啟zookeeper、kafka 、Storm(sasl認證)

    部署storm統(tǒng)計服務(wù)開啟zookeeper、kafka 、Storm(sasl認證) 當前測試驗證結(jié)果: 單獨配置zookeeper 支持acl 設(shè)置用戶和密碼,在storm不修改代碼情況下和kafka支持 當kafka 開啟ACL時,storm 和ccod模塊不清楚配置用戶和密碼。 使用python腳本連接kafka用戶和密碼是能成功發(fā)送消息。 當前部署

    2024年01月22日
    瀏覽(26)
  • 單機部署Kafka和開啟SASL認證

    操作系統(tǒng):linux apache-zookeeper-3.8.1-bin.tar.gz kafka_2.13-3.4.0.tgz 1.上傳zookeeper 與kafka到 /opt 2、解壓 tar -zxvf apache-zookeeper-3.8.1-bin.tar.gz tar -zxvf ?kafka_2.13-3.4.0.tgz mv?apache-zookeeper-3.8.1-bin?zookeeper mv kafka_2.13-3.4.0 kafka 3、修改zookeeper配置文件并啟動 修改zoo.cfg,增加以下命令 創(chuàng)建zk_server_j

    2024年01月22日
    瀏覽(12)
  • Kafka 開啟 SASL/PLAINTEXT 認證及 ACL

    在之前的開發(fā)工作中,需要開發(fā)使用用戶名密碼的方式連接 Kafka 并對 Kafka 數(shù)據(jù)進行處理,但是客戶并沒有提供可以測試的環(huán)境,于是就自己著手搭建了一套單節(jié)點的 Kafka 并開啟 SASL 認證。 1、組件版本 組件 版本 kafka 2.11-2.22 zookeeper 3.6.2 2、下載文件 KAFKA:下載地址 ZOOKEEPER:

    2023年04月08日
    瀏覽(23)
  • 實戰(zhàn):kafka、zookeeper SASL+ACL實現(xiàn)動態(tài)權(quán)限認證、授權(quán)

    實戰(zhàn):kafka、zookeeper SASL+ACL實現(xiàn)動態(tài)權(quán)限認證、授權(quán)

    1. 不接入外部存儲,基于kafka原生ACL認證 環(huán)境: kafka-2.2.1、zookeeper-3.6.3 ? kafka給我們提供了 SASL/SCRAM 模式,將SASL、ACL規(guī)則信息存儲到zookeeper中,并且通過 KafkaClientAdmin Api,新增、編輯、刪除規(guī)則,其特性如下 應(yīng)用發(fā)送、消費實現(xiàn)動態(tài)身份認證和授權(quán) 基于kafka SASL/SCRAM 模式,

    2023年04月26日
    瀏覽(21)
  • 單機部署Kafka和開啟SASL認證以及基礎(chǔ)命令使用

    ? 操作系統(tǒng):linux kafka:kafka_2.13-3.3.2 zookeeper:apache-zookeeper-3.7.1-bin 1.下載zookeeper和kafka安裝包 2.解壓 3.修改zookeeper配置文件并啟動 修改zoo.cfg文件,增加以下命令 創(chuàng)建zk_server_jaas.conf文件(開啟kafka sasl認證使用),文件內(nèi)容 此外,認證過程需要導(dǎo)入kafka的依賴類,在下載的kafka

    2024年01月18日
    瀏覽(20)
  • Zookeeper的安全認證與加密

    Zookeeper是一個開源的分布式協(xié)調(diào)服務(wù),用于構(gòu)建分布式應(yīng)用程序的基礎(chǔ)設(shè)施。它提供了一種可靠的、高性能的、分布式的協(xié)調(diào)服務(wù),以實現(xiàn)分布式應(yīng)用程序的一致性。Zookeeper的安全認證和加密是確保分布式應(yīng)用程序的安全性和數(shù)據(jù)完整性的關(guān)鍵部分。 在本文中,我們將討論

    2024年02月20日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包