全部产品
Search
文档中心

开源大数据平台E-MapReduce:配置Hive开启Ranger权限控制

更新时间:Jul 06, 2026

本文介绍了Hive如何开启Ranger权限控制,以及详细的Ranger Hive权限配置示例进行说明。

前提条件

已创建DataLake集群,并选择了Ranger服务,创建集群详情请参见创建集群

注意事项

Hive开启Ranger权限控制后,HiveServer2服务会加载Ranger Hive plugin,仅在您通过HiveServer2提交SQL作业时需要进行权限校验,其他方式访问Hive将不会触发权限校验。

  • 支持权限校验的访问方式

    • 通过Beeline客户端访问HiveServer2。

    • 通过JDBC URL连接HiveServer2。

  • 不支持权限校验的访问方式

    • 通过Hive客户端直接连接Metastore。

    • 通过Hive-Client API直接连接Metastore。

重要

Ranger 权限控制仅针对 Hive 元数据及 SQL 操作层面生效,不支持对 OSS 或 OSS-HDFS 存储层进行权限控制。如需对存储层资源进行访问控制,请通过存储服务自身的权限机制(如 OSS Bucket Policy 或 RAM 策略)实现。

配置方法

  1. 进入集群服务页面。

    1. 登录EMR on ECS控制台

    2. 顶部菜单栏处,根据实际情况选择地域和资源组。

    3. 在单击目标集群操作列的集群服务

  2. Ranger启用Hive。

    1. 集群服务页面,单击Ranger-plugin服务区域的状态

    2. 服务概述区域,打开enableHive开关。

    3. 在弹出的对话框中,单击确定

  3. 重启HiveServer。

    1. 集群服务页面,选择more > Hive

    2. 组件列表区域,单击HiveServer操作列的重启

    3. 在弹出的对话框中,输入执行原因,单击确定

    4. 确认对话框中,单击确定

权限配置

基础介绍

Ranger权限配置需要在Ranger UI页面完成,进入Ranger UI页面,详情请参见Ranger概述

Ranger Hive权限需要单击HADOOP SQL下的emr-hive进行配置,如下图所示。hive power

进入emr-hive后,您能看到所有配置的权限列表,Ranger会默认添加一些权限Policy,例如默认Policy配置hive用户作为HiveServer服务的启动用户拥有所有Database、Table、Column、UDF和URL等资源的访问权限、所有用户都有Database的Create权限和在default Database下所有用户都有Create权限。

如果 Ranger UI 页面中未显示 emr-hive 服务入口,需要在 EMR 控制台的集群服务页面,单击 Ranger-plugin 服务区域的状态进入服务配置页,搜索 enableImpala 参数并将其设置为 true,保存配置后刷新 Ranger UI 页面即可正常显示 emr-hive 服务。

添加权限Policy

单击右上角的Add New Policy按钮能添加权限Policy。权限Policy需要在Policy Name中配置名称,并且所有Policy的名称不能重复。基础的权限配置需要填写Resource、User和Permission三个要素,Resource表示权限Policy管理的资源,例如Database、Table、Column、URL等,User表示权限Policy指定权限的用户、Permission表示权限Policy所管理的权限类型。

  • Policy Resource

    Ranger Hive中,Policy Resource主要包括databasetablecolumnurludf,表示对所填资源进行权限配置。默认情况下Policy中展示的是databasetablecolumn,您可以单击对应资源名称进行切换。

    配置权限Policy时,需要输入对应资源的名称,例如database填写testdbtable填写testcolumn填写idurl填写oss://test-bucket/test/tmp等。您也可以在输入框中输入星号*,表示所有的对应资源,如下所示。*

  • Policy User

    权限Policy需要配置User信息,可以在Select User列表中选择需要配置权限的用户,如下所示。User

  • Policy Permission

    单击Add Permissions,显示add/edit permissions,根据需要选中对应的permission,如下所示。permission

示例一:列权限配置

Ranger权限控制中最常用的一种情况是配置指定用户赋予表的Select权限,确保对应用户能够执行select columns from table操作。权限配置如下图所示:exmple

该Policy表示test用户具有database=testdbtable=testcolumn=idselect权限,拥有权限执行select id from testdb.test。如果您希望配置某个用户能够select testdb.test的所有列,可以将column配置为*即可。

示例二:表权限配置

Ranger Hive中表的创建权限可以配置到表级别,例如配置database=testdbtable=testcolumn=*Create权限时,用户仅具有test这张表的创建权限,不能创建其他表。如果您希望配置用户能在Database下自由创建所有表,需要配置database=testdb,table=*column=*Create权限,配置如下所示。Setting

示例三:URL权限配置

当您执行的Hive SQL语句中包含Location信息,且Location的Scheme为oss时,会检查Location的Write、Read权限。例如create external table test(id int, name string) location 'oss://test-bucket/test',会检查oss://test-bucket/test的Read权限。

此时,需要配置对URL的权限Policy,Resource切换为URL请参见上面添加权限Policy部分的内容,具体配置如下图。image

如果您不需要控制URL的权限,也可以在默认权限Policy Name中修改all - url的Policy,在Select Group中添加public,即表示所有用户都具有所有URL的读写权限,具体步骤如下图所示。

说明

public在Ranger中是一个特殊的group,表示所有用户,当Policy配置Select Grouppublic时,表示所有用户都对这条权限Policy生效。

public

常见问题

如何为只读账号配置 Ranger Hive 权限?

可以在 Ranger UI 中为只读账号创建仅含 Select 权限的 Policy,操作步骤如下:

  1. 在 Ranger UI 页面,单击 HADOOP SQL 下的 emr-hive 进入权限配置。

  2. 单击右上角的 Add New Policy

  3. Policy Name 中填写策略名称。

  4. 在 Resource 区域配置目标资源:database 填写目标数据库名称(支持通配符 * 表示所有数据库),table 填写目标表名称(支持通配符 *),column 填写 *

  5. Select User 中选择只读账号。

  6. 单击 Add Permissions,仅勾选 select 权限。

  7. 单击 Add 保存策略。

如果不确定只读账号的具体名称,可以在 Select User 下拉框中查看所有可选用户,或通过 Ranger 的 Audit 页面查询历史连接账号以确保覆盖。

EMR 4.9.0 版本是否支持使用 Ranger 控制 Impala 权限?

EMR 4.9.0 版本不支持通过 Ranger 控制 Impala 权限。如需通过 Ranger 控制 Impala 权限,建议升级至更高版本的 EMR 集群,或使用其他权限管理方案。