中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-11-22 10:07:39 來源:億速云 閱讀:426 作者:iii 欄目:大數據

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

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

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

  • SSL – TLS客戶端身份驗證

  • SASL / GSSAPI – Kerberos身份驗證

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

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

  • SASL /OAUTHBEARER

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

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

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

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

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

Kerberos身份驗證

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

Kafka通過簡單身份驗證和安全層(SASL)框架實現Kerberos身份驗證。SASL是身份驗證框架,是RFC 4422定義的標準IETF協議。它支持多種不同的身份驗證機制,而實現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)僅用于通過有線進行數據加密。 

JAAS配置

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

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

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

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

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

  • 內聯JAAS配置,設置Kafka客戶端屬性sasl.jaas.config 。 

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

使用JAAS配置文件

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

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

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

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

配置文件的內容取決于憑證的來源。要使用存儲在用戶票證緩存中的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屬性為客戶端設置JAAS配置。這通常更簡單,并且擺脫了其他配置文件(jaas.conf )。下面的配置與上面的jaas.conf配置相同。

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

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

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的網絡連接

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

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

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

到此,關于“怎么配置客戶端以安全連接到Kafka集群”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

体育| 龙游县| 松阳县| 巴南区| 郓城县| 平度市| 舟山市| 宁武县| 怀安县| 报价| 沧州市| 石林| 南康市| 聂拉木县| 来安县| 米林县| 鄂托克旗| 吴堡县| 抚顺县| 罗平县| 贵港市| 福贡县| 台南市| 阳曲县| 长宁区| 葫芦岛市| 明光市| 宜春市| 宁德市| 罗山县| 万年县| 永泰县| 枣强县| 沙湾县| 澄江县| 武平县| 大荔县| 仁化县| 汾西县| 长岭县| 明水县|