配置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权限,但对应的用户只能登录数据库和查看表名。
- 若为角色添加或删除数据库的查询权限,数据库中的表也将自动添加或删除查询权限。
- 若数据库中分区超过百万级,并且分区都在表目录下。如需加快授权速度,可以在FusionInsight Manager 界面,选择“集群 > 服务 > Hive > 配置 > 全部配置 > MetaStore(角色) > 自定义”,添加“hive-ext.skip.grant.partition”参数,值为“true”。添加该参数后在库授权时会跳过分区扫描。需要重启Metastore实例生效。
相关概念
操作场景 |
用户需要的权限 |
---|---|
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) |