Hive权限管理
Hive在0.7.0以后的添加了授权功能,
权限类型
名称 | 描述 |
---|---|
ALL | 赋予所有权限 |
ALTER | 修改表结构 |
CREATE | 创建表权限 |
DROP | 删除表或分区的权限 |
INDEX | 创建索引 |
LOCK | 并发后,锁定和解锁表的权限 |
SELECT | 查询表或分区数据权限 |
SHOW_DATABASE | 查看所有数据库的权限 |
UPDATE | 给表或分区插入或加载数据权限 |
权限验证开启
如果需要做权限控制就给hive-site.xml添加下面配置
<!-- 默认为false -->
<property>
<name>hive.security.authorization.enabled</name>
<value>true</value>
</property>
权限组成
权限操作分为用户,组和角色来控制。
查看当前用户
set system:user.name;
查看当前用户在数据库所拥有的权限
show grant use userName on database default;
给用户分配某数据库建表权限
grant create on database default to user hadoop
查看用户在某数据库的权限
show grant user hadoop on database default;
当用户很多的时候,用组进行管理会更加方便
将表加到某个组
create table test_group( a int , b int);
select * from test_group ;
grant select on table test_group to group userGroup1;
select * from test_group ;
也可以通过角色进行控制
create table test_role( a int , b int);
select * from test_role;
grant select on table test_role to role userRole1;
select * from test_role;
自动授权
显示使用时,不可能每次都手动去给每个新用户添加权限。
因此,使用下面配置可以自动给用户添加权限。
给所有用户添加所有权限:
<!-- 默认为false -->
<property>
<name>hive.security.authorization.createtable.owner.grants</name>
<value>ALL</value>
</property>
给所有用户添加查询,删除表或分区权限:
<!-- 默认为false -->
<property>
<name>hive.security.authorization.createtable.owner.grants</name>
<value>select,dtop</value>
</property>