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,配置以下資訊。
在網路連接下拉式清單中選擇已建立的串連名稱。
在livy.conf中添加以下配置項。
livy.impersonation.enabled true在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.urlRanger 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。編輯完成後,請務必重新啟動會話,以確保配置更改生效。
步驟三:(可選)配置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.user和xasecure.audit.destination.solr.password:若Solr服務開啟了Basic認證,需要填寫對應使用者名稱和密碼資訊。如果您串連的是EMR on ECS中的Ranger,則可以在Ranger-plugin服務的ranger-spark-audit.xml設定檔中尋找
xasecure.audit.destination.solr.urls、xasecure.audit.destination.solr.user和xasecure.audit.destination.solr.password的配置。
配置成功後,若您在EMR Serverless Spark上提交了任務,則可以訪問Ranger UI,並在Ranger Audit的Access標籤頁查看使用者訪問的審計資訊。訪問Ranger UI詳情,請參見通過控制台訪問開源組件Web介面。
僅當審計儲存方式為Solr時,您才能在Ranger UI中查看審計資訊。如果審計儲存方式是HDFS或其他不支援直接通過Ranger UI查看的方式,則無法在Ranger UI中訪問這些審計資訊。

步驟四:串連測試
使用Jupyter Notebook進行串連測試,如果訪問沒有許可權的資料庫、表等資源,將會提示許可權不足(Permission denied)的資訊。
在進行許可權測試時,請特別注意Ranger預設添加的一些權限原則,例如,所有使用者均可切換資料庫、建立資料庫,以及資料庫和表的擁有者對其資源享有所有許可權等。建議由使用者A建立相關資源(如資料庫、表),隨後使用使用者B進行許可權驗證。如果僅使用同一使用者進行測試,可能會由於擁有者權限原則的影響,而錯誤地認為某些使用權限設定未生效。
如果Ranger Admin服務的配置存在錯誤,可能會導致SQL雖執行成功且不報許可權錯誤,但實際上並未生效。