在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私網訪問外部服務的網路連接。詳情請參見終端節點。
登入終端節點控制台。
在建立終端節點頁面,根據以下資訊配置終端節點,然後單擊確定建立。

配置
說明
所屬地區
選擇終端節點所屬地區。確保與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地址訪問。
說明當服務提供者完成雙棧配置後,服務使用方在建立終端節點時方可進行選擇。
資源群組
選擇終端節點所屬的資源群組。
標籤
選擇或輸入標籤鍵與標籤值。
當基本資料頁面,狀態是可用,即表明建立成功,終端節點服務網域名稱為
ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com。登入Kerberos叢集,測試網路連接。

佈建網域名解析(可選)
預設終端節點服務網域名稱比較長,為方便使用,您可以配置自訂內網權威網域名稱。詳情請參見內網權網域名稱。
登入。在 內網權威 的使用者網域名稱頁簽下,點擊添加網域名稱(Zone) 。
輸入內網權威網域名稱,選擇網域名稱生效範圍VPC,然後點擊確定。本文樣本是
kyuubi-kerberos.abc。說明如果有網域名稱類型選項,請選擇內網權威加速區。如果沒有網域名稱類型選項,則無需選擇,預設建立的是內網權威加速區網域名稱。
在使用者網域名稱頁簽,點擊目標網域名稱操作列的解析設定按鈕,點擊添加記錄,對話方塊內選擇表單填寫入模式。
記錄類型選擇CNAME,主機記錄按照選擇填寫(本文樣本是
test),記錄值填寫終端節點服務網域名稱ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com。單機確定後,即將終端節點服務網域名稱映射到test.kyuubi-kerberos.abc。登入Kerberos叢集,測試網路連接。
ping test.kyuubi-kerberos.abc
建立keytab
執行以下命令,進入Kerberos的admin.local工具。
kadmin.local建立principal,principal的格式為
kyuubi/<fqdn>@<REALM>,principal的fqdn部分建議使用終端節點網域名稱ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com,若配置了CNAME解析自訂網域名,則使用自訂網域名test.kyuubi-kerberos.abcaddprinc -randkey kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD4*****C204.COM匯出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將產生的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使用的認證方式。設定為 |
kyuubi.kinit.principal | 指定Kyuubi Gateway用於Kerberos認證的主體(Principal),格式為 |
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作業是否成功。
準備一個有許可權的Kerberos使用者,並匯出keytab檔案。
執行以下命令匯出keytab檔案。
kadmin.local addprinc -randkey hadoop xst -kt /root/hadoop.keytab hadoop quit
使用keytab檔案進行Kerberos認證。
kinit -kt hadoop.keytab hadoop使用如下命令串連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'串連後執行
show databases。
如果您的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服務。