在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身份認證
進入Kerberos身份認證頁面。
在左側導覽列,選擇。
在Spark頁面,單擊目標工作空間名稱。
在EMR Serverless Spark頁面,單擊左側導覽列中的。
單擊綁定 Kerberos。
在綁定 Kerberos頁面,配置以下資訊,單擊確定。
參數
說明
Kerberos 名稱
您可以自訂。
網路連接
選擇您已建立的網路連接。
Kerberos krb5.conf
填寫正確的
krb5.conf檔案的內容。krb5.conf檔案通常位於伺服器的/etc/krb5.conf路徑。根據您的環境,可以通過以下方式擷取檔案內容:如果您使用的是EMR Datalake叢集的Kerberos服務,可以通過以下步驟擷取內容。
先登入到EMR叢集的Master節點,詳情請參見登入叢集。
執行以下命令,查看並手動複製
/etc/krb5.conf中的內容。cat /etc/krb5.conf將內容拷貝到Kerberos krb5.conf中。
對於其他EMR叢集或自建的Kerberos服務,請將檔案中的
hostname替換為VPC內網IP地址。
(可選)根據網路通訊協定類型確定是否要在
krb5.conf檔案中添加額外的配置。
單擊操作列的啟用認證。
在彈出的對話方塊中,單擊確定。
步驟三:提交Spark批任務
啟用Kerberos身份認證後,提交Spark批任務時需要進行用戶端驗證。如果您在工作空間啟用Kerberos身份認證後,直接提交Spark批任務而沒有進行額外配置,將會出現錯誤提示spark.kerberos.keytab and spark.kerberos.principal not configured。
建立Spark批任務,具體操作請參見PySpark開發快速入門。
在建立的開發頁簽中,需要額外配置以下資訊,然後單擊運行。

參數
說明
網路連接
選擇您在步驟一中新增的網路連接的名稱。
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的方式。
運行任務後,在下方的運行記錄地區,單擊任務操作列的詳情。
在任務歷史中的Application頁面,您可以查看相關的日誌資訊。

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

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