6年資深開發(fā)帶你10分鐘了解Kafka ACL機制1.概述 在Kafka0.9版本之前盗棵,Kafka集群時沒有安全機制的壮韭。Kafka Client應用可以通過連接Zookeeper地址,例如zk1...

1.概述

在Kafka0.9版本之前纹因,Kafka集群時沒有安全機制的喷屋。Kafka Client應用可以通過連接Zookeeper地址,例如zk1:2181:zk2:2181,zk3:2181等瞭恰。來獲取存儲在Zookeeper中的Kafka元數(shù)據(jù)信息屯曹。拿到Kafka Broker地址后,連接到Kafka集群惊畏,就可以操作集群上的所有主題了恶耽。由于沒有權(quán)限控制,集群核心的業(yè)務主題時存在風險的颜启。

2.內(nèi)容

2.2 身份認證

Kafka的認證范圍包含如下:

Client與Broker之間

Broker與Broker之間

Broker與Zookeeper之間

當前Kafka系統(tǒng)支持多種認證機制偷俭,如SSL、SASL(Kerberos缰盏、PLAIN涌萤、SCRAM)。

2.3?SSL認證流程

在Kafka系統(tǒng)中口猜,SSL協(xié)議作為認證機制默認是禁止的负溪,如果需要使用,可以手動啟動SSL機制济炎。安裝和配置SSL協(xié)議的步驟笙以,如下所示:

在每個Broker中Create一個Tmp密鑰庫

創(chuàng)建CA

給證書簽名

配置Server和Client

執(zhí)行腳本如下所示:

#!?/bin/bash

2#?1.Create?rsa

3keytool?-keystore?server.keystore.jks?-alias?dn1?-validity?365?-genkey?-keyalg?RSA

4#?2.Create?CA

5openssl?req?-new?-x509?-keyout?ca-key?-out?ca-cert?-days?365

6#?3.Import?client

7keytool?-keystore?client.truststore.jks?-alias?CAROOT?-import?-file?ca-cert

8#?4.Import?server

9keytool?-keystore?server.truststore.jks?-alias?CAROOT?-import?-file?ca-cert

10#?5.Export

11keytool?-keystore?server.keystore.jks?-alias?dn1?-certreq?-file?cert-file

12#?6.Signed

13openssl?x509?-req?-CA?ca-cert?-CAkey?ca-key?-in?cert-file?-out?cert-signed?-days?365?-CAcreateserial?-passin?pass:123456

14#?7.Import?ca-cert

15keytool?-keystore?server.keystore.jks?-alias?CARoot?-import?-file?ca-cert

16#?8.Import?cert-signed

17keytool?-keystore?server.keystore.jks?-alias?dn1?-import?-file?cert-signed

2.4 SASL認證流程

在Kafka系統(tǒng)中,SASL機制包含三種冻辩,它們分別是Kerberos、PLAIN拆祈、SCRAM恨闪。以PLAIN認證為示例,下面給大家介紹PLAIN認證流程放坏。

2.4.1?配置Server

首先咙咽,在$KAFKA_HOME/config目錄中新建一個文件,名為kafka_server_jaas.conf淤年,配置內(nèi)容如下:

1KafkaServer?{

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

3???username="smartloli"

4???password="smartloli-secret"

5???user_admin="smartloli-secret";

6};

7

8Client?{

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

10???username="smartloli"

11???password="smartloli-secret";

12};

然后在Kafka啟動腳本(kafka-server-start.sh)中添加配置文件路徑钧敞,設(shè)置內(nèi)容如下:

1[hadoop@dn1?bin]$?vi?kafka-server-start.sh

2

3#?Add?jaas?file

4export?KAFKA_OPTS="-Djava.security.auth.login.config=/data/soft/new/kafka/config/kafka_server_

接下來蜡豹,配置server.properties文件,內(nèi)容如下:

1#?Set?ip?&?port

2listeners=SASL_PLAINTEXT://dn1:9092

3advertised.listeners=SASL_PLAINTEXT://dn1:9092

4#?Set?protocol

5security.inter.broker.protocol=SASL_PLAINTEXT

6sasl.enabled.mechanisms=PLAIN

7sasl.mechanism.inter.broker.protocol=PLAIN

8

9#?Add?acl

10allow.everyone.if.no.acl.found=true

11auto.create.topics.enable=false

12delete.topic.enable=true

13advertised.host.name=dn1

14super.users=User:admin

15

16#?Add?class

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

2.4.2 配置Client

當Kafka Server端配置啟用了SASL/PLAIN溉苛,那么Client連接的時候需要配置認證信息镜廉,Client配置一個kafka_client_jaas.conf文件,內(nèi)容如下:

1KafkaClient?{

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

3??username="admin"

4??password="admin-secret";

5};

然后愚战,在producer.properties和consumer.properties文件中設(shè)置認證協(xié)議娇唯,內(nèi)容如下:

