本文介紹了Hive如何開啟Ranger權限控制,以及詳細的Ranger Hive權限配置示例進行說明。
前提條件
已創建DataLake集群,并選擇了Ranger服務,創建集群詳情請參見創建集群。
注意事項
- 支持權限校驗的訪問方式
- 通過Beeline客戶端訪問HiveServer2。
- 通過JDBC URL連接HiveServer2。
- 不支持權限校驗的訪問方式
- 通過Hive客戶端直接連接Metastore。
- 通過Hive-Client API直接連接Metastore。
配置方法
- 進入集群服務頁面。
- 登錄EMR on ECS控制臺。
- 頂部菜單欄處,根據實際情況選擇地域和資源組。
- 在集群管理頁面,單擊目標集群操作列的集群服務。
- Ranger啟用Hive。
- 在集群服務頁面,單擊Ranger-plugin服務區域的狀態。
- 在服務概述區域,打開enableHive開關。
- 在彈出的對話框中,單擊確定。
- 重啟HiveServer。
- 在集群服務頁面,選擇 。
- 在組件列表區域,單擊HiveServer操作列的重啟。
- 在彈出的對話框中,輸入執行原因,單擊確定。
- 在確認對話框中,單擊確定。
權限配置
基礎介紹
Ranger權限配置需要在Ranger UI頁面完成,進入Ranger UI頁面,詳情請參見Ranger概述。
進入emr-hive后,您能看到所有配置的權限列表,Ranger會默認添加一些權限Policy,例如默認Policy配置hive用戶作為HiveServer服務的啟動用戶擁有所有Database、Table、Column、UDF和URL等資源的訪問權限、所有用戶都有Database的Create權限和在default Database下所有用戶都有Create權限。
添加權限Policy
- Policy Resource
Ranger Hive中,Policy Resource主要包括database、table、column、url、udf,表示對所填資源進行權限配置。默認情況下Policy中展示的是database、table和column,您可以單擊對應資源名稱進行切換。
配置權限Policy時,需要在Resource輸入框中輸入對應資源的名稱,例如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,如下所示。
示例一:列權限配置
select columns from table
操作。權限配置如下圖所示:該Policy表示test用戶具有database=testdb、table=test和column=id的select權限,擁有權限執行select id from testdb.test
。如果您希望配置某個用戶能夠select testdb.test
的所有列,可以將column配置為*即可。
示例二:表權限配置
示例三: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
的Write權限。
如果您不需要控制URL的權限,也可以在默認權限Policy Name中修改all - url的Policy,在Select Group中添加public,即表示所有用戶都具有所有URL的讀寫權限,具體步驟如下圖所示。