全部產品
Search
文件中心

E-MapReduce:Kyuubi Gateway使用Kerberos

更新時間:Sep 21, 2026

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

使用限制

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

前提條件

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

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

  • 已在Serverless Spark工作空間中建立Kyuubi Gateway(無需啟動,僅建立即可)。

打通網路

Kyuubi Gateway使用Kerberos,需要配置私網串連(PrivateLink),打通Serverless Spark和Kerberos叢集之間的網路。該網路設定目前不支援使用者自行設定,您需提供相關資訊並提交工單,並擷取終端節點服務ID,如:epsrv-bp10******2j5ms。

說明

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

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

  • Kyuubi Gateway ID,如kb-564e********266f。

  • 至少提供用於訪問Kyuubi服務的2個可用性區域,如cn-hangzhou-j,cn-hangzhou-k。地區支援的可用性區域範圍,請諮詢工單中的客服擷取。

建立終端節點

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

  1. 登入終端節點控制台。

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

    配置

    說明

    所屬地區

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

    節點名稱

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

    終端節點類型

    選擇介面終端節點。

    終端節點服務

    單擊選擇可用服務,然後選擇或輸入目標終端節點服務ID,即上文擷取的epsrv-bp10******2j5ms。

    專用網路

    選擇訪問Kyuubi Gateway節點所在VPC。

    可用性區域與交換器

    選擇前述可用性區域及其對應的交換器,建議至少選擇兩個。

    安全性群組

    選擇要與終端節點網卡關聯的安全性群組,建議選擇訪問Kyuubi Gateway所在節點的叢集安全性群組,避免串連請求被安全性群組攔截。

    IP版本

    支援的網路類型,預設IPv4。

    資源群組

    可選配置終端節點所屬的資源群組。

    標籤

    可選配置標籤鍵與標籤值。

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

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

    在 Kerberos 叢集節點上通過 ping 命令驗證終端節點的私網連通性,確認響應正常,表明網路已經打通:

    [root@master-1-1(xxx) ~]# ping ep-bp1ixxx.cn-hangzhou.privatelink.aliyuncs.com
    PING ep-bp1xxx              xxx.cn-hangzhou.privatelink.aliyuncs.com (xxx) 56(84) bytes of data.
    64 bytes from xxx (xxx): icmp_seq=1 ttl=102 time=0.989 ms

佈建網域名解析(可選)

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

  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

建立kyuubi.keytab,該keytab僅用於Serverless Spark的Kyuubi Gateway認證服務。

  1. 登入Kerberos叢集Kadmin節點,例如EMR on ECS的master-1-1節點。

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

    kadmin.local

    查看已存在的principal:

    listprincs
  3. 建立principal,principal的格式為kyuubi/<fqdn>@<REALM>,principal的fqdn部分建議使用終端節點網域名稱ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com,若配置了CNAME解析自訂網域名,則使用自訂網域名test.kyuubi-kerberos.abc,principal的<REALM>需要和叢集當前配置保持一致,可參考其他已有principal。

    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://<bucket_name>.oss-<region-id>-internal.aliyuncs.com/<path>/

配置Kyuubi Gateway

Kyuubi Gateway在使用Kerberos時,需要選擇能訪問KDC叢集的網路連接,還需進行以下Kyuubi 配置。

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

配置項

說明

kyuubi.authentication

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

kyuubi.kinit.principal

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

kyuubi.files

該配置會下載指定檔案至/opt/kyuubi/work-dir/目錄。可填上方步驟中上傳keytab的OSS路徑,無需帶oss-<region-id>-internal.aliyuncs.com網域名稱。

kyuubi.kinit.keytab

指定Kyuubi Gateway使用keytab檔案。註:路徑固定為/opt/kyuubi/work-dir/目錄,按需修改檔案名稱。

如需要串連開啟Kerberos的HMS,且工作空間資料目錄已經配置該HMS資料目錄,Spark 配置如下。

spark.hive.metastore.kerberos.principal             hive/_HOST@EMR.C-DFD4*****C204.COM
spark.hive.metastore.sasl.enabled                   true

配置項

說明

spark.hive.metastore.kerberos.principal

Kerberos環境下HMS對應的認證主體(principal),需填上方步驟listprincs命令擷取的hive principal,其中<fqdn>可簡化為_HOST,即hive/_HOST@<REALM>。

spark.hive.metastore.sasl.enabled

是否開啟Kerberos認證,填true。

(選填),如需要串連開啟Kerberos的HMS,且工作空間資料目錄沒有配置該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.hadoop.hive.metastore.uris

Hive Metastore(HMS)地址。

spark.hadoop.hive.imetastoreclient.factory.class

固定值。

