更新时间:2025-12-10 GMT+08:00
分享

配置Hive只展示当前用户有权限的库表

操作场景

在Hive客户端查看数据库、查看表或通过JDBC调用getMetaData接口时,默认显示所有的数据库和表,在Hive启用Ranger鉴权的场景中支持通过修改Hive配置,以实现Ranger默认的Hive策略只展示当前用户有权限的库表,其他用户未授权的库表不可见。

约束与限制

  • 仅Hive开启Ranger鉴权功能时支持此功能,启用Ranger鉴权具体操作请参见MRS集群服务启用Ranger鉴权
  • 默认所有Hive客户端用户都可以创建数据库和表,配置此功能后收回默认创建权限,需要通过Ranger授权后才能创建数据库和表。
  • Hive对接LakeFormation场景暂不支持此功能。
  • 该章节操作仅MRS 3.6.0-LTS及之后版本支持。

操作步骤

配置Hive只展示当前用户有权限的库表。

  1. 使用admin用户登录Manager页面,选择“集群 > 集群属性”,查看并记录集群的“认证模式”。
  2. 选择“集群 > 服务 > Ranger”,单击“Ranger Web UI”右侧的超链接登录Ranger WebUI页面。

    • 如果1查看到的认证模式为“安全模式”,admin用户在Ranger中的用户类型为“User”,只能查看Access Manager和Security Zone页面。

      需单击页面右上角的用户名,在下拉列表中单击“Log Out”退出当前用户,使用rangeradmin用户重新登录Ranger WebUI页面,再执行3

    • 如果1查看到的认证模式为“普通模式”,admin用户在Ranger中的用户类型为“Admin”,直接执行3

  3. 在首页中单击“HADOOP SQL”区域的组件插件名称如“Hive”。
  4. 单击“all - database”策略所在行的修改按钮,在“Allow Conditions”区域,删除“Select Group”为“public”且“Permissions”为“create”的权限控制规则,单击“Save”保存策略。

    图1 删除数据库的权限控制规则

  5. 单击“default database tables columns”策略所在行的修改按钮,在“Allow Conditions”区域,删除“Select Group”为“public”且“Permissions”为“create”的权限控制规则,单击“Save”保存策略。

    图2 删除Hive默认数据库、表、列的权限控制规则

  6. 使用admin用户登录Manager页面,选择“集群 > Hive > 配置 > 全部配置”,在搜索框中搜索“hive-ext.skip.ranger.showtables.auth”,修改值为“false”,以实现在Ranger鉴权启用的场景下,跳过show语句鉴权,执行结果仅展示当前用户有权限的库表。
  7. 单击“保存”保存配置。单击“实例”,在实例列表中勾选所有HiveServer实例,选择“更多 > 重启实例”重启HiveServer实例。

配置Hive只展示当前用户有权限的库表功能验证。

  1. 在Manager首页,选择“系统 > 权限 > 用户”,创建两个Hive用户,例如“test”和“test1”,且用户都属于“hive”和“hadoop”用户组。
  2. 参考2登录Ranger WebUI页面,根据实际需求为创建Hive表的用户添加相关权限控制策略。

    例如,分别创建为“test”用户授予“default”、“test_2025”库和“test_tbl_2025”表的“All”权限策略,及为“test1”用户授予“default”库的“select”权限策略。
    1. 在首页中单击“HADOOP SQL”区域的组件插件名称如“Hive”。
    2. 单击“Add New Policy”,配置以下参数并单击“Add”为test用户添加权限策略:
      • Policy Name:输入自定义策略名称,例如“test”。
      • database:输入“default”和“test_2025”数据库。
      • table:输入“test_tbl_2025”表。
      • Allow Conditions:“Select User”列选择“test”,单击“Permissions”列的“Add Permissions”添加“All”权限。
      图3 为test用户添加Ranger权限策略
    3. 再次单击“Add New Policy”,配置以下参数并单击“Add”为test1用户添加权限策略:
      • Policy Name:输入自定义策略名称,例如“test1”。
      • database:输入“default”数据库。
      • table:单击“table”,在下拉框中选择“none”。
      • Allow Conditions:“Select User”列选择“test1”,单击“Permissions”列的“Add Permissions”添加“select”权限。
      图4 为test1用户添加Ranger权限策略

  3. 登录Hive客户端所在节点,执行以下命令登录Hive客户端,以“test”用户为例。

    • 集群为安全模式时,执行以下命令进行用户认证并登录Hive客户端;

      配置环境变量:

      source 客户端安装目录/bigdata_env

      认证用户:

      kinit test

      登录Hive客户端:

      beeline
    • 集群为普通模式时,执行以下命令登录Hive客户端:

      配置环境变量:

      source 客户端安装目录/bigdata_env

      登录Hive客户端:

      beeline -n test

  4. 执行以下命令创建Hive数据库和表:

    创建表“test_tbl_2025”:

    create table test_tbl_2025(a string);

    创建数据库“test_2025”:

    create database test_2025;

  5. 参考10使用“test1”用户登录Hive客户端,执行以下命令查看“test”用户创建的数据库和表:

    查看数据库:

    show databases like 'test_*';

    查看表:

    show tables like 'test_tbl*';

    查询无结果,未授权的数据库和表“test1”用户不可见。

相关文档