文档编写目的




本篇文章主要介绍如何在CDP DC7.0.3集群中使用Ranger给Hive授权,包括对Hive中的数据库、表、列的授权。

  • 测试环境

1.操作系统Redhat7.6

2.CDP DC7.0.3

3.集群已启用Kerberos

4.使用root用户操作


使用Ranger为Hive授权




2.1 测试前置准备

1.在集群内所有节点创建两个用户ranger_user1,并创建对应的Kerberos用户,用于授权测试使用

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hive

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hive_02


2.使用hive用户登陆Beeline,创建一个测试库以及一个测试表,并将测试数据导入表中

·使用hive用户登陆Kerberos并连接Beeline

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hdfs_03


·创建测试库和测试表

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hdfs_04

·将测试数据load到测试表中

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hive_05


2.2 测试Ranger中对于Hive的各种授权





2.2.1 授权前测试

1.使用ranger_user1登陆Kerberos并链接Beeline进行测试

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_06

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hdfs_07

由上图可以看出,ranger_user1在ranger_test库中只有一个show tables的权限,其他SELECT、UPDATE、DROP等权限都没有。



2.2.2 测试select权限

1.新建策略如下:

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_08

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_09


配置完成后保存策略

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_10


2.使用ranger_user1进行测试如下:

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hdfs_11


由上图可知,授予的select权限成功

3.修改策略,针对字段进行授权

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_12


4.对基于字段的授权进行验证

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_13

由上图可见,由于只授予了name字段的select权限,所以只能查看name字段。



2.2.3 测试update权限

1.修改策略如下:

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hive_14


修改完成后保存策略

2.使用ranger_user1进行测试如下:

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hdfs_15

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_16

由此可见,授予的update权限成功



2.2.4 测试drop权限

1.修改策略如下:

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hive_17


2.进行drop操作

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hive_18

可以看到,drop权限赋予成功



2.2.5 测试create权限

1.未修改策略前,使用ranger_user1进行create操作

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_19


2.修改策略如下:

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hdfs_20

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hive_21


修改完成后保存策略

3.使用ranger_user1进行create操作

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hive_22

由上图可知,授予的create权限成功



2.2.6 测试alter权限

1.未修改策略前,进行alter操作

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_23


2.修改策略如下:

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hdfs_24


3.进行alter操作

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hive_25

由上图可见,alter权限赋予成功


2.3 Ranger授权Hive与HDFS权限

1.授予用户ranger_user1对ranger_test库下所有表的所有权限

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_26

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_27


2.使用用户ranger_user1查看对应的HDFS路径

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_28

可以看到,授予了ranger_user1对于ranger_test库的所有权限后,仍然无法查看对应的HDFS路径


3.创建HDFS中的策略,授予用户ranger_user1对于ranger_test库所在HDFS路径的权限

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_29

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_字段_30


4.再次使用ranger_test1查看库所对应的HDFS路径

0768-7.0.3-如何在Kerberos环境下用Ranger给Hive授权_hive_31

由上图可见,查看成功


总结





1.在Ranger中,针对Hive中表的insert操作对应的权限是update,并不是write权限。

2.在Ranger中有一些默认存在的策略,对于hive、impala、hue等系统用户,默认拥有所有的权限,默认的策略允许所有用户创建数据库,以及所有用户在default库下拥有查询和建表权限。

3.在Ranger中赋予用户Hive中库和表的权限,并不会使用户拥有对应的HDFS权限,如果需要访问HDFS路径,还是需要通过Ranger给HDFS授权。