全部產品
Search
文件中心

E-MapReduce:為Livy Gateway配置並啟用Ranger鑒權

更新時間:Aug 14, 2025

Apache Ranger提供了集中式的許可權管理架構。通過與Spark結合使用的Ranger Plugin,可以對Spark SQL訪問資料庫、表和列等進行細粒度的許可權控制,從而增強資料訪問的安全性。Livy Gateway支援配置Ranger Plugin來啟用資料訪問的許可權控制。

前提條件

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

推薦使用以下引擎版本:

  • esr-4.x:esr-4.3.0及之後版本。

  • esr-3.x:esr-3.3.0及之後版本。

  • esr-2.x:esr-2.7.0及之後版本。

注意事項

Ranger主要負責鑒權服務,而使用者身分識別驗證則需藉助如LDAP等認證服務來完成,詳情請參見為Livy Gateway配置並啟用LDAP認證

操作流程

步驟一:網路準備

在開始配置之前,必須先設定好網路,確保Serverless Spark可以與您的虛擬私人雲端(VPC)之間網路互連,使得Ranger Plugin能夠順利串連到您的Ranger Admin服務並擷取許可權資訊。具體操作,請參見EMR Serverless Spark與其他VPC間網路互連

步驟二:配置Ranger Plugin

對於希望開啟Ranger鑒權功能的Livy Gateway,需首先停止該Gateway,配置以下資訊。

  1. 網路連接下拉式清單中選擇已建立的串連名稱。

  2. livy.conf中添加以下配置項。

    livy.impersonation.enabled   true
  3. spark-defaults.conf中添加以下配置項。

    spark.ranger.plugin.enabled                true
    spark.emr.serverless.user.defined.jars     /opt/ranger/ranger-spark.jar
    ranger.plugin.spark.policy.rest.url        http://<ranger_admin_ip>:<ranger_admin_port>

    涉及參數如下所示。

    參數

    說明

    spark.ranger.plugin.enabled

    設定為true表示開啟Ranger鑒權。

    spark.emr.serverless.user.defined.jars

    自訂JAR包路徑。

    配置為/opt/ranger/ranger-spark.jar,表示使用Serverless Spark中內建的Ranger Plugin。

    ranger.plugin.spark.policy.rest.url

    Ranger Admin服務的地址。格式為http://<ranger_admin_ip>:<ranger_admin_port>

    請根據您的實際情況替換<ranger_admin_ip><ranger_admin_port>,填寫為Ranger Admin服務的內網IP地址和連接埠。如果您串連的是阿里雲EMR on ECS叢集的Ranger服務,<ranger_admin_ip>可填寫為Master節點的內網IP地址,<ranger_admin_port>為6080。

  4. 編輯完成後,請務必重新啟動會話,以確保配置更改生效。

步驟三:(可選)配置Ranger Audit

Ranger支援配置Audit的儲存方式,例如Solr、HDFS等。Serverless Spark預設未開啟Ranger Audit功能,若您有對應需求可以自行在Spark配置中增加Ranger Audit相關參數。

例如,配置串連EMR的Solr可以在Spark配置中增加以下配置資訊。

xasecure.audit.is.enabled                  true
xasecure.audit.destination.solr            true
xasecure.audit.destination.solr.urls       http://<solr_ip>:<solr_port>/solr/ranger_audits
xasecure.audit.destination.solr.user       <user>
xasecure.audit.destination.solr.password   <password>

參數說明如下:

  • xasecure.audit.is.enabled:是否開啟Ranger Audit。

  • xasecure.audit.destination.solr:是否將Audit儲存到Solr服務當中。

  • xasecure.audit.destination.solr.urls:Solr服務的URL資訊。其中<solr_ip><solr_port>需要配置Solr服務的IP地址和連接埠資訊,其他URL資訊應根據實際需求填寫。

  • xasecure.audit.destination.solr.userxasecure.audit.destination.solr.password:若Solr服務開啟了Basic認證,需要填寫對應使用者名稱和密碼資訊。

    如果您串連的是EMR on ECS中的Ranger,則可以在Ranger-plugin服務的ranger-spark-audit.xml設定檔中尋找xasecure.audit.destination.solr.urlsxasecure.audit.destination.solr.userxasecure.audit.destination.solr.password的配置。

    image

配置成功後,若您在EMR Serverless Spark上提交了任務,則可以訪問Ranger UI,並在Ranger Audit的Access標籤頁查看使用者訪問的審計資訊。訪問Ranger UI詳情,請參見通過控制台訪問開源組件Web介面

說明

僅當審計儲存方式為Solr時,您才能在Ranger UI中查看審計資訊。如果審計儲存方式是HDFS或其他不支援直接通過Ranger UI查看的方式,則無法在Ranger UI中訪問這些審計資訊。

image

步驟四:串連測試

使用Jupyter Notebook進行串連測試,如果訪問沒有許可權的資料庫、表等資源,將會提示許可權不足(Permission denied)的資訊。

說明
  • 在進行許可權測試時,請特別注意Ranger預設添加的一些權限原則,例如,所有使用者均可切換資料庫、建立資料庫,以及資料庫和表的擁有者對其資源享有所有許可權等。建議由使用者A建立相關資源(如資料庫、表),隨後使用使用者B進行許可權驗證。如果僅使用同一使用者進行測試,可能會由於擁有者權限原則的影響,而錯誤地認為某些使用權限設定未生效。

  • 如果Ranger Admin服務的配置存在錯誤,可能會導致SQL雖執行成功且不報許可權錯誤,但實際上並未生效。