Hive权限管理:
因为权限中涉及的用户和组都是Linux的,不可控。建议使用角色,用户可以放置在角色中同时可以为角色进行授权。
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 | 允许用户查看可用的数据库 |
角色的创建、删除、使用:
步骤如下:
1.创建角色
create role testrole;
2.给角色授权
grant select on database default to role admin;
3.给角色添加用户
grant role testrole to user userA;
常用命令查询...
1.给用户授权
基于数据库
grant select on database default to useradmin;
基于某张表:
grant select on table ppdata to user admin;
2.给组授权
基于数据库:
grant select on database default to group admin;
基于某张表
grant select on table ppdata to group admin;
3.给角色授权
基于数据库:
grant select on database default to role admin;
基于某张表
grant select on table ppdata to role admin;
4.创建角色
create role testrole;
5.给用户添加角色
grant role testrole to user userA;
6.给用户移除权限
基于数据库:
revoke select on database default from useruserB;
基于某张表
revoke select on table ppdata from useruserB;
权限配置过程
权限配置
1.在hive-site.xml中进行配置:
<property> <name>hive.security.authorization.enabled</name>
<value>true</value>
<description>enable or disable thehive client authorization</description>
</property>
功能:开启权限。
<property>
<name>hive.security.authorization.createtable.owner.grants</name>
<value>ALL</value>
<description>the privileges automaticallygranted to the owner whenever a table gets created. An example like"select,drop" will grant select and drop privilege to the owner ofthe table</description>
</property>
功能:表的创建者对表拥有所有权限。
<property>
<name>hive.security.authorization.task.factory</name>
<value>org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl</value>
</property>
进行权限控制的配置。
使用钩子程序,识别超级管理员,进行授权控制。
<property>
<name>hive.semantic.analyzer.hook</name>
<value>com.myHook.MyAuthHook</value>
</property>