本文介绍了 Hive 如何开启 Ranger 权限控制,以及详细的 Ranger Hive 权限配置示例进行说明。
前提条件
已创建 DataLake 集群,并选择了 Ranger 服务,创建集群详情请参见 创建集群 。
注意事项
-
支持权限校验的访问方式
- 通过 Beeline 客户端访问 HiveServer2。
- 通过 JDBC URL 连接 HiveServer2。
-
不支持权限校验的访问方式
- 通过 Hive 客户端直接连接 Metastore。
- 通过 Hive-Client API 直接连接 Metastore。
配置方法
-
进入集群服务页面。
- 登录 EMR on ECS 控制台 。
- 顶部菜单栏处,根据实际情况选择地域和资源组。
- 在 集群管理 页面,单击目标集群操作列的 集群服务 。
-
Ranger
启用
Hive。
- 在 集群服务 页面,单击 Ranger-plugin 服务区域的 状态 。
- 在 服务概述 区域,打开 enableHive 开关。
- 在弹出的对话框中,单击 确定 。
-
重启
HiveServer。
- 在 集群服务 页面,选择 。
- 在 组件列表 区域,单击 HiveServer 操作列的 重启 。
- 在弹出的对话框中,输入 执行原因 ,单击 确定 。
- 在 确认 对话框中,单击 确定 。
权限配置
基础介绍
Ranger 权限配置需要在 Ranger UI 页面完成,进入 Ranger UI 页面,详情请参见 Ranger 概述 。

进入 emr-hive 后,您能看到所有配置的权限列表,Ranger 会默认添加一些权限 Policy,例如默认 Policy 配置 hive 用户作为 HiveServer 服务的启动用户拥有所有 Database、Table、Column、UDF 和 URL 等资源的访问权限、所有用户都有 Database 的 Create 权限和在 default Database 下所有用户都有 Create 权限。
添加权限 Policy
-
Policy Resource
Ranger Hive 中,Policy Resource 主要包括 database 、 table 、 column 、 url 、 udf ,表示对所填资源进行权限配置。默认情况下 Policy 中展示的是 database 、 table 和 column ,您可以单击对应资源名称进行切换。
配置权限 Policy 时,需要在 Resource 输入框 中输入对应资源的名称,例如 database 填写 testdb 、 table 填写 test 、 column 填写 id 和 url 填写 oss://test-bucket/test/tmp 等。您也可以在输入框中输入星号 * ,表示所有的对应资源,如下所示。 -
Policy User
权限 Policy 需要配置 User 信息,可以在 Select User 列表中选择需要配置权限的用户,如下所示。
-
Policy Permission
单击 Add Permissions ,显示 add/edit permissions ,根据需要选中对应的 permission ,如下所示。
示例一:列权限配置
select columns from table
操作。权限配置如下图所示:

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

示例三: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
的
Write
权限。

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