Hive從0.10能夠經過元數據控制權限。可是Hive的權限控制並非徹底安全的。基本的受權方案的目的是防止用戶不當心作了不合適的事情。html
爲了使用Hive的受權機制,有兩個參數必須在hive-site.xml中設置:jquery
< 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 中的角色定義與關係型數據庫中角色的定義相似,它是一種機制,給予那些沒有適當權限的用戶分配必定的權限。oop
1) 建立角色。學習
語法:hive> create role role_name; 示例:hive> create role role_tes1;
2) 刪除角色。spa
語法:drop role role_name 示例:drop role role_test1;
1) 把 role_test1 角色受權給 xiaojiang 用戶,命令以下。code
hive> grant role role_test1 to user hive; OK Time taken: 0.18 seconds
2) 查看 xiaojiang 用戶被受權的角色,命令以下。xml
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 角色,命令以下。htm
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)
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配置,並實現本身的權限控制類。
以上就是博主爲你們介紹的這一板塊的主要內容,這都是博主本身的學習過程,但願能給你們帶來必定的指導做用,有用的還望你們點個支持,若是對你沒用也望包涵,有錯誤煩請指出。若有期待可關注博主以第一時間獲取更新哦,謝謝!