说明
- 认证(authentication):验证用户所用的身份是否是对的
- 授权(authorization):验证用户所用身份操作是否有权限
目前hive(版本0.12.0)支持简单的权限管理,默认情况下是不开启,这样所有的用户都具有相同的权限,同时也是超级管理员,也就对hive中的所有表都有查看和改动的权利,这样是不符合一般数据仓库的安全原则的。Hive可以是基于元数据的权限管理,也可以基于文件存储级别的权限管理,此次以介绍MetaData权限管理为主。通过以下配置开启Hive身份认证功能进行权限检查
配置
开启启身份认证后,任何用户必须被grant privilege才能对实体进行操作。
1
hive.security.authorization.enabled = true
表示创建表时自动赋予一些用户或角色相应的权限
1
2
3hive.security.authorization.createtable.owner.grants = ALL
hive.security.authorization.createtable.role.grants = admin_role:ALL
hive.security.authorization.createtable.user.grants = user1,user2:select;user3:create
权限管理
赋予用户权限
1
2grant [SELECT|...] on [database|table] [db_name|tbl_name ] to user [username];
grant select(tab_col) on table [tbl_name] to user [username];回收用户权限
1
revoke [ALL|...] on [database|table] [db_name|tbl_name ] from user [username];
查看用户权限
1
show grant user [username] on [database|table] [db_name|tbl_name];
HIVE支持以下权限:
1 | 权限名称 含义 |
示例
创建和删除角色
1
2create role role_name;
drop role role_name;显示所有角色
1
show roles;
赋予角色权限
1
2grant select on database db_name to role role_name;
grant select on [table] t_name to role role_name;查看角色权限
1
2show grant role role_name on database db_name;
show grant role role_name on [table] t_name;角色赋予用户
1
grant role role_name to user user_name
回收角色权限
1
2revoke select on database db_name from role role_name;
revoke select on [table] t_name from role role_name;查看某个用户所有角色
1
show role grant user user_name;
附录
Hive元数据库中的表介绍:Db_privs
:User/Role在DB上的权限Tbl_privs
:User/Role在table上的权限Tbl_col_privs
:User/Role在table column上的权限Roles
:所有创建的roleRole_map
:User与Role的对应关系