1security.protocol=SASL_PLAINTEXT?

2sasl.mechanism=PLAIN

最后,在kafka-console-producer.sh腳本和kafka-console-producer.sh腳本中添加JAAS文件的路徑寂玲,內(nèi)容如下:

1#?For?example:?kafka-console-producer.sh

2hadoop@dn1?bin]$?vi?kafka-console-producer.sh

3

4#?Add?jaas?file

5export?KAFKA_OPTS="-Djava.security.auth.login.config=/data/soft/new/kafka\

6/config/kafka_client_jaas.conf"

2.5 ACL操作

在配置好SASL后塔插,啟動Zookeeper集群和Kafka集群之后,就可以使用kafka-acls.sh腳本來操作ACL機制拓哟。

(1)查看:在kafka-acls.sh腳本中傳入list參數(shù)來查看ACL授權(quán)新

1[hadoop@dn1?bin]$?kafka-acls.sh?--list?--authorizer-properties?zookeeper.connect=dn1:2181

(2)創(chuàng)建:創(chuàng)建待授權(quán)主題之前想许,在kafka-acls.sh腳本中指定JAAS文件路徑,然后在執(zhí)行創(chuàng)建操作

1[hadoop@dn1?bin]$?kafka-topics.sh?--create?--zookeeper?dn1:2181?--replication-factor?1?--partitions?1?--topic?kafka_acl_topic

(3)生產(chǎn)者授權(quán):對生產(chǎn)者執(zhí)行授權(quán)操作

1[hadoop@dn1?~]$?kafka-acls.sh?--authorizer?kafka.security.auth.SimpleAclAuthorizer?--authorizer-properties?zookeeper.connect=dn1:2181?--add?--allow-principalUser:producer?--operation?Write?--topic?kafka_acl_topic

(4)消費者授權(quán):對生產(chǎn)者執(zhí)行授權(quán)后断序,通過消費者來進行驗證

1[hadoop@dn1?~]$?kafka-acls.sh?--authorizer?kafka.security.auth.SimpleAclAuthorizer?--authorizer-properties?zookeeper.connect=dn1:2181?--add?--allow-principalUser:consumer?--operation?Read?--topic?kafka_acl_topic

(5)刪除:通過remove參數(shù)來回收相關(guān)權(quán)限

1[hadoop@dn1?bin]$?kafka-acls.sh?--authorizer-properties?zookeeper.connect=dn1:2181?--remove?--allow-principal?User:producer?--operation?Write?--topic?kafka_acl_topic3

3.總結(jié)

在處理一些核心的業(yè)務數(shù)據(jù)時流纹,Kafka的ACL機制還是非常重要的,對核心業(yè)務主題進行權(quán)限管控逢倍,能夠避免不必要的風險捧颅。

歡迎工作一到五年的Java工程師朋友們加入Java架構(gòu)開發(fā): 854393687

群內(nèi)提供免費的Java架構(gòu)學習資料(里面有高可用、高并發(fā)较雕、高性能及分布式碉哑、Jvm性能調(diào)優(yōu)、Spring源碼亮蒋,MyBatis扣典,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構(gòu)資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰慎玖!趁年輕贮尖,使勁拼,給未來的自己一個交代趁怔!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末湿硝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子润努,更是在濱河造成了極大的恐慌关斜,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铺浇,死亡現(xiàn)場離奇詭異痢畜,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門丁稀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吼拥,“玉大人,你說我怎么就攤上這事线衫≡淇桑” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵桶雀,是天一觀的道長矿酵。 經(jīng)常有香客問我,道長矗积,這世上最難降的妖魔是什么全肮? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮棘捣,結(jié)果婚禮上辜腺,老公的妹妹穿的比我還像新娘。我一直安慰自己乍恐,他們只是感情好评疗,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茵烈,像睡著了一般百匆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呜投,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天加匈,我揣著相機與錄音,去河邊找鬼仑荐。 笑死雕拼,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的粘招。 我是一名探鬼主播啥寇,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼洒扎!你這毒婦竟也來了辑甜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤袍冷,失蹤者是張志新(化名)和其女友劉穎磷醋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體难裆,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了乃戈。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褂痰。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖症虑,靈堂內(nèi)的尸體忽然破棺而出缩歪,到底是詐尸還是另有隱情,我是刑警寧澤谍憔,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布匪蝙,位于F島的核電站,受9級特大地震影響习贫,放射性物質(zhì)發(fā)生泄漏逛球。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一苫昌、第九天 我趴在偏房一處隱蔽的房頂上張望颤绕。 院中可真熱鬧,春花似錦祟身、人聲如沸奥务。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽氯葬。三九已至,卻和暖如春婉陷,著一層夾襖步出監(jiān)牢的瞬間帚称,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工憨攒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留世杀,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓肝集,卻偏偏與公主長得像瞻坝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子杏瞻,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容