Hexun-Hive 权限管理及详细配置方法

来源:互联网 发布:淘宝卖家免费插件 编辑:程序博客网 时间:2024/06/05 04:29

Author : FuRenjie

-----------------------------------------------------------------------

一、Metastore权限配置项

任意用户都能通过set命令修改配置项。

1,新建文件的默认权限

<property>

<name>hive.files.umask.value</name>

<value>0002</value>

</property>

2,开启metastore对HDFS目录权限检查

如检查user是否有权删除某个目录下的文件。

<property>

         <name>hive.metastore.authorization.storage.checks</name>

         <value>true</value>

</property>

默认值:false

3,开启HQL级别验证

<property>

         <name>hive.security.authorization.enabled</name>

         <value>true</value>

</property>

默认值:false

4,表创建者对所建表的默认权限

<property>

         <name>hive.security.authorization.createtable.owner.grants</name>

         <value>ALL</value>

</property>

这个属性指定Hive创建者对自己所创建表的HQL操作权限,默认为NULL,也可用“select,drop”限制其操作权限。

5,特定用户、组、角色的默认权限

<property>

         <name>hive.security.authorization.createtable.user.grants</name>

         <value>luopeng,xiejie:select;xujiao:drop</value>

</porerty>

组和角色只要替换name中的user为group/role即可。

二、Hive用户

1,Users

Hive中的user就是系统中的user,

2,Groups

Group即系统中的用户组;

3,Roles

Role则在Hive中控制,role相对group而言比较灵活;

三、授权与取消授权操作

在Hive CLI中操作。

1,user授权(Group授权与此相同)

GRANT CREATE ON DATABASE default TO USERedward;

SELECT * FROM authorization_test_group;

Authorization failed:No privilege'Select' found for inputs

{ database:default,table:authorization_test_group, columnName:a}.

Use show grant to get more details.

(以上错误是因为用户没有select权限导致的,下面授予用户select执行权限)

GRANT SELECT on tableauthorization_test_group to group edward;

2,role授权

CREATE ROLEusers_who_can_select_authentication_test_role;

GRANT ROLEusers_who_can_select_authentication_test_role TO USER edward;

GRANT SELECT ON TABLEauthentication_test_role TO ROLE users_who_can_select_authentication_test_role;

(必须先在Hive中创建role,然后将用户添加到相应的role中,再给role授权,虽然上例中的role名很长,但是非常好的表示了role的作用:比Group灵活,与由系统控制的Group相比,role直接由Hive内部进行控制)

3,查看用户授权

SHOW GRANT USER edward ON DATABASE default;

databasedefault

principalNameedward

principalTypeUSER

privilegeCreate

grantTimeMon Mar 19 09:18:10 EDT 2012

grantoredward

(斜体部分为show命令的结果)

4,分区级别授权

Hive授权默认到表级别,设置PARTITION_LEVEL_PRIVILEGE为True,可以授权到分区级别。

CREATE TABLE authorize_part (key INT, valueSTRING) PARTITIONED BY (ds STRING);

ALTER TABLE authorization_part SETTBLPROPERTIES ("PARTITION_LEVEL_PRIVILEGE"="TRUE");

Authorization failed:No privilege'Alter' found for inputs{database:default, table:authorization_part}.

Useshow grant to get more details.

GRANT ALTER ON table authorization_part touser edward;

ALTER TABLE authorization_part ETTBLPROPERTIES ("PARTITION_LEVEL_PRIVILEGE"="TRUE");

GRANT SELECT ON TABLE authorization_part TOUSER edward;

ALTER TABLE authorization_part ADDPARTITION (ds='3');

ALTER TABLE authorization_part ADDPARTITION (ds='4');

SELECT * FROM authorization_part WHEREds='3';

REVOKE SELECT ON TABLE authorization_partpartition (ds='3') FROM USER edward;

SELECT * FROM authorization_part WHEREds='3';

Authorization failed:No privilege'Select' found for inputs

{database:default, table:authorization_part, partitionName:ds=3,columnName:key}.

Useshow grant to get more details.

SELECT * FROM authorization_part WHEREds='4';

OK

Timetaken: 0.146 seconds

(以上事例先创建分区表,然后对alter授权,添加分区3、4,取消分区3的select权限,测试分区3的select报错,斜体部分为命令执行结果)

 

四、HIVE支持以下权限

权限名称

含义

ALL

所有权限

ALTER

允许修改元数据(modify metadata data of object)---表信息数据

UPDATE

允许修改物理数据(modify physical data of object)---实际数据

CREATE

允许进行Create操作

DROP

允许进行DROP操作

INDEX

允许建索引(目前还没有实现)

LOCK

当出现并发的使用允许用户进行LOCK和UNLOCK操作

SELECT

允许用户进行SELECT操作

SHOW_DATABASE

允许用户查看可用的数据库(本权限尚未测试)

 

五、Hive权限管理明细

角色名

用户

权限

可操作数据库/表

Bdc

Hexun大数据部所有成员

ALL

ALL

Riskctl

linxianji,yuchunjie(风控部)

SELECT

DB:dbank_records/TB: rec_zhejiang_reputation

 

 

 

 

注:在创建任何一个数据库时,请务必进行角色授权!

 


0 0