配置Hive表、列或数据库的权限
操作场景
使用Hive表或者数据库时,如果用户访问别人创建的表或数据库,需要授予对应的权限。为了实现更严格权限控制,Hive也支持列级别的权限控制。如果要访问别人创建的表上某些列,需要授予列权限。以下介绍使用Manager角色管理功能在表授权、列授权和数据库授权三个场景下的操作。
 
   - 安全模式支持配置Hive表、列或数据库的权限,普通模式不支持配置Hive表、列或数据库的权限。
 - 如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Hive的Ranger访问权限策略。
 
前提条件
- 获取一个拥有管理员权限的用户,例如“admin”。
 - 请参考创建Hive角色,在Manager界面创建一个角色,例如“hrole”,不需要设置Hive权限,设置提交Hql命令到Yarn执行的权限。
 - 在Manager界面创建两个使用Hive的“人机”用户并加入“hive”组,例如“huser1”和“huser2”。“huser2”需绑定“hrole”。使用“huser1”创建一个数据库“hdb”,并在此数据库中创建表“htable”。
 
操作步骤
- 表授权
    
用户在Hive和HDFS中对自己创建的表拥有完整权限,用户访问别人创建的表,需要授予权限。授予权限时只需要授予Hive元数据权限,HDFS文件权限将自动关联。以授予用户对应角色在表“htable”中查询、插入和删除数据的权限为例,操作步骤如下:
- 在FusionInsight Manager界面,选择“系统 > 权限 > 角色”。
 - 在角色“hrole”所在行,单击“修改”。
 - 选择“待操作的集群 > Hive > Hive读写权限”。
 - 在数据库列表中单击指定的数据库名称“hdb”,显示数据库中的表“htable”。
 - 在表“htable”的“权限”列,勾选“查询”、“插入”和“删除”。
 - 单击“确定”完成。
 
 
 
   在角色管理中,授予角色在Hive外表中查询、插入和删除数据的操作与Hive表相同,授予元数据权限将自动关联HDFS文件权限。
- 列授权
    
用户在Hive和HDFS中对自己创建的表拥有完整权限,用户没有权限访问别人创建的表。如果要访问别人创建的表上某些列,需要授予列权限。授予权限时只需要授予Hive元数据权限,HDFS文件权限将自动关联。以授予用户对应角色在表“htable”的列“hcol”中查询、插入数据的权限为例,操作步骤如下:
- 在FusionInsight Manager界面,选择“系统 > 权限 > 角色”。
 - 在角色“hrole”所在行,单击“修改”。
 - 选择“待操作的集群 > Hive > Hive读写权限”。
 - 在数据库列表中单击指定的数据库名称“hdb”,显示数据库中的表“htable”,单击表“htable”,显示表下的列“hcol”。
 - 在列“hcol”的“权限”列,勾选“查询”和“插入”。
 - 单击“确定”完成。
 
 
 
   在权限管理中,授予元数据权限将自动关联HDFS文件权限,所以列授权后会增加表对应所有文件的HDFS ACL权限。
- 数据库授权
    
用户在Hive和HDFS中对自己创建的数据库拥有完整权限,用户访问别人创建的数据库,需要授予权限。授予权限时只需要授予Hive元数据权限,HDFS文件权限将自动关联。以授予用户对应角色在数据库“hdb”中查询和创建表的权限为例,操作步骤如下,不支持对角色授予数据库其他的操作权限:
- 在FusionInsight Manager界面,选择“系统 > 权限 > 角色”。
 - 在角色“hrole”所在行,单击“修改”。
 - 选择“待操作的集群 > Hive > Hive读写权限”。
 - 在数据库“hdb”的“权限”列,勾选“查询”和“建表”。
 - 单击“确定”完成。
 
 
 
   - 在权限管理中,为了方便用户使用,授予数据库下表的任意权限将自动关联该数据库目录的HDFS权限。为了避免产生性能问题,取消表的任意权限,系统不会自动取消数据库目录的HDFS权限,但对应的用户只能登录数据库和查看表名。
 - 若为角色添加或删除数据库的查询权限,数据库中的表也将自动添加或删除查询权限。
 
相关概念
| 
        操作场景  | 
      
        用户需要的权限  | 
     
|---|---|
| 
        DESCRIBE TABLE  | 
      
        查询(Select)  | 
     
| 
        SHOW PARTITIONS  | 
      
        查询(Select)  | 
     
| 
        ANALYZE TABLE  | 
      
        查询(Select)、插入(Insert)  | 
     
| 
        SHOW COLUMNS  | 
      
        查询(Select)  | 
     
| 
        SHOW TABLE STATUS  | 
      
        查询(Select)  | 
     
| 
        SHOW TABLE PROPERTIES  | 
      
        查询(Select)  | 
     
| 
        SELECT  | 
      
        查询(Select)  | 
     
| 
        EXPLAIN  | 
      
        查询(Select)  | 
     
| 
        CREATE VIEW  | 
      
        查询(Select)、Select授权(Grant Of Select)、建表(Create)  | 
     
| 
        SHOW CREATE TABLE  | 
      
        查询(Select)、Select授权(Grant Of Select)  | 
     
| 
        CREATE TABLE  | 
      
        建表(Create)  | 
     
| 
        ALTER TABLE ADD PARTITION  | 
      
        插入(Insert)  | 
     
| 
        INSERT  | 
      
        插入(Insert)  | 
     
| 
        INSERT OVERWRITE  | 
      
        插入(Insert)、删除(Delete)  | 
     
| 
        LOAD  | 
      
        插入(Insert)、删除(Delete)  | 
     
| 
        ALTER TABLE DROP PARTITION  | 
      
        删除(Delete)  | 
     
| 
        CREATE FUNCTION  | 
      
        Hive管理员权限(Hive Admin Privilege)  | 
     
| 
        DROP FUNCTION  | 
      
        Hive管理员权限(Hive Admin Privilege)  | 
     
| 
        ALTER DATABASE  | 
      
        Hive管理员权限(Hive Admin Privilege)  |