Hive 的權限控制
Hive從0.10可以通過元數據控制權限。但是Hive的權限控制並不是完全安全的。基本的授權方案的目的是防止用戶不小心做了不合適的事情。
為了使用Hive的授權機制,有兩個參數必須在hive-site.xml中設置:
< property>
< name>hive.security.authorization.enabled< /name>
< value>true< /value>
< description>enable or disable the hive client authorization< /description>
< /property>
< property>
< name>hive.security.authorization.createtable.owner.grants< /name>
< value>ALL< /value>
< description>the privileges automatically granted to the owner whenever a table gets created. An example like "select,drop" will grant select and drop privilege to the owner of the table< /description>
< /property>
hive.security.authorization.enabled //參數是開啟權限驗證,默認為 false。
hive.security.authorization.createtable.owner.grants //參數是指表的創建者對表擁有所有權限。
角色的創建和刪除
Hive 中的角色定義與關系型數據庫中角色的定義類似,它是一種機制,給予那些沒有適當權限的用戶分配一定的權限。
1) 創建角色。
語法:hive> create role role_name;
示例:hive> create role role_tes1;
2) 刪除角色。
語法:drop role role_name
示例:drop role role_test1;
角色的授權和撤銷
1) 把 role_test1 角色授權給 xiaojiang 用戶,命令如下。
hive> grant role role_test1 to user hive; OK Time taken: 0.18 seconds
2) 查看 xiaojiang 用戶被授權的角色,命令如下。
hive> show role grant user hive; OK public false 0 role_test1 false 1527110568000 hadoop Time taken: 0.058 seconds, Fetched: 2 row(s)
3) 取消 xiaojiang 用戶的 role_test1 角色,命令如下。
hive> revoke role role_test1 from user hive; OK Time taken: 0.029 seconds hive> show role grant user hive; OK public false 0 Time taken: 0.028 seconds, Fetched: 1 row(s)
Hive 支持的權限控制。
1) 把 select 權限授權給 xiaojiang 用戶,命令如下。
hive> grant select on database default to user hive; OK Time taken: 0.07 seconds
2) 查看 xiaojiang 被授予那些操作權限,命令如下。
hive> show grant user hive on database default; OK default hive USER SELECT false 1527110740000 hadoop Time taken: 0.042 seconds, Fetched: 1 row(s)
3) 收回 xiaojiang 的 select 權限,操作如下。
hive> revoke select on database default from user hive; OK Time taken: 0.027 seconds
4) 查看 xiaojiang 用戶擁有哪些權限,命令如下。
hive> show grant user hive on database default; OK Time taken: 0.039 seconds
超級管理權限
HIVE本身有權限管理功能,需要通過配置開啟。
< property>
< name>hive.metastore.authorization.storage.checks< /name>
< value>true< /value>
< /property>
< property>
< name>hive.metastore.execute.setugi< /name>
< value>false< /value>
< /property>
< property>
< name>hive.security.authorization.enabled< /name>
< value>true< /value>
< /property>
< property>
< name>hive.security.authorization.createtable.owner.grants< /name>
< value>ALL< /value>
< /property>
其中hive.security.authorization.createtable.owner.grants設置成ALL表示用戶對自己創建的表是有所有權限的(這樣是比較合理地)。
開啟權限控制有Hive的權限功能還有一個需要完善的地方,那就是“超級管理員”。 Hive中沒有超級管理員,任何用戶都可以進行Grant/Revoke操作,為了完善“超級管理員”,必須添加hive.semantic.analyzer.hook配置,並實現自己的權限控制類。
以上就是博主為大家介紹的這一板塊的主要內容,這都是博主自己的學習過程,希望能給大家帶來一定的指導作用,有用的還望大家點個支持,如果對你沒用也望包涵,有錯誤煩請指出。如有期待可關注博主以第一時間獲取更新哦,謝謝!
版權聲明:本文為博主原創文章,未經博主允許不得轉載。