全部產品
Search
文件中心

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

更新時間:Sep 21, 2026

本文介紹了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 ranger開關。

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

  3. 重啟HiveServer。

    1. 在集群服务頁面,選擇more > Hive。

    2. 在组件列表地區,單擊HiveServer操作列的重启。

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

    4. 在确认對話方塊中,單擊确定。

許可權配置

基礎介紹

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

Ranger Hive許可權需要單擊HADOOP SQL下的emr-hive進行配置。進入 Ranger Service Manager 頁面後,在 HADOOP SQL 類別下可找到已建立的 emr-hive 服務執行個體,可對其執行查看、編輯或刪除操作。

進入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主要包括database、table、column、url、udf,表示對所填資源進行許可權配置。預設情況下Policy中展示的是database、table和column,您可以單擊對應資源名稱進行切換。

    配置許可權Policy時,需要輸入對應資源的名稱,例如database填寫testdb、table填寫test、column填寫id和url填寫oss://test-bucket/test/tmp等。您也可以在輸入框中輸入星號*,表示所有的對應資源。每個資源配置行包含資源類型下拉框(如 column)、值輸入框(必填)以及 Include 開關,用於設定包含或排除模式。

  • Policy User

    許可權Policy需要配置User資訊,可以在Select User列表中選擇需要配置許可權的使用者(例如 test)。

  • Policy Permission

    單擊Add Permissions,顯示add/edit permissions彈窗,根據需要選中對應的permission(例如 Select 和 Create),然後單擊確認按鈕完成許可權添加。

樣本一:列許可權配置

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

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

樣本二:表許可權配置

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

在 Apache Ranger 中建立存取原則,關鍵配置如下:

  • Policy Name:create-permission-example

  • Policy Type:Access

  • database:testdb(Include 開啟)

  • table:*(Include 開啟)

  • column:*(Include 開啟)

  • Audit Logging:Yes

在 Allow Conditions 中,Select User 選擇 test,Permissions 選擇 Create。

樣本三: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部分的內容,具體配置如下:

  • Policy Name:url-permission-example

  • 資源類型選擇 url,值為 oss://test-bucket/test,開啟 Recursive

  • Allow Conditions:使用者為 test,許可權為 Read

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

說明

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