全部產品
Search
文件中心

E-MapReduce:Kyuubi Gateway使用Kerberos

更新時間:Dec 03, 2025

在Serverless Spark的Kyuubi Gateway中,通過Kerberos您可以實現安全的身分識別驗證和存取控制。完成配置後,向該工作空間的Kyuubi Gateway提交任務時,用戶端需進行Kerberos認證,從而增強任務執行的安全性。

使用限制

  • 叢集和Serverless Spark工作空間在同一個地區。

  • 開啟Kerberos的工作空間下僅支援建立1個Kyuubi Gateway。

前提條件

  • 已建立開啟Kerberos身份認證的EMR on ECS叢集,詳情請參見建立叢集

  • 已建立開啟Kerberos身份認證的Serverless Spark工作空間,詳情請參見開啟Kerberos身份認證

打通網路

Kyuubi Gateway使用Kerberos,需要配置私網串連(PrivateLink),打通Serverless Spark和Kerberos叢集之間的網路。該網路設定目前不支援使用者自行設定,您需提供相關資訊並提交工單,由支援人員團隊協助處理。

建立終端節點

終端節點(Endpoint)由服務使用方建立和維護,可以與終端節點服務相關聯,從而建立通過PrivateLink私網訪問外部服務的網路連接。詳情請參見終端節點

  1. 登入終端節點控制台

  2. 建立終端節點頁面,根據以下資訊配置終端節點,然後單擊確定建立image

    配置

    說明

    所屬地區

    選擇終端節點所屬地區。確保與Kerberos叢集、Serverless Spark工作空間所在地區保持一致。

    節點名稱

    輸入自訂終端節點的名稱。

    終端節點類型

    選擇介面終端節點

    終端節點服務

    單擊選擇可用服務,然後選擇或輸入目標終端節點服務ID。

    說明

    請將以下資訊提交至工單系統,擷取終端節點服務ID。

    • Serverless Spark工作空間ID,如w-f8cfXXXXXX

    • 訪問Kyuubi Gateway的Kerberos叢集的VPC ID,該VPC需要在兩個可用性區域具備可用的交換器,如vpc-bp1tXXXXXX

    • 提供選擇的2個可用性區域,如I,J。地區支援的可用性區域範圍,請諮詢工單中的客服擷取。

    專用網路

    選擇訪問Kyuubi Gateway的Kerberos叢集VPC。

    安全性群組

    選擇要與終端節點網卡關聯的安全性群組。

    說明

    一個終端節點預設最多支援添加9個安全性群組。

    可用性區域與交換器

    選擇前述可用性區域及其對應的交換器。

    IP版本

    支援的網路類型。

    • IPv4:支援用戶端使用IPv4地址訪問。

    • 雙棧:支援用戶端同時使用IPv4和IPv6地址訪問。

    說明

    當服務提供者完成雙棧配置後,服務使用方在建立終端節點時方可進行選擇。

    資源群組

    選擇終端節點所屬的資源群組。

    標籤

    選擇或輸入標籤鍵標籤值

  3. 基本資料頁面,狀態是可用,即表明建立成功,終端節點服務網域名稱為ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com

  4. 登入Kerberos叢集,測試網路連接。image

佈建網域名解析(可選)

預設終端節點服務網域名稱比較長,為方便使用,您可以配置自訂內網權威網域名稱。詳情請參見內網權網域名稱

  1. 登入。在 內網權威 的使用者網域名稱頁簽下,點擊添加網域名稱(Zone) 

  2. 輸入內網權威網域名稱,選擇網域名稱生效範圍VPC,然後點擊確定。本文樣本是kyuubi-kerberos.abc

    說明

    如果有網域名稱類型選項,請選擇內網權威加速區。如果沒有網域名稱類型選項,則無需選擇,預設建立的是內網權威加速區網域名稱。

  3. 使用者網域名稱頁簽,點擊目標網域名稱操作列的解析設定按鈕,點擊添加記錄,對話方塊內選擇表單填寫入模式

  4. 記錄類型選擇CNAME主機記錄按照選擇填寫(本文樣本是test),記錄值填寫終端節點服務網域名稱ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com。單機確定後,即將終端節點服務網域名稱映射到test.kyuubi-kerberos.abc

  5. 登入Kerberos叢集,測試網路連接。

    ping test.kyuubi-kerberos.abc

