文档首页/ MapReduce服务 MRS/ 组件操作指南(LTS版)/ 使用Hive/ Hive企业级能力增强/ 配置Hive对接LakeFormation支持show databases/tables鉴权
更新时间:2026-06-11 GMT+08:00
分享

配置Hive对接LakeFormation支持show databases/tables鉴权

操作场景

在Hive对接LakeFormation的场景中,用户在Hive客户端查看数据库、数据表列表,或者通过JDBC的getMetaData接口获取元数据信息时,默认会显示所有数据库和数据表。通过调整Hive的配置参数,支持仅显示当前用户有权限访问的数据库和表,其他未被授权的库表将不再展示。

约束与限制

  • 默认所有Hive客户端用户都可以创建数据库和表,配置此功能后会收回默认创建权限,需要授权后才能创建数据库和表。
  • 该章节内容仅适用于MRS 3.6.0-LTS.1及之后版本。

操作步骤

对接LakeFormation后,配置Hive只展示当前用户有权限的库表

  1. 使用admin用户登录Manager页面,选择“集群 > 服务 > Hive > 配置 > 全部配置”,在搜索框中搜索“hive-ext.skip.ranger.showtables.auth”,修改值为“false”,以实现show语句执行结果仅展示当前用户有权限的库表。
  2. 单击“保存”保存配置。单击“实例”,在实例列表中勾选所有HiveServer实例,选择“更多 > 重启实例”,输入当前用户密码并单击“确定”重启HiveServer实例。
  3. 单击“概览”,在页面右上角单击“更多”,在下拉框中查看“启用Ranger鉴权”是否置灰。

    • 是,Hive已启用Ranger鉴权,执行4
    • 否,Hive未启用Ranger鉴权,执行9

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

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

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

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

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

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

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

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

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

  1. 在Manager首页,选择“系统 > 权限 > 用户”,创建两个Hive用户,例如“test”和“test1”,且用户都属于“hive”和“hadoop”用户组。
  2. 使用客户端安装用户登录Hive客户端所在节点,执行以下命令登录Hive客户端,以“test”用户为例。

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

      配置环境变量:

      source 客户端安装目录/bigdata_env

      认证用户:

      kinit test

      登录Hive客户端:

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

      配置环境变量:

      source 客户端安装目录/bigdata_env

      登录Hive客户端:

      beeline -n test

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

    创建表“test_tbl_2026”:

    create table test_tbl_2026(a string);

    创建数据库“test_2026”:

    create database test_2026;

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

    查看数据库:

    show databases like 'test_*';

    查看表:

    show tables like 'test_tbl*';

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

相关文档