基于CDH5.x的Hive权限配置
1、打开权限控制,默认是没有限制的
set hive.security.authorization.enabled=true;
2、配置默认权限
1 hive.security.authorization.createtable.owner.grants = ALL 2 hive.security.authorization.createtable.role.grants = admin_role:ALL 3 hive.security.authorization.createtable.user.grants = user1,user2:select;user3:create
在Cloudera Manager中配置
hive-site.xml 的 Hive 客户端高级配置代码段(安全阀)
hive-site.xml 的 HiveServer2 高级配置代码段(安全阀)hive.security.authorization.enabled true hive.security.authorization.createtable.owner.grants ALL hive.security.authorization.task.factory org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl
3、创建角色
CREATE ROLE test_role;
分配用户到角色
GRANT ROLE test_role TO USER mllib;
如出现FAILED: SemanticException The current builtin authorization in Hive is incomplete and disabled.这个异常。
解决方案:
配置
set hive.security.authorization.task.factory = org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl;
4、分配权限
基于角色:
GRANT CREATE ON DATABASE default TO group test_role; GRANT SELECT on table authorization_test to group test_role; GRANT DROP on table authorization_test to group test_role; GRANT ALL on table authorization_test to group test_role;
基于用户:
GRANT CREATE ON DATABASE default TO user mllib; GRANT SELECT on table authorization_test to user mllib; GRANT DROP on table authorization_test to user mllib; GRANT ALL on table authorization_test to user mllib;
分配创建数据库的权限
GRANT CREATE TO user root;
5、查看权限分配
SHOW GRANT user mllib ON DATABASE default; SHOW GRANT group test_role ON DATABASE default;
6、删除权限
revoke all on database spark from user mllib;
7、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 : 允许用户查看可用的数据库8、登录hive元数据库,可以发现以下表:Db_privs:记录了User/Role在DB上的权限Tbl_privs:记录了User/Role在table上的权限Tbl_col_privs:记录了User/Role在table column上的权限Roles:记录了所有创建的roleRole_map:记录了User与Role的对应关系