本文介绍如何将Hive集成到Ranger,以及如何配置权限。
前提条件
Hive访问模型
- HiveServer2方式
- 场景: 您可以通过HiveServer2访问Hive数据。
- 方式:使用Beeline客户端或者JDBC代码通过HiveServer2执行Hive脚本。
- 权限设置:
Hive官方自带的Hive授权针对HiveServer2使用场景进行权限控制。
Ranger中对Hive的表或列级别的权限控制也是针对HiveServer2的使用场景。如果您还可以通过Hive Client或者HDFS访问Hive数据,仅对表或列层面做权限控制还不够,需要选择下面任一方式以进一步控制权限。
- Hive Client方式
- 场景: 您可以通过Hive Client访问Hive数据。
- 方式: 使用Hive Client访问。
- 权限设置
Hive Client会请求HiveMetaStore进行DDL操作,例如
Alter Table Add Columns
,也可以通过提交MapReduce作业读取并处理HDFS中数据。Hive官方自带的Hive授权可以针对Hive Client使用场景进行权限控制,它会根据SQL中表的HDFS路径的读写权限,来决定您是否可以进行DDL或DML操作,例如
ALTER TABLE test ADD COLUMNS(b STRING)
。由于Ranger可以对Hive表的HDFS路径进行权限控制,HiveMetaStore可以配置Storage Based Authorization,因此二者结合可以实现对Hive Client访问场景的权限控制。
说明 Hive Client场景的DDL操作权限通过底层HDFS控制权限 ,所以如果您有HDFS权限,则对应也会有表的DDL操作权限(例如Drop Table或Alter Table等)。
- HDFS方式
- 场景: 您可以通过HDFS访问数据。
- 方式: HDFS客户端或代码等。
- 权限设置:
您可以直接访问HDFS,需要对Hive表的底层HDFS数据增加HDFS的权限控制。
通过Ranger对Hive表底层的HDFS路径进行权限控制,详情请参见权限配置示例。
Hive集成Ranger
权限配置示例
例如给foo用户授予表testdb.test的a列Select权限。
在文档使用中是否遇到以下问题
更多建议
匿名提交