kafka使用SASL/PLAIN認證
小編:管理員 27閱讀 2022.07.25
SASL/PLAIN是一種簡單的用戶名/密碼的認證機制,通常與TLS加密一起使用,以實現安全的認證。Kafka支持SASL/PLAIN的默認實現,可作為生產者的擴展使用。
username用作ACL等配置已認證的Principal。
1. 配置Kafka Brokers-
在每個Kafka broker的config目錄下添加一個類似于下面的修改后的JAAS文件,我們姑且將其稱為kafka_server_jaas.conf。
KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret" user_admin="admin-secret" user_alice="alice-secret"; };
此配置定義了2個用戶(admin 和 alice)。 在KafkaServer中,username和password是broker用于初始化連接到其他的broker,在這個例子中,admin是broker之間通信的用戶。user_userName定義了連接到broker的所有用戶的密碼,broker使用這些來驗證所有客戶端的連接,包括來自其他的broker的連接。
-
將JAAS配置文件位置作為JVM參數傳遞給每個Kafka broker:
-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf
-
在server.properties中配置SASL端口和SASL機制。 例如:
listeners=SASL_SSL://host.name:port security.inter.broker.protocol=SASL_SSL sasl.mechanism.inter.broker.protocol=PLAIN sasl.enabled.mechanisms=PLAIN
在客戶端上配置SASL身份驗證:
-
為producer.properties或consumer.properties中的每個客戶端配置JAAS。登錄模塊展示了客戶端如何連接Broker的(和生產者和消費者一樣)。以下是PLAIN機制的客戶端的示例配置:
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="alice" password="alice-secret";
客戶端選擇用戶名和密碼為客戶端配置連接的用戶。 在此示例中,客戶端以用戶alice連接到broker。也可以通過在sasl.jaas.config中指定不同的用戶名和密碼,JVM中的不同客戶端可以根據不同的用戶來進行連接。
客戶端的JAAS配置可以指定為類似于這里描述的broker作為JVM參數?蛻舳耸褂玫拿麨镵afkaClient。 此選項僅允許來自JVM的所有客戶端連接中的一個用戶。
-
在producer.properties或consumer.properties中配置以下屬性:
security.protocol=SASL_SSL sasl.mechanism=PLAIN
-
SASL/PLAIN應僅用SSL作為傳輸層,以確保在沒有加密的情況下不會在線上明文傳輸。
-
Kafka中SASL / PLAIN的默認實現在JAAS配置文件中指定用戶名和密碼,如下所示。 從Kafka 2.0版開始,您可以通過使用配置sasl.server.callback.handler.class和sasl.client.callback.handler.class配置自己的回調處理程序來從外部源獲取用戶名和密碼,從而避免在磁盤上存儲明文密碼。
-
在生產系統中,外部認證服務器可以實現密碼認證。從Kafka 2.0版開始,可以通過配置sasl.server.callback.handler.class使用外部身份驗證服務器進行密碼驗證的自己的回調處理程序。
kafka實戰SASL/PLAIN認證
kafka實戰SASL/SSL認證
相關推薦
- kafka消費者Java客戶端 一個從kafka集群中獲取消息的java客戶端。kafka客戶端從kafka集群中獲取消息,并透明地處理kafka集群中出現故障broker,透明地調節適應集群中變化的數據分區。也和broker交互,負載平衡消費者。public class KafkaConsumerK,V extends Object implements Consu…
- Apache RocketMQ 社區創建和協同創新 去年,我曾經撰寫了一篇關于 非英語系國家的社區是如何理解并使用 Apache way 進行開放式創新 的博客。在那篇文章里,我表達了作為一名開發者的期待,即能夠熟練地使用郵件列表功能,認真傾聽社區的聲音,再做出決策。此外,開源社區也可以多開展類似“ GSoC ”…