溫馨提示×

溫馨提示×

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

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

如何配置Kafka客戶端以使用LDAP進(jìn)行身份驗(yàn)證

發(fā)布時(shí)間:2021-11-22 10:10:57 來源:億速云 閱讀:308 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“如何配置Kafka客戶端以使用LDAP進(jìn)行身份驗(yàn)證”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

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

security.protocol=SASL_SSLssl.truststore.location=/opt/cloudera/security/jks/truststore.jks

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

LDAP驗(yàn)證

LDAP代表輕量級目錄訪問協(xié)議,并且是用于身份驗(yàn)證的行業(yè)標(biāo)準(zhǔn)應(yīng)用程序協(xié)議。它是CDP上Kafka支持的身份驗(yàn)證機(jī)制之一。

LDAP認(rèn)證也通過SASL框架完成,類似于Kerberos。SASL支持各種身份驗(yàn)證機(jī)制,例如我們在上一篇文章中介紹過的GSSAPI,以及將用于LDAP身份驗(yàn)證的PLAIN。

必須設(shè)置以下Kafka客戶端屬性,以配置Kafka客戶端通過LDAP進(jìn)行身份驗(yàn)證:

# Uses SASL/PLAIN over a TLS encrypted connectionsecurity.protocol=SASL_SSLsasl.mechanism=PLAIN# LDAP credentialssasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="alice" password="supersecret1";# TLS truststoressl.truststore.location=/opt/cloudera/security/jks/truststore.jks

上面的配置使用SASL / PLAIN進(jìn)行身份驗(yàn)證,并使用TLS(SSL)進(jìn)行數(shù)據(jù)加密。LDAP身份驗(yàn)證的選擇是在SASL / PLAIN的服務(wù)器端處理程序上配置的,我們將在本節(jié)后面介紹。 

LDAP和Kerberos

LDAP和Kerberos是不同的身份驗(yàn)證協(xié)議,各有其優(yōu)缺點(diǎn)。但是,在Kafka集群中使用這些協(xié)議并不是相互排斥的。同時(shí)為集群啟用Kerberos和LDAP身份驗(yàn)證是一種有效的配置。

身份目錄服務(wù)(例如Active Directory,RedHat IPA和FreeIPA)支持Kerberos和LDAP身份驗(yàn)證,并且為Kafka集群啟用了這兩種功能,從而為客戶端提供了處理身份驗(yàn)證的不同選擇。

LDAP可以消除與配置Kerberos客戶端有關(guān)的一些復(fù)雜性,例如要求在客戶端安裝Kerberos庫以及在更嚴(yán)格的環(huán)境中與Kerberos KDC的網(wǎng)絡(luò)連接。 

確保集群使用TLS / SSL加密

與Kerberos協(xié)議不同,當(dāng)使用LDAP進(jìn)行身份驗(yàn)證時(shí),用戶憑據(jù)(用戶名和密碼)通過網(wǎng)絡(luò)發(fā)送到Kafka集群。因此,當(dāng)為Kafka啟用LDAP身份驗(yàn)證時(shí),為Kafka客戶端之間的所有通信啟用并實(shí)施TLS加密非常重要。這將確保憑據(jù)始終通過網(wǎng)絡(luò)加密,并且不會受到損害。

必須將所有Kafka代理配置為對其SASL端點(diǎn)使用SASL_SSL安全協(xié)議。 

在Kafka Broker上啟用LDAP身份驗(yàn)證

安裝Kafka服務(wù)時(shí),默認(rèn)情況下未為Kafka代理啟用LDAP身份驗(yàn)證,但是在Cloudera數(shù)據(jù)平臺(CDP)上配置它非常容易:

  1. 在Cloudera Manager中,在Kafka服務(wù)配置中設(shè)置以下屬性以匹配您的環(huán)境:通過選擇LDAP作為上面的SASL / PLAIN身份驗(yàn)證選項(xiàng),Cloudera Manager會自動將Kafka Brokers配置為使用以下SASL / PLAIN回調(diào)處理程序,該實(shí)現(xiàn)LDAP驗(yàn)證:

