通過啟用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>參數說明如下,其中部分參數請根據您的實際情況替換。
參數 | 說明 |
| 固定為 |
| LDAP服務的串連地址,填寫格式為 如果您串連的是阿里雲EMR on ECS叢集的OpenLDAP服務,則 說明 如果LDAP是高可用服務,則多個LDAP串連地址之間需要用空格進行分隔,例如 |
| 用於LDAP服務認證的基礎DN。 如果您串連的是阿里雲EMR on ECS叢集的OpenLDAP服務,通常為 |
更多關於Livy設定檔及其參數的詳情資訊,請參見Livy Gateway配置樣本。
步驟三:串連開啟LDAP認證的Livy Gateway
本文提供了以下兩種方式來串連啟用了LDAP認證的Livy Gateway:
Jupyter Notebook的方式適合需要動態調整參數或通過代碼自動化操作的情境。該方式使用複雜度略高,需要熟悉Sparkmagic外掛程式的使用。
Zeppelin的方式更適合資料分析和可視化情境。該方式使用簡單,只需修改設定檔即可。
方式一:使用Jupyter Notebook
基本使用方法請參見通過Jupyter Notebook與Serverless Spark進行互動。
本文以方式二為例,示範如何串連開啟LDAP認證的Livy Gateway。
匯入
sparkmagic外掛程式。%load_ext sparkmagic.magics設定預設逾時時間。 調整Livy Session的啟動逾時時間(單位:秒),避免因網路或資源問題導致的串連失敗。
import sparkmagic.utils.configuration as conf conf.override("livy_session_startup_timeout_seconds", 1000)配置Livy Gateway的Token。 開啟LDAP認證後,請求中的
Authorization欄位將被LDAP使用者名稱和密碼填充。為確保正常通訊,需手動設定Livy Gateway的自訂Token。conf.override("custom_headers", {"x-acs-spark-livy-token": "<token>"})說明:將
<token>替換為實際的Livy Token。(可選)設定Spark參數。
根據實際需求配置Spark相關參數(如資源配置、環境變數等)。
啟動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認證。
產生Base64編碼的認證資訊。 將LDAP使用者名稱和密碼按以下格式拼接為
<username>:<password>字串,然後對該字串進行Base64編碼,產生編碼後的字串(例如:dXNlcm5hbWU6cGFzc3dvc*****)。將該編碼結果記為<token>。配置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的認證資訊。
儲存並重啟Interpreter。 完成配置後,儲存更改並重啟Zeppelin的Livy Interpreter,使配置生效。