怎么配置客戶端以安全連接到Kafka集群

這篇文章主要介紹“怎么配置客戶端以安全連接到Kafka集群”,在日常操作中,相信很多人在怎么配置客戶端以安全連接到Kafka集群問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么配置客戶端以安全連接到Kafka集群”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出東平免費做網(wǎng)站回饋大家。

這是有關(guān)Apache Kafka安全性的簡短博客文章系列的第一部分。在本文中,我們將說明如何配置客戶端以使用不同的身份驗證機制對集群進行身份驗證。

可以將受保護的Apache Kafka集群配置為使用以下不同方法來強制執(zhí)行身份驗證:

  • SSL – TLS客戶端身份驗證

  • SASL / GSSAPI – Kerberos身份驗證

  • SASL / PLAIN – LDAP和基于文件的身份驗證

  • SASL / SCRAM-SHA-256和SASL / SCRAM-SHA-512

  • SASL /OAUTHBEARER

在本文中,我們將開始研究Kerberos身份驗證,并將重點介紹通過配置為使用Kerberos的集群進行身份驗證所需的客戶端配置。

我們將不在本文中介紹服務(wù)器端配置,但在需要使示例更清楚時將添加一些引用。

此處顯示的示例將以粗體突出顯示與身份驗證相關(guān)的屬性,以將其與其他必需的安全屬性區(qū)分開,如下例所示。假定已為Apache Kafka集群啟用了TLS,并且應(yīng)該為每個安全集群啟用TLS。

security.protocol=SASL_SSL
ssl.truststore.location=/opt/cloudera/security/jks/truststore.jks

我們在以下所有示例中使用kafka-console-consumer 。所有概念和配置也適用于其他應(yīng)用程序。 

Kerberos身份驗證

迄今為止,Kerberos是我們在該領(lǐng)域中用于保護Kafka集群安全的最常用選項。它使用戶能夠使用存儲在Active Directory,RedHat IPA和FreeIPA等服務(wù)中的公司身份,從而簡化了身份管理。Kerberos化的Kafka集群還使與大數(shù)據(jù)生態(tài)系統(tǒng)中的其他服務(wù)集成變得更加容易,該服務(wù)通常使用Kerberos進行強身份驗證。

Kafka通過簡單身份驗證和安全層(SASL)框架實現(xiàn)Kerberos身份驗證。SASL是身份驗證框架,是RFC 4422定義的標(biāo)準IETF協(xié)議。它支持多種不同的身份驗證機制,而實現(xiàn)Kerberos身份驗證的機制稱為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 connectionsecurity.protocol=SASL_SSLsasl.mechanism=GSSAPIsasl.kerberos.service.name=kafka# TLS truststoressl.truststore.location=/opt/cloudera/security/jks/truststore.jks

上面的配置使用Kerberos(SASL / GSSAPI)進行身份驗證。TLS(SSL)僅用于通過有線進行數(shù)據(jù)加密。 

JAAS配置

但是,以上屬性未向客戶端提供其通過Kafka集群進行身份驗證所需的憑據(jù)。我們需要更多信息。

使用Kerberos時,我們可以通過兩種方式將憑據(jù)提供給客戶端應(yīng)用程序。以有效的Kerberos票證的形式存儲在票證緩存中,或者作為keytab文件,應(yīng)用程序可以使用該文件來獲取Kerberos票證

Kafka客戶端中Kerberos憑證的處理由Java身份驗證和授權(quán)服務(wù)(JAAS)庫完成。因此,我們需要為客戶端配置必要的信息,以便JAAS知道從何處獲取憑證。

有兩種方法可以為Kafka客戶端設(shè)置這些屬性:

  • 創(chuàng)建一個JAAS配置文件,并將Java系統(tǒng)屬性java.security.auth.login.config指向它;要么

  • 內(nèi)聯(lián)JAAS配置,設(shè)置Kafka客戶端屬性sasl.jaas.config 。 

在本節(jié)中,我們顯示如何使用這兩種方法。為了簡單起見,本文中的示例將使用sasl.jaas.config方法。  

使用JAAS配置文件

如果您使用的是JAAS配置文件,則需要告訴Kafka Java客戶端在哪里找到它。這是通過在命令行中設(shè)置以下Java屬性來完成的:

... -Djava.security.auth.login.config=/path/to/jaas.conf...

如果您在Cloudera數(shù)據(jù)平臺(CDP)中使用Kafka命令行工具,則可以通過設(shè)置以下環(huán)境變量來實現(xiàn):

$ export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/jaas.conf"

配置文件的內(nèi)容取決于憑證的來源。要使用存儲在用戶票證緩存中的Kerberos票證,請使用以下jaas.conf文件:

KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true;};

要使用Keytab,請改用以下命令:

KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="/etc/security/keytabs/alice.keytab" principal="alice@EXAMPLE.COM";};
 

使用sasl.jaas.config屬性

我通常不喜歡使用單獨的JAAS配置文件,而更喜歡使用sasl.jaas.config Kafka屬性為客戶端設(shè)置JAAS配置。這通常更簡單,并且擺脫了其他配置文件(jaas.conf )。下面的配置與上面的jaas.conf配置相同。

注意:以下設(shè)置必須寫在一行中。該行末尾的分號是必需的。

要使用存儲在票證緩存中的Kerberos票證,請執(zhí)行以下操作:

sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true;

要使用keytab,請改用以下命令:

sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="/etc/security/keytabs/alice.keytab" principal="alice@EXAMPLE.COM";

示例

以下是使用Kafka控制臺使用者使用Kerberos身份驗證并直接連接到代理(不使用負載均衡器)從主題讀取的示例:

# Complete configuration file for Kerberos auth using the ticket cache$ cat krb-client.propertiessecurity.protocol=SASL_SSLsasl.mechanism=GSSAPIsasl.kerberos.service.name=kafkasasl.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 alicePassword 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的網(wǎng)絡(luò)連接

Kerberos的中心組件是Kerberos分發(fā)中心(KDC)。KDC是處理客戶端啟動的所有Kerberos身份驗證的服務(wù)。為了使Kerberos身份驗證正常工作,Kafka集群和客戶端都必須具有與KDC的連接。

在公司環(huán)境中,這很容易實現(xiàn),通常是這種情況。但是,在某些部署中,KDC可能會放置在防火墻后面,從而使客戶端無法通過它來獲取有效票證。

云和混合部署(云+本地部署)可能會給客戶端使用Kerberos身份驗證帶來挑戰(zhàn),因為本地KDC通常未集成到部署了云的服務(wù)中。但是,由于Kafka支持其他身份驗證機制,因此客戶可以使用其他替代方法,我們將在下一篇文章中進行探討。

到此,關(guān)于“怎么配置客戶端以安全連接到Kafka集群”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

本文標(biāo)題:怎么配置客戶端以安全連接到Kafka集群
網(wǎng)址分享:http://muchs.cn/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)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司