本文介绍了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的读写权限,具体步骤如下图所示。