Hive用户权限说明
Hive是建立在Hadoop上的数据仓库框架,提供类似SQL的HQL操作结构化数据。
MRS提供用户、用户组和角色,集群中的各类权限需要先授予角色,然后将用户或者用户组与角色绑定。用户只有绑定角色或者加入绑定角色的用户组,才能获得权限。Hive授权相关信息请参考:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization。
- Hive在安全模式下需要进行权限管理,在普通模式下无需进行权限管理。
- 如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Hive的Ranger访问权限策略。
Hive权限模型
使用Hive组件,必须对Hive数据库和表(含外表和视图)拥有相应的权限。在MRS中,完整的Hive权限模型由Hive元数据权限与HDFS文件权限组成。使用数据库或表时所需要的各种权限都是Hive权限模型中的一种。
- Hive元数据权限。
与传统关系型数据库类似,MRS的Hive数据库包含“建表”和“查询”权限,Hive表和列包含“查询”、“插入”和“删除”权限。Hive中还包含拥有者权限“OWNERSHIP”和“Hive管理员权限”。
- Hive数据文件权限,即HDFS文件权限。
Hive的数据库、表对应的文件保存在HDFS中。默认创建的数据库或表保存在HDFS目录“/user/hive/warehouse”。系统自动以数据库名称和数据库中表的名称创建子目录。访问数据库或者表,需要在HDFS中拥有对应文件的权限,包含“读”、“写”和“执行”权限。
用户对Hive数据库或表执行不同操作时,需要关联不同的元数据权限与HDFS文件权限。例如,对Hive数据表执行查询操作,需要关联元数据权限“查询”,以及HDFS文件权限“读”和“写”。
使用Manager界面图形化的角色管理功能来管理Hive数据库和表的权限,只需要设置元数据权限,系统会自动关联HDFS文件权限,减少界面操作,提高效率。
Hive用户对象
MRS提供了用户和角色来使用Hive,比如创建表、在表中插入数据或者查询表。Hive中定义了“USER”类,对应用户实例;定义了“GROUP”类,对应角色实例。
使用Manager设置Hive用户对象的权限,只支持在角色中设置,用户或用户组需要绑定角色才能获得权限。支持授予Hive管理员权限、访问数据库、表和列的权限。
Hive支持级联鉴权功能(适用于MRS 3.3.0及之后版本)
开启了Ranger鉴权的集群的Hive表支持开启表的级联授权功能,极大地提升了鉴权易用性,只需在Ranger页面上对业务表进行一次授权,后台就会自动细粒度关联数据存储源的权限,不需要感知表的存储路径,无需进行二次授权。同时也补齐了基于存算分离授权功能的缺陷。详细操作请参见Hive表支持级联授权功能。
Hive使用场景及对应权限
使用Hive并创建数据库需要加入hive组,不需要角色授权。用户在Hive和HDFS中对自己创建的数据库或表拥有完整权限,可直接创建表、查询数据、删除数据、插入数据、更新数据以及授权他人访问表与对应HDFS目录与文件。
如果用户访问别人创建的表或数据库,需要授予权限。所以根据Hive使用场景的不同,用户需要的权限可能也不相同。
主要场景 |
用户需要的权限 |
---|---|
使用Hive表、列或数据库 |
使用其他用户创建的Hive表、列或数据库,不同的场景需要不同的Hive权限,例如:
|
关联使用其他组件 |
部分场景除了Hive权限,还可能需要组件的权限,例如:
|
在一些特殊Hive使用场景下,需要单独设置其他权限。
可能场景 |
用户需要的权限 |
---|---|
创建Hive数据库、表、外表,或者为已经创建的Hive表或外表添加分区,且Hive用户指定数据文件保存在“/user/hive/warehouse”以外的HDFS目录。 |
需要此目录已经存在,Hive用户是目录的属主,且用户对目录拥有“读”、“写”和“执行”权限。同时用户对此目录上层的每一级目录都拥有“读”和“写”权限。然后管理员通过角色管理功能授予角色使用Hive的权限,会自动关联HDFS权限。 |
Hive用户使用load将指定目录下所有文件或者指定文件,导入数据到Hive表。 |
说明:
使用load从Linux本地磁盘导入数据时,文件需上传到执行命令的HiveServer并修改权限。建议使用客户端执行命令,可查看客户端连接的HiveServer。例如,Hive客户端显示“0: jdbc:hive2://10.172.0.43:21066/>”,表示当前连接的HiveServer节点IP地址为“10.172.0.43”。 |
创建函数、删除函数或者修改任意数据库。 |
需要授予“Hive管理员权限”。 |
操作Hive中所有的数据库和表。 |
需加入到supergroup用户组,并且授予“Hive管理员权限”。 |
集群未启用Kerberos认证(普通模式)开启Ranger鉴权 |
集群未启用Kerberos认证(普通模式)默认关闭Ranger鉴权,如果启用Ranger鉴权,新增以下限制:
|