全部產品
Search
文件中心

E-MapReduce:使用SASL登入認證Kafka服務

更新時間:Mar 13, 2025

SASL(Simple Authentication and Security Layer)是一個架構,允許應用程式層選擇和實現各種認證機制。使用SASL可以對使用者進行身分識別驗證,確保只有擁有合法憑證的用戶端能夠串連到Kafka服務,從而顯著提升服務的安全性。本文為您介紹如何開啟SASL,並使用SASL串連Kafka。

前提條件

已在E-MapReduce控制台建立選擇了Kafka服務的DataFlow叢集(即Kafka叢集),詳情請參見建立DataFlow Kafka叢集

操作步驟

步驟一:配置SASL功能

E-MapReduce通過server.properties設定檔的kafka.sasl.config.type配置項來管理配置SASL的策略。

Kafka叢集的SASL功能預設關閉,您可以執行以下步驟快速開啟SASL功能。本文以配置SASL/SCRAM-SHA-512認證機製為例。

  1. 新增使用者。

    1. 使用SSH方式串連叢集的Master節點,詳情請參見登入叢集

    2. 執行以下命令,建立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,您可以根據實際情況替換。

  2. 進入服務的配置頁面。

    1. 登入E-MapReduce控制台

    2. 在頂部功能表列處,根據實際情況選擇地區和資源群組

    3. 單擊目的地組群操作列的叢集服務

    4. 叢集服務頁面,單擊Kafka服務地區的配置

  3. 修改SASL認證機制相關的配置。

    1. 設定SASL配置項。

      在Kafka服務配置頁面的server.properties頁簽,添加配置項。

      1. 單擊新增配置項

      2. 新增配置項對話方塊中,添加以下配置,單擊確定

        參數

        參數值

        sasl.mechanism.inter.broker.protocol

        SCRAM-SHA-512

        sasl.enabled.mechanisms

        SCRAM-SHA-512

      3. 在彈出的對話方塊中,輸入執行原因,單擊保存

    2. 修改listener配置。

      1. 配置頁面,單擊server.properties頁簽。

      2. 修改配置項kafka.sasl.config.type的值為CUSTOM,單擊儲存

      3. 在彈出的對話方塊中,輸入執行原因,單擊儲存

    3. 佈建服務端JAAS。

      • 方式一:通過自訂配置項佈建服務端JAAS。

        1. 在Kafka服務配置頁面,單擊server.properties頁簽。

        2. 單擊新增配置項,新增以下配置項,單擊確定

          參數

          參數值

          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" ;

        3. 在彈出的對話方塊中,輸入執行原因,單擊儲存。

      • 方式二:通過文字檔配置JAAS。

        1. 在Kafka服務配置頁面,修改以下配置項,單擊儲存

          頁簽

          參數

          參數值

          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

        2. 在彈出的對話方塊中,輸入執行原因,單擊確認

    4. 配置用戶端JAAS。

      通過kafka_client_jaas.conf設定檔的kafka.client.jaas.content配置項,配置Kafka用戶端JAAS,該配置將會用於啟動Kafka Schema Registry以及Kafka Rest Proxy組件。

      1. 在Kafka服務配置頁面,修改以下配置項,單擊儲存

        頁簽

        參數

        參數值

        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

      2. 在彈出的對話方塊中,輸入執行原因,單擊儲存。

  4. 重啟Kafka服務。

    1. 在Kafka服務的配置頁面,選擇更多操作 > 重啟

    2. 在彈出的對話方塊中,輸入執行原因,單擊確定

    3. 確認對話方塊中,單擊確定

步驟二:使用SASL登入Kafka叢集

本文以SASL/SCRAM-SHA-512機製為例,使用Kafka內建的Producer和Consumer執行作業,介紹用戶端如何認證登入Kafka服務。

  1. 使用SSH方式登入到叢集主節點,詳情請參見登入叢集

  2. 建立管理員設定檔。

    1. 執行以下命令,建立設定檔sasl_admin.properties。

      vim sasl_admin.properties
    2. 在設定檔中添加以下內容。

      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";
  3. 執行以下命令,建立普通使用者。

    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>為您新建立的使用者名稱和密碼,請根據實際情況替換。

  4. 建立使用者設定檔。

    1. 執行以下命令,建立設定檔sasl_user.properties。

      vim sasl_user.properties
    2. 在設定檔中添加以下內容。

      security.protocol=SASL_PLAINTEXT
      sasl.mechanism=SCRAM-SHA-512
      sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="<yourUsername>" password="<yourUserpassword>";
  5. 執行以下命令,建立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為建立的Topic的名稱,請您根據實際情況替換。

  6. 執行以下命令,使用SASL設定檔產生資料。

    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
  7. 執行以下命令,使用SASL設定檔消費資料。

    kafka-consumer-perf-test.sh --broker-list core-1-1:9092 --messages 100000000 --topic test --consumer.config sasl_user.properties

相關文檔

如需在用戶端和伺服器之間建立加密的資料轉送通道,詳情請參見使用SSL加密Kafka連結