全部產品
Search
文件中心

E-MapReduce:配置Hive開啟Ranger許可權控制

更新時間:Oct 25, 2025

本文介紹了Hive如何開啟Ranger許可權控制,以及詳細的Ranger Hive許可權配置樣本進行說明。

前提條件

已建立DataLake叢集,並選擇了Ranger服務,建立叢集詳情請參見建立叢集

注意事項

Hive開啟Ranger許可權控制後,HiveServer2服務會載入Ranger Hive plugin,僅在您通過HiveServer2提交SQL作業時需要進行許可權校正,其他方式訪問Hive將不會觸發許可權校正。

  • 支援許可權校正的訪問方式

    • 通過Beeline用戶端訪問HiveServer2。

    • 通過JDBC URL串連HiveServer2。

  • 不支援許可權校正的訪問方式

    • 通過Hive用戶端直接連接Metastore。

    • 通過Hive-Client API直接連接Metastore。

配置方法

  1. 進入叢集服務頁面。

    1. 登入EMR on ECS控制台

    2. 頂部功能表列處,根據實際情況選擇地區和資源群組。

    3. 在單擊目的地組群操作列的叢集服務

  2. Ranger啟用Hive。

    1. 集群服务頁面,單擊Ranger-plugin服務地區的状态

    2. 服務概述地區,開啟enableHive開關。

    3. 在彈出的對話方塊中,單擊確定

  3. 重啟HiveServer。

    1. 叢集服務頁面,選擇more > Hive

    2. 組件列表地區,單擊HiveServer操作列的重啟

    3. 在彈出的對話方塊中,輸入執行原因,單擊確定

    4. 確認對話方塊中,單擊確定

許可權配置

基礎介紹

Ranger許可權配置需要在Ranger UI頁面完成,進入Ranger UI頁面,詳情請參見Ranger概述

Ranger Hive許可權需要單擊HADOOP SQL下的emr-hive進行配置,如下圖所示。hive power

進入emr-hive後,您能看到所有配置的許可權列表,Ranger會預設添加一些許可權Policy,例如預設Policy配置hive使用者作為HiveServer服務的啟動使用者擁有所有Database、Table、Column、UDF和URL等資源的存取權限、所有使用者都有Database的Create許可權和在default Database下所有使用者都有Create許可權。

添加許可權Policy

單擊右上方的Add New Policy按鈕能添加許可權Policy。許可權Policy需要在Policy Name中配置名稱,並且所有Policy的名稱不能重複。基礎的許可權配置需要填寫Resource、User和Permission三個要素,Resource表示許可權Policy管理的資源,例如Database、Table、Column、URL等,User表示許可權Policy指定許可權的使用者、Permission表示許可權Policy所管理的權限類別型。

  • Policy Resource

    Ranger Hive中,Policy Resource主要包括databasetablecolumnurludf,表示對所填資源進行許可權配置。預設情況下Policy中展示的是databasetablecolumn,您可以單擊對應資源名稱進行切換。

    配置許可權Policy時,需要輸入對應資源的名稱,例如database填寫testdbtable填寫testcolumn填寫idurl填寫oss://test-bucket/test/tmp等。您也可以在輸入框中輸入星號*,表示所有的對應資源,如下所示。*

  • Policy User

    許可權Policy需要配置User資訊,可以在Select User列表中選擇需要配置許可權的使用者,如下所示。User

  • Policy Permission

    單擊Add Permissions,顯示add/edit permissions,根據需要選中對應的permission,如下所示。permission

樣本一:列許可權配置

Ranger許可權控制中最常用的一種情況是配置指定使用者賦予表的Select許可權,確保對應使用者能夠執行select columns from table操作。許可權配置如下圖所示:exmple

該Policy表示test使用者具有database=testdbtable=testcolumn=idselect許可權,擁有許可權執行select id from testdb.test。如果您希望配置某個使用者能夠select testdb.test的所有列,可以將column配置為*即可。

樣本二:表許可權配置

Ranger Hive中表的建立許可權可以配置到表層級,例如配置database=testdbtable=testcolumn=*Create許可權時,使用者僅具有test這張表的建立許可權,不能建立其他表。如果您希望配置使用者能在Database下自由建立所有表,需要配置database=testdb,table=*column=*Create許可權,配置如下所示。Setting

樣本三:URL許可權配置

當您執行的Hive SQL語句中包含Location資訊,且Location的Scheme為oss時,會檢查Location的Write、Read許可權。例如create external table test(id int, name string) location 'oss://test-bucket/test',會檢查oss://test-bucket/test的Read許可權。

此時,需要配置對URL的許可權Policy,Resource切換為URL請參見上面添加許可權Policy部分的內容,具體配置如下圖。image

如果您不需要控制URL的許可權,也可以在預設許可權Policy Name中修改all - url的Policy,在Select Group中添加public,即表示所有使用者都具有所有URL的讀寫權限,具體步驟如下圖所示。

說明

public在Ranger中是一個特殊的group,表示所有使用者,當Policy配置Select Grouppublic時,表示所有使用者都對這條許可權Policy生效。

public