這篇文章主要介紹“怎么配置客戶端以安全連接到Kafka集群”,在日常操作中,相信很多人在怎么配置客戶端以安全連接到Kafka集群問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”怎么配置客戶端以安全連接到Kafka集群”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出東平免費(fèi)做網(wǎng)站回饋大家。
這是有關(guān)Apache Kafka安全性的簡短博客文章系列的第一部分。在本文中,我們將說明如何配置客戶端以使用不同的身份驗(yàn)證機(jī)制對(duì)集群進(jìn)行身份驗(yàn)證。
可以將受保護(hù)的Apache Kafka集群配置為使用以下不同方法來強(qiáng)制執(zhí)行身份驗(yàn)證:
SSL – TLS客戶端身份驗(yàn)證
SASL / GSSAPI – Kerberos身份驗(yàn)證
SASL / PLAIN – LDAP和基于文件的身份驗(yàn)證
SASL / SCRAM-SHA-256和SASL / SCRAM-SHA-512
SASL /OAUTHBEARER
在本文中,我們將開始研究Kerberos身份驗(yàn)證,并將重點(diǎn)介紹通過配置為使用Kerberos的集群進(jìn)行身份驗(yàn)證所需的客戶端配置。
我們將不在本文中介紹服務(wù)器端配置,但在需要使示例更清楚時(shí)將添加一些引用。
此處顯示的示例將以粗體突出顯示與身份驗(yàn)證相關(guān)的屬性,以將其與其他必需的安全屬性區(qū)分開,如下例所示。假定已為Apache Kafka集群啟用了TLS,并且應(yīng)該為每個(gè)安全集群啟用TLS。
security.protocol=SASL_SSL
ssl.truststore.location=/opt/cloudera/security/jks/truststore.jks
我們?cè)谝韵滤惺纠惺褂胟afka-console-consumer 。所有概念和配置也適用于其他應(yīng)用程序。
迄今為止,Kerberos是我們?cè)谠擃I(lǐng)域中用于保護(hù)Kafka集群安全的最常用選項(xiàng)。它使用戶能夠使用存儲(chǔ)在Active Directory,RedHat IPA和FreeIPA等服務(wù)中的公司身份,從而簡化了身份管理。Kerberos化的Kafka集群還使與大數(shù)據(jù)生態(tài)系統(tǒng)中的其他服務(wù)集成變得更加容易,該服務(wù)通常使用Kerberos進(jìn)行強(qiáng)身份驗(yàn)證。
Kafka通過簡單身份驗(yàn)證和安全層(SASL)框架實(shí)現(xiàn)Kerberos身份驗(yàn)證。SASL是身份驗(yàn)證框架,是RFC 4422定義的標(biāo)準(zhǔn)IETF協(xié)議。它支持多種不同的身份驗(yàn)證機(jī)制,而實(shí)現(xiàn)Kerberos身份驗(yàn)證的機(jī)制稱為GSSAPI。
The basic Kafka client properties that must be set to configure the Kafka client to authenticate via Kerberos are shown below:
# Uses SASL/GSSAPI over a TLS encrypted connection
security.protocol=SASL_SSL
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka
# TLS truststore
ssl.truststore.location=/opt/cloudera/security/jks/truststore.jks
上面的配置使用Kerberos(SASL / GSSAPI)進(jìn)行身份驗(yàn)證。TLS(SSL)僅用于通過有線進(jìn)行數(shù)據(jù)加密。
但是,以上屬性未向客戶端提供其通過Kafka集群進(jìn)行身份驗(yàn)證所需的憑據(jù)。我們需要更多信息。
使用Kerberos時(shí),我們可以通過兩種方式將憑據(jù)提供給客戶端應(yīng)用程序。以有效的Kerberos票證的形式存儲(chǔ)在票證緩存中,或者作為keytab文件,應(yīng)用程序可以使用該文件來獲取Kerberos票證
Kafka客戶端中Kerberos憑證的處理由Java身份驗(yàn)證和授權(quán)服務(wù)(JAAS)庫完成。因此,我們需要為客戶端配置必要的信息,以便JAAS知道從何處獲取憑證。
有兩種方法可以為Kafka客戶端設(shè)置這些屬性:
創(chuàng)建一個(gè)JAAS配置文件,并將Java系統(tǒng)屬性java.security.auth.login.config指向它;要么
內(nèi)聯(lián)JAAS配置,設(shè)置Kafka客戶端屬性sasl.jaas.config 。
在本節(jié)中,我們顯示如何使用這兩種方法。為了簡單起見,本文中的示例將使用sasl.jaas.config方法。
如果您使用的是JAAS配置文件,則需要告訴Kafka Java客戶端在哪里找到它。這是通過在命令行中設(shè)置以下Java屬性來完成的:
... -Djava.security.auth.login.config=/path/to/jaas.conf...
如果您在Cloudera數(shù)據(jù)平臺(tái)(CDP)中使用Kafka命令行工具,則可以通過設(shè)置以下環(huán)境變量來實(shí)現(xiàn):
$ export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/jaas.conf"
配置文件的內(nèi)容取決于憑證的來源。要使用存儲(chǔ)在用戶票證緩存中的Kerberos票證,請(qǐng)使用以下jaas.conf文件:
KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true;};
要使用Keytab,請(qǐng)改用以下命令:
KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="/etc/security/keytabs/alice.keytab" principal="alice@EXAMPLE.COM";};
我通常不喜歡使用單獨(dú)的JAAS配置文件,而更喜歡使用sasl.jaas.config Kafka屬性為客戶端設(shè)置JAAS配置。這通常更簡單,并且擺脫了其他配置文件(jaas.conf )。下面的配置與上面的jaas.conf配置相同。
注意:以下設(shè)置必須寫在一行中。該行末尾的分號(hào)是必需的。
要使用存儲(chǔ)在票證緩存中的Kerberos票證,請(qǐng)執(zhí)行以下操作:
sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true;
要使用keytab,請(qǐng)改用以下命令:
sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="/etc/security/keytabs/alice.keytab" principal="alice@EXAMPLE.COM";
以下是使用Kafka控制臺(tái)使用者使用Kerberos身份驗(yàn)證并直接連接到代理(不使用負(fù)載均衡器)從主題讀取的示例:
# Complete configuration file for Kerberos auth using the ticket cache
$ cat krb-client.properties
security.protocol=SASL_SSL
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka
sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true;
ssl.truststore.location=/opt/cloudera/security/jks/truststore.jks
# Authenticate with Kerberos to get a valid ticket
$ kinit alice
Password for alice@REALM:
# Connect to Kafka using the ticket in the ticket cache
$ kafka-console-consumer \
--bootstrap-server host-1.example.com:9093 \
--topic test \
--consumer.config /path/to/krb-client.properties
Kerberos的中心組件是Kerberos分發(fā)中心(KDC)。KDC是處理客戶端啟動(dòng)的所有Kerberos身份驗(yàn)證的服務(wù)。為了使Kerberos身份驗(yàn)證正常工作,Kafka集群和客戶端都必須具有與KDC的連接。
在公司環(huán)境中,這很容易實(shí)現(xiàn),通常是這種情況。但是,在某些部署中,KDC可能會(huì)放置在防火墻后面,從而使客戶端無法通過它來獲取有效票證。
云和混合部署(云+本地部署)可能會(huì)給客戶端使用Kerberos身份驗(yàn)證帶來挑戰(zhàn),因?yàn)楸镜豄DC通常未集成到部署了云的服務(wù)中。但是,由于Kafka支持其他身份驗(yàn)證機(jī)制,因此客戶可以使用其他替代方法,我們將在下一篇文章中進(jìn)行探討。
到此,關(guān)于“怎么配置客戶端以安全連接到Kafka集群”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
本文標(biāo)題:怎么配置客戶端以安全連接到Kafka集群
網(wǎng)址分享:http://m.newbst.com/article8/ispcip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站導(dǎo)航、網(wǎng)站排名、品牌網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)