說明
  • 在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。

提交作業

驗證Kerberos叢集串連Kyuubi Gateway啟動執行Spark作業是否成功。

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

    1. 登入Kerberos叢集。

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

      kadmin.local
      addprinc -randkey emr-user@EMR.C-DFD4*****C204.COM
      xst -kt /root/emr-user.keytab emr-user@EMR.C-DFD4*****C204.COM
      quit
  2. 使用該keytab檔案進行Kerberos認證。

    kinit -kt /root/emr-user.keytab emr-user

    如步驟1未建立,也可使用已存在的服務keytab,例如EMR on ECS預設存在的hive.keytab。

    說明

    測試情境可直接使用叢集上已存在的keytab,但禁止修改、重新匯出已經存在的服務keytab,否則會導致原有服務不可用。

    klist -kt /etc/taihao-apps/hive-conf/keytab/hive.keytab
    kinit -kt /etc/taihao-apps/hive-conf/keytab/hive.keytab hive/master-1-1.c-596f1842f3ed8ad0.cn-hangzhou.emr.aliyuncs.com@EMR.C-596F1842F3ED8AD0.COM
  3. 查看當前Kerberos 票據。

    klist
  4. 使用kyuubi-beeline或spark-beeline串連Kyuubi Gateway啟動執行Spark作業。

    kyuubi-beeline -u 'jdbc:hive2://ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com:10009/;principal=kyuubi/_HOST@EMR.C-DFD43*****7C204.COM'
    說明
    • ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com為建立終端節點章節擷取的服務網域名稱。

    • 連接埠號碼預設為10009。

    • principal為kyuubi服務principal,<fqdn>可簡化為_HOST,即kyuubi/_HOST@EMR.C-DFD43*****7C204.COM。

  5. 串連後執行show databases。

    2025-08-21 14:55:18.392 INFO KyuubiSessionManager-exec-pool: Thread-83 org.apache.kyuubi.operation.ExecuteState STATE -> FINISHED_STATE, time taken: 0.301 seconds
    2025-08-21 14:55:18.393 INFO nioEventLoopGroup-3-1 org.apache.kyuubi.websocket.MessageSender: [KyuubiSqlStateme success!
    2025-08-21 14:55:18.418 INFO nioEventLoopGroup-3-1 org.apache.kyuubi.websocket.MessageSender: channel listener
    2025-08-21 14:55:18.420 INFO nioEventLoopGroup-3-1 org.apache.kyuubi.websocket.WebSocketClientHandler: channel: !
    +------------+
    | namespace  |
    +------------+
    | default    |
    +------------+
    1 row selected (0.539 seconds)

常見問題

  1. 如何串連開啟Kerberos認證的HDFS服務?

需要在HDFS所在叢集中修改HADOOP-COMMON或HDFS組件的core-site.xml設定檔。在該檔案中添加以下兩個配置,以允許kyuubi使用者類比其他使用者訪問HDFS/HMS服務,否則可能會導致串連失敗,參數添加後需重啟HDFS/HMS服務。新版本的EMR Datalake叢集已經預設增加了該參數。

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

還需額外添加Spark 配置如下。

spark.kerberos.access.hadoopFileSystems hdfs://hdfs-cluster
  1. 如何提交作業至Kyuubi時無需Kerberos認證,僅在Spark作業訪問HMS時進行Kerberos認證?

修改Kyuubi配置如下。串連時無需指定principal。

kyuubi.authentication              KERBEROS,NONE
  1. 開啟Kerberos後如何串連Ranger服務?

新增Spark配置如下。

spark.ranger.plugin.enabled                      true
spark.emr.serverless.user.defined.jars           /opt/ranger/ranger-spark.jar
ranger.plugin.spark.policy.rest.url              http://master-1-1.c-xxxx.cn-hangzhou.emr.aliyuncs.com:6080
spark.files                                      oss://<bucket_name>/<path>/kyuubi.keytab
ranger.plugin.spark.policy.download.loginKeytab  true
ranger.plugin.spark.policy.download.keytab       /opt/spark/work-dir/kyuubi.keytab
ranger.plugin.spark.policy.download.principal    kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD43******7C204.COM

配置項

說明

spark.files

該配置會下載指定檔案至/opt/spark/work-dir/目錄。可填上方步驟中上傳keytab的OSS路徑,無需帶oss-<region-id>-internal.aliyuncs.com網域名稱。

ranger.plugin.spark.policy.download.loginKeytab

固定值。

ranger.plugin.spark.policy.download.keytab

任意生效的keytab檔案。

ranger.plugin.spark.policy.download.principal

keytab中儲存的principal,使用該principal下載Ranger policy,避免請求認證失敗。