Hive权限控制

说明

  • 认证(authentication):验证用户所用的身份是否是对的
  • 授权(authorization):验证用户所用身份操作是否有权限

目前hive(版本0.12.0)支持简单的权限管理,默认情况下是不开启,这样所有的用户都具有相同的权限,同时也是超级管理员,也就对hive中的所有表都有查看和改动的权利,这样是不符合一般数据仓库的安全原则的。Hive可以是基于元数据的权限管理,也可以基于文件存储级别的权限管理,此次以介绍MetaData权限管理为主。通过以下配置开启Hive身份认证功能进行权限检查

配置

  1. 开启启身份认证后,任何用户必须被grant privilege才能对实体进行操作。

    1
    hive.security.authorization.enabled = true
  2. 表示创建表时自动赋予一些用户或角色相应的权限

    1
    2
    3
    hive.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. 赋予用户权限

    1
    2
    grant [SELECT|...] on [database|table] [db_name|tbl_name ] to user [username];
    grant select(tab_col) on table [tbl_name] to user [username];
  2. 回收用户权限

    1
    revoke [ALL|...] on [database|table] [db_name|tbl_name ] from user [username];
  3. 查看用户权限

    1
    show grant user [username] on [database|table] [db_name|tbl_name];

HIVE支持以下权限:

1
2
3
4
5
6
7
8
9
10
权限名称	        含义
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. 创建和删除角色

    1
    2
    create role role_name;  
    drop role role_name;
  2. 显示所有角色

    1
    show roles;
  3. 赋予角色权限

    1
    2
    grant select on database db_name to role role_name;    
    grant select on [table] t_name to role role_name;
  4. 查看角色权限

    1
    2
    show grant role role_name on database db_name;   
    show grant role role_name on [table] t_name;
  5. 角色赋予用户

    1
    grant role role_name to user user_name
  6. 回收角色权限

    1
    2
    revoke select on database db_name from role role_name;  
    revoke select on [table] t_name from role role_name;
  7. 查看某个用户所有角色

    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:所有创建的role
Role_map:User与Role的对应关系