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使用场景的不同,用户需要的权限可能也不相同。
主要场景 |
用户需要的权限 |
---|---|
使用HetuEngine表、列或数据库 |
使用其他用户创建的表、列或数据库,不同的场景需要不同的权限,例如:
|
在一些特殊HetuEngine使用场景下,需要单独设置其他权限。
场景 |
用户需要的权限 |
---|---|
创建HetuEngine数据库、表、外表,或者为已经创建的表或外表添加分区,且Hive用户指定数据文件保存在“/user/hive/warehouse”以外的HDFS目录。 |
需要此目录已经存在,客户端用户是目录的属主,且用户对目录拥有“读”、“写”和“执行”权限。同时用户对此目录上层的每一级目录都拥有“读”和“执行”权限。 |
操作Hive中所有的数据库和表。 |
需加入到supergroup用户组,并且授予“ADMIN”权限。 |
启用MetaStore鉴权
- 登录FusionInsight Manager。
- 选择“集群 > 服务 > HetuEngine > 更多 > 停用Ranger鉴权”。
- 选择“集群 > 服务 > HetuEngine > 更多 > 重启服务”。
- 在HSConsole页面重启计算实例,具体请参见管理HetuEngine计算实例。