Hive 基本語法操練(六):Hive 的權限控制


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配置,並實現自己的權限控制類。

 

以上就是博主為大家介紹的這一板塊的主要內容,這都是博主自己的學習過程,希望能給大家帶來一定的指導作用,有用的還望大家點個支持,如果對你沒用也望包涵,有錯誤煩請指出。如有期待可關注博主以第一時間獲取更新哦,謝謝! 

 版權聲明:本文為博主原創文章,未經博主允許不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM