本文介紹了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。
配置方法
進入叢集服務頁面。
頂部功能表列處,根據實際情況選擇地區和資源群組。
在單擊目的地組群操作列的叢集服務。
Ranger啟用Hive。
在集群服务頁面,單擊Ranger-plugin服務地區的状态。
在服務概述地區,開啟enableHive開關。
在彈出的對話方塊中,單擊確定。
重啟HiveServer。
在叢集服務頁面,選擇。
在組件列表地區,單擊HiveServer操作列的重啟。
在彈出的對話方塊中,輸入執行原因,單擊確定。
在確認對話方塊中,單擊確定。
許可權配置
基礎介紹
Ranger許可權配置需要在Ranger UI頁面完成,進入Ranger UI頁面,詳情請參見Ranger概述。
Ranger Hive許可權需要單擊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等。您也可以在輸入框中輸入星號*,表示所有的對應資源,如下所示。

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

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

樣本一:列許可權配置
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許可權,配置如下所示。
樣本三: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部分的內容,具體配置如下圖。
如果您不需要控制URL的許可權,也可以在預設許可權Policy Name中修改all - url的Policy,在Select Group中添加public,即表示所有使用者都具有所有URL的讀寫權限,具體步驟如下圖所示。
public在Ranger中是一個特殊的group,表示所有使用者,當Policy配置Select Group為public時,表示所有使用者都對這條許可權Policy生效。

> Hive