建立keytab

  1. 登入Kerberos叢集

  2. 執行以下命令,進入Kerberos的admin.local工具。

    kadmin.local
  3. 建立principal,principal的格式為kyuubi/<fqdn>@<REALM>,principal的fqdn部分建議使用終端節點網域名稱ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com,若配置了CNAME解析自訂網域名,則使用自訂網域名test.kyuubi-kerberos.abc

    addprinc -randkey kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD4*****C204.COM
  4. 匯出keytab檔案,並退出Kerberos的admin.local工具。

    xst -kt /root/kyuubi.keytab kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD4*****C204.COM
    quit
  5. 將產生的keytab檔案上傳到OSS Bucket中。

    hadoop fs -put /root/kyuubi.keytab oss://<YOUR_BUCKET>.<region>.oss-dls.aliyuncs.com/

配置Kyuubi Gateway

Kyuubi Gateway在使用Kerberos時,還需進行以下Kyuubi 配置

kyuubi.authentication              KERBEROS
kyuubi.kinit.principal             kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD43******7C204.COM
kyuubi.kinit.keytab                /opt/kyuubi/work-dir/kyuubi.keytab
kyuubi.files                       oss://bucket/path/to/kyuubi.keytab

配置項

說明

kyuubi.authentication

指定Kyuubi Gateway使用的認證方式。設定為 KERBEROS 。

kyuubi.kinit.principal

指定Kyuubi Gateway用於Kerberos認證的主體(Principal),格式為 <user>/<host>@<realm>

kyuubi.kinit.keytab

指定Kyuubi Gateway使用keytab檔案。註:路徑固定,僅需替換keytab檔案名稱。

kyuubi.files

建立keytab步驟中上傳keytab的OSS路徑。

如果需要串連開啟Kerberos的HMS,Spark 配置如下。

spark.hadoop.hive.metastore.uris                    thrift://master-1-1.c-1d36*****e840c.cn-hangzhou.emr.aliyuncs.com:9083
spark.hadoop.hive.imetastoreclient.factory.class    org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory
spark.hive.metastore.kerberos.principal             hive/_HOST@EMR.C-DFD4*****C204.COM
spark.hive.metastore.sasl.enabled                   true
spark.emr.serverless.network.service.name           <network_name>

配置項

說明

spark.hadoop.hive.metastore.uris

Hive Metastore(HMS)地址。

spark.hadoop.hive.imetastoreclient.factory.class

指定建立HMS Client的工廠類。

spark.hive.metastore.kerberos.principal

Kerberos環境下HMS對應的認證主體(principal)。

spark.hive.metastore.sasl.enabled

是否開啟Kerberos認證。

spark.emr.serverless.network.service.name

網路連接的串連名稱。

說明
  • 在HA叢集環境中,metastore.uris可以配置多個thrift地址,地址之間用逗號分隔,且必須使用hostname,不能使用IP地址。

  • 若metastore.uris僅填寫一個thrift地址,可以使用IP地址,但metastore.kerberos.principal必須採用hive/<hostname of HMS>@<REALM>的格式。

  • 僅當metastore.uris使用主機名稱時,metastore.kerberos.principal才能簡化為hive/_HOST@<REALM>的格式。

儲存以上配置後即可啟動Kyuubi Gateway。

提交作業

通過一個show databases,驗證Kerberos叢集串連Kyuubi Gateway啟動執行Spark作業是否成功。

  1. 準備一個有許可權的Kerberos使用者,並匯出keytab檔案。

    1. 登入Kerberos叢集

    2. 執行以下命令匯出keytab檔案。

      kadmin.local
      addprinc -randkey hadoop
      xst -kt /root/hadoop.keytab hadoop
      quit
  2. 使用keytab檔案進行Kerberos認證。

    kinit -kt hadoop.keytab hadoop
  3. 使用如下命令串連Kyuubi Gateway啟動執行Spark作業。

    /opt/apps/KYUUBI/kyuubi-1.9.2-1.0.0/bin/kyuubi-beeline -u 'jdbc:hive2://ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com:10009/;principal=kyuubi/_HOST@EMR.C-DFD43*****7C204.COM'
  4. 串連後執行show databasesimage

如果您的Spark作業需要串連開啟Kerberos認證的HMS/HDFS服務,則需要在HMS/HDFS所在叢集中修改HADOOP-COMMON或HDFS組件的core-site.xml設定檔。在該檔案中添加以下兩個配置,以允許kyuubi使用者類比其他使用者訪問HDFS/HMS服務,否則可能會導致串連失敗。

hadoop.proxyuser.kyuubi.hosts = *
hadoop.proxyuser.kyuubi.groups = *

較新版本的EMR Datalake叢集已經預設增加了該參數,參數添加後需重啟HDFS/HMS服務。