更新时间:2022-12-14 GMT+08:00

MetaStore权限管控概述

约束: 只适用于Hive类型数据源。

HetuEngine多个集群组网进行协同计算时,元数据由管理集群集中管理,计算在所有集群进行,访问HetuEngine集群用户的权限需要在管理集群进行配置,并在所有计算实例添加拥有hive用户组权限的同名用户。

MetaStore权限

类似于Hive,HetuEngine也是建立在Hadoop上的数据仓库框架,提供类似SQL的结构化数据。

集群中的各类权限需要先授予角色,然后将用户或者用户组与角色绑定。用户只有绑定角色或者加入绑定角色的用户组,才能获得权限。

权限管理介绍

HetuEngine的权限管理是指HetuEngine中管理用户操作数据库的权限系统,以保证不同用户之间操作数据库的独立性和安全性。如果一个用户想操作另一个用户的表、数据库等,需要获取相应的权限才能进行操作,否则会被拒绝。

HetuEngine权限管理部分集成了Hive权限管理的功能。使用HetuEngine权限管理功能需要使用Hive的MetaStore服务和页面上的赋权功能。

  • 页面赋权:HetuEngine仅支持页面赋权的方式。在Manager的“系统 > 权限”中,可以进行用户、用户组和角色的添加/删除操作,可以对某个角色进行赋权/撤权。
  • 服务获权并判断:当接收到客户端的DDL、DML的SQL命令时,HetuEngine服务会向MetaStore服务获取客户端用户对数据库信息的已有权限,并检查是否包含了所需的所有权限,如果是则继续执行,否则拒绝该用户的操作。当通过了MetaStore的权限检查后,还需进行HDFS的ACLs权限检查。

HetuEngine权限模型

用户使用HetuEngine服务进行SQL操作,必须对HetuEngine数据库和表(含外表和视图)拥有相应的权限。完整的HetuEngine权限模型由元数据权限与HDFS文件权限组成。使用数据库或表时所需要的各种权限都是HetuEngine权限模型中的一种。

  • 元数据权限

    元数据权限即在元数据层上进行权限控制,与传统关系型数据库类似,HetuEngine数据库包含“建表”和“查询”权限,表和列包含“查询”、“插入”、“UPDATE”和“删除”权限。HetuEngine中还包含拥有者权限“OWNERSHIP”和管理员权限“ADMIN”。

  • 数据文件权限,即HDFS文件权限

    HetuEngine的数据库、表对应的文件保存在HDFS中。默认创建的数据库或表保存在HDFS目录“/user/hive/warehouse”。系统自动以数据库名称和数据库中表的名称创建子目录。访问数据库或者表,需要在HDFS中拥有对应文件的权限,包含“读”、“写”和“执行”权限。

用户对HetuEngine数据库或表执行不同操作时,需要关联不同的元数据权限与HDFS文件权限。例如,对HetuEngine数据表执行查询操作,需要关联元数据权限“查询”,以及HDFS文件权限“读”和“执行”。

使用FusionInsight Manager界面图形化的角色管理功能来管理HetuEngine数据库和表的权限,只需要设置元数据权限,系统会自动关联HDFS文件权限,减少界面操作,提高效率。

HetuEngine使用场景及对应权限

用户通过HetuEngine服务创建数据库需要加入Hive组,不需要角色授权。用户在Hive和HDFS中对自己创建的数据库或表拥有完整权限,可直接创建表、查询数据、删除数据、插入数据、更新数据以及授权他人访问表与对应HDFS目录与文件。

如果用户访问别人创建的表或数据库,需要授予权限。所以根据HetuEngine使用场景的不同,用户需要的权限可能也不相同。

表1 HetuEngine使用场景

主要场景

用户需要的权限

使用HetuEngine表、列或数据库

使用其他用户创建的表、列或数据库,不同的场景需要不同的权限,例如:

  • 创建表,需要“建表”权限。
  • 查询数据,需要“查询”权限。
  • 插入数据,需要“插入”权限。

在一些特殊HetuEngine使用场景下,需要单独设置其他权限。

表2 HetuEngine授权注意事项

场景

用户需要的权限

创建HetuEngine数据库、表、外表,或者为已经创建的表或外表添加分区,且Hive用户指定数据文件保存在“/user/hive/warehouse”以外的HDFS目录。

需要此目录已经存在,客户端用户是目录的属主,且用户对目录拥有“读”、“写”和“执行”权限。同时用户对此目录上层的每一级目录都拥有“读”和“执行”权限。

操作Hive中所有的数据库和表。

需加入到supergroup用户组,并且授予“ADMIN”权限。

启用MetaStore鉴权

  1. 登录FusionInsight Manager。
  2. 选择“集群 > 服务 > HetuEngine > 更多 > 停用Ranger鉴权”。
  3. 选择“集群 > 服务 > HetuEngine > 更多 > 重启服务”。
  4. 在HSConsole页面重启计算实例,具体请参见管理HetuEngine计算实例