全部產品
Search
文件中心

E-MapReduce:開啟Kerberos身份認證

更新時間:Nov 28, 2025

在Serverless Spark的工作空間中,您可以配置並啟用Kerberos身份認證。啟用後,在該工作空間中提交Spark任務時,用戶端需要進行Kerberos認證,以提升任務執行的安全性。

前提條件

  • 已建立Principal和匯出keytab檔案,且將其上傳至阿里雲OSS。

    如果您使用的是EMR on ECS叢集,詳情請參見Kerberos基礎使用

  • 已建立Serverless Spark工作空間,詳情請參見管理工作空間

使用限制

  • 當前工作空間只能綁定一個Kerberos叢集。

  • 目前僅支援在Spark批任務中啟用Kerberos身份認證功能。

操作流程

步驟一:網路準備

在配置Kerberos身份認證之前,必須先設定好網路,確保Serverless Spark與您的虛擬私人雲端(VPC)之間網路互連。具體操作,請參見EMR Serverless Spark與其他VPC間網路互連

說明

在添加安全性群組規則時,建議開放Kerberos服務使用的UDP協議連接埠(通常為88)。

步驟二:配置Kerberos身份認證

  1. 進入Kerberos身份認證頁面。

    1. 登入E-MapReduce控制台

    2. 在左側導覽列,選擇EMR Serverless > Spark

    3. Spark頁面,單擊目標工作空間名稱。

    4. EMR Serverless Spark頁面,單擊左側導覽列中的資訊安全中心 > Kerberos 身份認證

  2. 單擊綁定 Kerberos

  3. 綁定 Kerberos頁面,配置以下資訊,單擊確定

    參數

    說明

    Kerberos 名稱

    您可以自訂。

    網路連接

    選擇您已建立的網路連接。

    Kerberos krb5.conf

    1. 填寫正確的krb5.conf檔案的內容。

      krb5.conf檔案通常位於伺服器的/etc/krb5.conf 路徑。根據您的環境,可以通過以下方式擷取檔案內容:

      • 如果您使用的是EMR Datalake叢集的Kerberos服務,可以通過以下步驟擷取內容。

        1. 先登入到EMR叢集的Master節點,詳情請參見登入叢集

        2. 執行以下命令,查看並手動複製/etc/krb5.conf 中的內容。

          cat /etc/krb5.conf
        3. 將內容拷貝到Kerberos krb5.conf中。

      • 對於其他EMR叢集或自建的Kerberos服務,請將檔案中的 hostname 替換為VPC內網IP地址。

    2. (可選)根據網路通訊協定類型確定是否要在krb5.conf檔案中添加額外的配置。

      • 如果在步驟一:網路準備時,配置網路連接時開放了88連接埠的UDP協議,則無需添加額外的配置。

      • 如果在步驟一:網路準備時,配置網路連接用的是TCP協議,則需要在[libdefaults]下添加udp_preference_limit = 1配置。

        image

  4. 單擊操作列的啟用認證

  5. 在彈出的對話方塊中,單擊確定

步驟三:提交Spark批任務

啟用Kerberos身份認證後,提交Spark批任務時需要進行用戶端驗證。如果您在工作空間啟用Kerberos身份認證後,直接提交Spark批任務而沒有進行額外配置,將會出現錯誤提示spark.kerberos.keytab and spark.kerberos.principal not configured

  1. 建立Spark批任務,具體操作請參見PySpark開發快速入門

  2. 在建立的開發頁簽中,需要額外配置以下資訊,然後單擊運行

    image

    參數

    說明

    網路連接

    選擇您在步驟一中新增的網路連接的名稱。

    Spark配置

    需要配置以下參數資訊。

    spark.files oss://<bucketname>/path/test.keytab
    spark.kerberos.keytab test.keytab
    spark.kerberos.principal <username>@<REALM>

    其中,涉及參數說明如下:

    • spark.files:上傳至OSS的keytab檔案的完整路徑。

    • spark.kerberos.keytab:keytab檔案名稱。

    • spark.kerberos.principal:keytab檔案中包含的Principal的名稱,用於與Kerberos服務進行身分識別驗證。您可以使用klist -kt <keytab檔案>命令查看目標keytab檔案中Principal的名稱。

    如果您需要串連開啟Kerberos的Hive Metastore來擷取中繼資料資訊,需要在Spark配置中增加以下資訊。

    spark.hive.metastore.sasl.enabled true
    spark.hive.metastore.kerberos.principal hive/<hostname>@<REALM>

    spark.hive.metastore.kerberos.principal 參數需要填寫 Hive Metastore 使用的 keytab 檔案中儲存的 Principal 的實際內容。您可以通過klist -kt <Hive Metastore 使用的 keytab 檔案路徑> 命令擷取參數值。Hive Metastore 使用的 keytab 檔案路徑,可以在EMR on ECS控制台Hive服務配置頁面的hive-site.xml中,通過查看hive.metastore.kerberos.keytab.file參數擷取。

    spark.hive.metastore.kerberos.principal參數值的格式如下:

    • 通常格式為 hive/<hostname>@<REALM>,其中 <hostname> 為 Hive Metastore 所在節點的完整網域名稱,您可以通過hostname -f命令擷取;<REALM> 為 KDC 的 Realm。

    • 如果 Hive Metastore 的串連地址使用了主機名稱,您可以將格式簡化為 hive/_HOST@<REALM>。在串連時,Spark 會自動將 _HOST 替換為 Hive Metastore 串連地址中的主機名稱。如果需要配置多個Hive Metastore,則只能採取_HOST的方式。

  3. 運行任務後,在下方的運行記錄地區,單擊任務操作列的詳情

  4. 任務歷史中的Application頁面,您可以查看相關的日誌資訊。

    image

步驟四(可選):串連開啟了 Kerberos 認證的 Hive Metastore

如果工作空間資料目錄,需要串連開啟Kerberos的Hive Metastore來擷取中繼資料資訊,需要在添加 外部Hive Metastore時,指定keytab檔案地址,以及Principal名稱。

image

  • Kerberos keytab檔案地址:Kerberos keytab檔案路徑。

  • Kerberos principal:keytab檔案中包含的Principal的名稱,用於與Kerberos服務進行身分識別驗證。您可以使用klist -kt <keytab檔案>命令查看目標keytab檔案中Principal的名稱。