全部產品
Search
文件中心

E-MapReduce:為Livy Gateway配置並啟用LDAP認證

更新時間:Jul 15, 2025

通過啟用LDAP認證,可以增強Livy的安全性,確保只有提供正確的使用者名稱和密碼後,用戶端才能成功串連到Livy Gateway執行相應的操作,有效防止未授權訪問敏感性資料和功能的風險。

前提條件

  • 已建立Livy Gateway和Token,具體請參見Gateway管理

  • 可選:如果您需要使用阿里雲EMR on ECS叢集的OpenLDAP服務,則需建立選擇了OpenLDAP服務的叢集並添加了使用者,詳情請參見建立叢集OpenLDAP使用者管理

操作流程

步驟一:網路準備

在開始配置之前,必須先設定好網路,確保Serverless Spark可以與您的虛擬私人雲端(VPC)之間網路互連,使得Livy Gateway能夠順利串連到LDAP服務進行認證。具體操作,請參見EMR Serverless Spark與其他VPC間網路互連

步驟二:配置Livy Gateway

對於希望開啟LDAP認證功能的Livy Gateway,需先停止該會話。然後編輯Livy Gateway,在網路連接下拉式清單中選擇已建立的串連名稱,在livy.conf中添加以下配置項。編輯完成後,請務必重新啟動Livy Gateway,以確保所做更改生效。

livy.server.auth.type ldap
livy.server.auth.ldap.url ldap://<ldap_url>:<ldap_port>
livy.server.auth.ldap.base-dn <ldap_base_dn>

參數說明如下,其中部分參數請根據您的實際情況替換。

參數

說明

livy.server.auth.type

固定為ldap,表示啟用LDAP認證。

livy.server.auth.ldap.url

LDAP服務的串連地址,填寫格式為ldap://<ldap_url>:<ldap_port>

如果您串連的是阿里雲EMR on ECS叢集的OpenLDAP服務,則<ldap_url>填寫為Master節點的內網IP地址或網域名稱,<ldap_port>預設為10389,例如 ldap://master-1-1.c-xxxxxxxxxx.cn-hangzhou.emr.aliyuncs.com:10389

說明

如果LDAP是高可用服務,則多個LDAP串連地址之間需要用空格進行分隔,例如ldap://<ldap_url_1>:<ldap_port> ldap://<ldap_url_2>:<ldap_port>

livy.server.auth.ldap.base-dn

用於LDAP服務認證的基礎DN。

如果您串連的是阿里雲EMR on ECS叢集的OpenLDAP服務,通常為ou=people,o=emr

更多關於Livy設定檔及其參數的詳情資訊,請參見Livy Gateway配置樣本

步驟三:串連開啟LDAP認證的Livy Gateway

本文提供了以下兩種方式來串連啟用了LDAP認證的Livy Gateway:

  • Jupyter Notebook的方式適合需要動態調整參數或通過代碼自動化操作的情境。該方式使用複雜度略高,需要熟悉Sparkmagic外掛程式的使用。

  • Zeppelin的方式更適合資料分析和可視化情境。該方式使用簡單,只需修改設定檔即可。

方式一:使用Jupyter Notebook

基本使用方法請參見通過Jupyter Notebook與Serverless Spark進行互動

本文以方式二為例,示範如何串連開啟LDAP認證的Livy Gateway。

  1. 匯入sparkmagic外掛程式。

    %load_ext sparkmagic.magics
  2. 設定預設逾時時間。 調整Livy Session的啟動逾時時間(單位:秒),避免因網路或資源問題導致的串連失敗。

    import sparkmagic.utils.configuration as conf
    conf.override("livy_session_startup_timeout_seconds", 1000)
  3. 配置Livy Gateway的Token。 開啟LDAP認證後,請求中的Authorization欄位將被LDAP使用者名稱和密碼填充。為確保正常通訊,需手動設定Livy Gateway的自訂Token。

    conf.override("custom_headers", {"x-acs-spark-livy-token": "<token>"})
    說明:將<token>替換為實際的Livy Token。
  4. (可選)設定Spark參數。

    根據實際需求配置Spark相關參數(如資源配置、環境變數等)。

  5. 啟動Livy Session。 使用以下命令建立並啟動一個Livy Session,同時通過LDAP使用者名稱和密碼進行身分識別驗證。

    %spark add -s test -l python -u https://<endpoint> -a <ldapusername> -p <ldappassword>

    涉及參數如下:

    • <ldapusername>:替換為您的LDAP使用者名稱。

    • <ldappassword>:替換為您的LDAP密碼。

    • <endpoint>:替換為實際的Livy Gateway的Endpoint,可以在Livy Gateway頁簽擷取。例如,emr-spark-livy-gateway-cn-hangzhou.data.aliyun.com/api/v1/workspace/w-xxxxxx/livycompute/lc-xxxxxx

方式二:使用Zeppelin

基本使用方法請參見通過Zeppelin Livy Interpreter串連EMR Serverless Spark

Zeppelin的開源Livy Interpreter本身不支援直接配置LDAP的使用者名稱和密碼。但可以通過添加自訂的HTTP Header實現LDAP認證。

  1. 產生Base64編碼的認證資訊。 將LDAP使用者名稱和密碼按以下格式拼接為<username>:<password>字串,然後對該字串進行Base64編碼,產生編碼後的字串(例如:dXNlcm5hbWU6cGFzc3dvc*****)。將該編碼結果記為<token>

  2. 配置Livy Interpreter的HTTP Headers。 在Zeppelin的Livy Interpreter配置中,添加以下自訂Header。

    zeppelin.livy.http.headers = x-acs-spark-livy-token:<token>;Authorization:Basic <token>

    涉及以下參數:

    • <token>:替換為上一步產生的Base64編碼字串。

    • x-acs-spark-livy-token:是用於Livy Gateway的Token,確保其值與實際配置一致。

    • Authorization:Basic <token>:用於傳遞LDAP的認證資訊。

  3. 儲存並重啟Interpreter。 完成配置後,儲存更改並重啟Zeppelin的Livy Interpreter,使配置生效。