文档编写目的
本篇文章主要介绍如何在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用户,用于授权测试使用
2.使用hive用户登陆Beeline,创建一个测试库以及一个测试表,并将测试数据导入表中
·使用hive用户登陆Kerberos并连接Beeline
·创建测试库和测试表
·将测试数据load到测试表中
2.2 测试Ranger中对于Hive的各种授权
2.2.1 授权前测试
1.使用ranger_user1登陆Kerberos并链接Beeline进行测试
由上图可以看出,ranger_user1在ranger_test库中只有一个show tables的权限,其他SELECT、UPDATE、DROP等权限都没有。
2.2.2 测试select权限
1.新建策略如下:
配置完成后保存策略
2.使用ranger_user1进行测试如下:
由上图可知,授予的select权限成功
3.修改策略,针对字段进行授权
4.对基于字段的授权进行验证
由上图可见,由于只授予了name字段的select权限,所以只能查看name字段。
2.2.3 测试update权限
1.修改策略如下:
修改完成后保存策略
2.使用ranger_user1进行测试如下:
由此可见,授予的update权限成功
2.2.4 测试drop权限
1.修改策略如下:
2.进行drop操作
可以看到,drop权限赋予成功
2.2.5 测试create权限
1.未修改策略前,使用ranger_user1进行create操作
2.修改策略如下:
修改完成后保存策略
3.使用ranger_user1进行create操作
由上图可知,授予的create权限成功
2.2.6 测试alter权限
1.未修改策略前,进行alter操作
2.修改策略如下:
3.进行alter操作
由上图可见,alter权限赋予成功
2.3 Ranger授权Hive与HDFS权限
1.授予用户ranger_user1对ranger_test库下所有表的所有权限
2.使用用户ranger_user1查看对应的HDFS路径
可以看到,授予了ranger_user1对于ranger_test库的所有权限后,仍然无法查看对应的HDFS路径
3.创建HDFS中的策略,授予用户ranger_user1对于ranger_test库所在HDFS路径的权限
4.再次使用ranger_test1查看库所对应的HDFS路径
由上图可见,查看成功
总结
1.在Ranger中,针对Hive中表的insert操作对应的权限是update,并不是write权限。
2.在Ranger中有一些默认存在的策略,对于hive、impala、hue等系统用户,默认拥有所有的权限,默认的策略允许所有用户创建数据库,以及所有用户在default库下拥有查询和建表权限。
3.在Ranger中赋予用户Hive中库和表的权限,并不会使用户拥有对应的HDFS权限,如果需要访问HDFS路径,还是需要通过Ranger给HDFS授权。