使用SASL登錄認(rèn)證Kafka服務(wù)
SASL(Simple Authentication and Security Layer)是一個(gè)框架,允許應(yīng)用程序?qū)舆x擇和實(shí)現(xiàn)各種認(rèn)證機(jī)制。使用SASL可以對(duì)用戶進(jìn)行身份驗(yàn)證,確保只有擁有合法憑證的客戶端能夠連接到Kafka服務(wù),從而顯著提升服務(wù)的安全性。本文為您介紹如何開啟SASL,并使用SASL連接Kafka。
前提條件
已在E-MapReduce控制臺(tái)創(chuàng)建選擇了Kafka服務(wù)的DataFlow集群(即Kafka集群),詳情請(qǐng)參見創(chuàng)建DataFlow Kafka集群。
配置SASL功能
E-MapReduce通過server.properties配置文件的kafka.sasl.config.type配置項(xiàng)來管理配置SASL的策略。
Kafka集群的SASL功能默認(rèn)關(guān)閉,您可以執(zhí)行以下步驟快速開啟SASL功能。本文以配置SASL/SCRAM-SHA-512認(rèn)證機(jī)制為例。
新增用戶。
使用SSH方式連接集群的Master節(jié)點(diǎn),詳情請(qǐng)參見登錄集群。
執(zhí)行以下命令,創(chuàng)建admin用戶。
kafka-configs.sh --bootstrap-server core-1-1:9092 --alter --add-config 'SCRAM-SHA-256=[password=admin-secret],SCRAM-SHA-512=[password=admin-secret]' --entity-type users --entity-name admin
說明本文示例中用戶
admin
的密碼為admin-secret
,您可以根據(jù)實(shí)際情況替換。
進(jìn)入服務(wù)的配置頁面。
在頂部菜單欄處,根據(jù)實(shí)際情況選擇地域和資源組。
單擊目標(biāo)集群操作列的集群服務(wù)。
在集群服務(wù)頁面,單擊Kafka服務(wù)區(qū)域的配置。
修改SASL認(rèn)證機(jī)制相關(guān)的配置。
設(shè)置SASL配置項(xiàng)。
在Kafka服務(wù)配置頁面的server.properties頁簽,添加配置項(xiàng)。
單擊新增配置項(xiàng)。
在新增配置項(xiàng)對(duì)話框中,添加以下配置,單擊確定。
參數(shù)
參數(shù)值
sasl.mechanism.inter.broker.protocol
SCRAM-SHA-512
sasl.enabled.mechanisms
SCRAM-SHA-512
在彈出的對(duì)話框中,輸入執(zhí)行原因,單擊保存。
修改listener配置。
在配置頁面,單擊server.properties頁簽。
修改配置項(xiàng)kafka.sasl.config.type的值為CUSTOM,單擊保存。
在彈出的對(duì)話框中,輸入執(zhí)行原因,單擊保存。
配置服務(wù)端JAAS。
方式一:通過自定義配置項(xiàng)配置服務(wù)端JAAS。
在Kafka服務(wù)配置頁面,單擊server.properties頁簽。
單擊新增配置項(xiàng),新增以下配置項(xiàng),單擊確定。
參數(shù)
參數(shù)值
listener.name.sasl_plaintext.sasl.enabled.mechanisms
SCRAM-SHA-512
listener.name.sasl_plaintext.scram-sha-512.sasl.jaas.config
org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret" ;
在彈出的對(duì)話框中,輸入執(zhí)行原因,單擊保存。
方式二:通過文本文件配置JAAS。
在Kafka服務(wù)配置頁面,修改以下配置項(xiàng),單擊保存。
頁簽
參數(shù)
參數(shù)值
kafka_server_jaas.conf
kafka.server.jaas.content
KafkaServer { org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret"; };
server.properties
kafka_opts
-Djava.security.auth.login.config=/etc/taihao-apps/kafka-conf/kafka-conf/kafka_server_jaas.conf
在彈出的對(duì)話框中,輸入執(zhí)行原因,單擊確認(rèn)。
配置客戶端JAAS。
通過kafka_client_jaas.conf配置文件的kafka.client.jaas.content配置項(xiàng),配置Kafka客戶端JAAS,該配置將會(huì)用于啟動(dòng)Kafka Schema Registry以及Kafka Rest Proxy組件。
在Kafka服務(wù)配置頁面,修改以下配置項(xiàng),單擊保存。
頁簽
參數(shù)
參數(shù)值
kafka_client_jaas.conf
kafka.client.jaas.content
KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret"; };
schema-registry.properties
schema_registry_opts
-Djava.security.auth.login.config=/etc/taihao-apps/kafka-conf/kafka-conf/kafka_client_jaas.conf
kafka-rest.properties
kafkarest_opts
-Djava.security.auth.login.config=/etc/taihao-apps/kafka-conf/kafka-conf/kafka_client_jaas.conf
在彈出的對(duì)話框中,輸入執(zhí)行原因,單擊保存。
重啟Kafka服務(wù)。
在Kafka服務(wù)的配置頁面,選擇
。在彈出的對(duì)話框中,輸入執(zhí)行原因,單擊確定。
在確認(rèn)對(duì)話框中,單擊確定。
使用SASL登錄Kafka集群
本文以SASL/SCRAM-SHA-512機(jī)制為例,使用Kafka自帶的Producer和Consumer執(zhí)行作業(yè),介紹客戶端如何認(rèn)證登錄Kafka服務(wù)。
使用SSH方式登錄到集群主節(jié)點(diǎn),詳情請(qǐng)參見登錄集群。
創(chuàng)建管理員配置文件。
執(zhí)行以下命令,創(chuàng)建配置文件sasl_admin.properties。
vim sasl_admin.properties
在配置文件中添加以下內(nèi)容。
security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-512 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret";
執(zhí)行以下命令,創(chuàng)建普通用戶。
kafka-configs.sh --bootstrap-server core-1-1:9092 --alter --add-config 'SCRAM-SHA-256=[password=<yourUserpassword>],SCRAM-SHA-512=[password=<yourUserpassword>]' --entity-type users --entity-name <yourUsername> --command-config /root/sasl_admin.properties
代碼中的
<yourUsername>
和<yourUserpassword>
為您新創(chuàng)建的用戶名和密碼,請(qǐng)根據(jù)實(shí)際情況替換。創(chuàng)建用戶配置文件。
執(zhí)行以下命令,創(chuàng)建配置文件sasl_user.properties。
vim sasl_user.properties
在配置文件中添加以下內(nèi)容。
security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-512 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="<yourUsername>" password="<yourUserpassword>";
執(zhí)行以下命令,創(chuàng)建Topic。
kafka-topics.sh --partitions 10 --replication-factor 2 --bootstrap-server core-1-1:9092 --topic test --create --command-config /root/sasl_user.properties
本文示例中的
test
為創(chuàng)建的Topic的名稱,請(qǐng)您根據(jù)實(shí)際情況替換。執(zhí)行以下命令,使用SASL配置文件產(chǎn)生數(shù)據(jù)。
kafka-producer-perf-test.sh --topic test --num-records 123456 --throughput 10000 --record-size 1024 --producer-props bootstrap.servers=core-1-1:9092 --producer.config sasl_user.properties
執(zhí)行以下命令,使用SASL配置文件消費(fèi)數(shù)據(jù)。
kafka-consumer-perf-test.sh --broker-list core-1-1:9092 --messages 100000000 --topic test --consumer.config sasl_user.properties
相關(guān)文檔
如需在客戶端和服務(wù)器之間建立加密的數(shù)據(jù)傳輸通道,詳情請(qǐng)參見使用SSL加密Kafka鏈接。