org.apache.kafka.common.security.ldap.internals.LdapPlainServerCallbackHandler
  1. Kafka必須通過TLS連接(LDAPS)連接到LDAP服務(wù)器。為確保Kafka代理可以信任LDAP服務(wù)器證書,請將LDAP服務(wù)器的CA證書添加到Kafka服務(wù)使用的信任庫中。您可以在Cloudera Manager的以下屬性中找到信任庫的位置:

  2. 運(yùn)行以下命令(以root用戶身份)以將LDAP CA證書添加到信任庫中:

keytool \  -importcert \-keystore /opt/cloudera/security/jks/truststore.jks \-storetype JKS \  -alias ldap-ca \-file /path/to/ldap-ca-cert.pem
  1. 單擊Kafka>操作>重新啟動以重新啟動Kafka服務(wù)并使更改生效。 

局限性

Kafka服務(wù)器的LDAP回調(diào)處理程序使用Apache Shiro庫將用戶ID(簡短登錄名)映射到LDAP領(lǐng)域中的用戶實(shí)體。它通過提供一個(gè)“用戶DN模板”來做到這一點(diǎn),給定用戶短名稱,該模板可用于在LDAP中派生用戶專有名稱:

例如,如庫文檔中所述,“如果目錄使用LDAP uid屬性表示用戶名,則jsmith用戶的用戶DN可能如下所示:

uid=jsmith,ou=users,dc=mycompany,dc=com

在這種情況下,您可以使用以下模板值設(shè)置此屬性:

uid={0},ou=users,dc=mycompany,dc=com"

這將LDAP回調(diào)處理程序的使用限制為以用戶名是專有名稱的一部分的方式配置的LDAP目錄。對于RedHat IPA和FreeIPA實(shí)現(xiàn),通常是上面這樣。但是,在Active Directory中,默認(rèn)情況下,專有名稱的格式為:

CN=Smith, John, ou=users, dc=mycompany, dc=com

它們包含用戶的全名而不是用戶ID,這使得不可能通過簡單的模式從簡短的用戶名中獲取它。幸運(yùn)的是,對于Active Directory ,除專有名稱外,<用戶名> @ <域>也是有效的LDAP用戶名。如果使用的是Active Directory,則可以將LDAP用戶DN模板設(shè)置為以下模板(使用上面的mycompany.com示例):

{0}@mycompany.com

如果您的LDAP目錄不接受可以如上所述構(gòu)造的用戶名,請考慮使用Kerberos身份驗(yàn)證而不是LDAP。 

示例

以下是使用Kafka控制臺使用者使用LDAP身份驗(yàn)證從主題讀取的示例:

# Complete configuration file for LDAP auth$ cat ldap-client.propertiessecurity.protocol=SASL_SSLsasl.mechanism=PLAINsasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="alice" password="supersecret1";ssl.truststore.location=/opt/cloudera/security/jks/truststore.jks# Connect to Kafka using LDAP auth$ kafka-console-consumer \   --bootstrap-server host-1.example.com:9093 \   --topic test \    --consumer.config ./ldap-client.properties

注意:上面的配置文件包含敏感憑據(jù)。確保設(shè)置了文件許可權(quán),以便只有文件所有者才能讀取它。 

如果我沒有Kerberos或LDAP服務(wù)器怎么辦?

到目前為止,Kerberos和LDAP身份驗(yàn)證是行業(yè)標(biāo)準(zhǔn),是我們在整個(gè)客戶群中與Kafka一起使用的最常見的身份驗(yàn)證機(jī)制。但是,它們并不是唯一的。

Kerberos和LDAP要求Kafka集群與后端目錄服務(wù)集成,有時(shí)在某些環(huán)境中不可用。在這種情況下,仍然可以使用其他方法(例如相互TLS身份驗(yàn)證或帶有密碼文件后端的SASL / PLAIN)為Kafka集群設(shè)置身份驗(yàn)證。

“如何配置Kafka客戶端以使用LDAP進(jìn)行身份驗(yàn)證”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI