0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏


文档编写目的
本篇文章主要介绍如何在CDP DC7.0.3集群中使用Ranger在Hive中进行行过滤及列脱敏 , 行级别的过滤相当于一个强制性的where子句 , 例如在订单表中 , 员工仅被允许查看自己所在地区的订单 , 其他区域的无法查看 。 列脱敏可以对某些敏感信息的列进行数据屏蔽 , 例如身份证号可以屏蔽中间的八位 。

  • 测试环境
1.操作系统Redhat7.6
2.CDP DC7.0.3
3.集群已启用Kerberos
4.使用root用户操作
使用Ranger配置Hive中的行过滤
2.1 对表配置单个行过滤条件
在配置Hive中的行过滤前 , 需要确保授权的用户/用户组已有对要过滤的表的访问权限 , 即在授权给ranger_user1用户对表t1的行过滤策略前 , ranger_user1需要对t1有访问权限 。
1.配置ranger_user1对表t1的访问策略
0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图

0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图

配置完成后保存
2.使用ranger_user1查询t1表
0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图

0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图
用户ranger_test1对表t1有select权限 , 一共查询出7条记录
3.配置行过滤策略
0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图

0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图

0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图

配置完成后保存
4.使用用户ranger_test1再次访问t1表
0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图

可以看到 , 此时name=Tom的那条数据已经被过滤 , 查询结果只有6条数据 。
2.2 对表配置多个行过滤条件
针对同一个表中可以配置多个行过滤条件 , 例如每个租户只能看到自己的数据行 , 下面测试对同一个表配置多个行过滤条件 。
1.在所有节点创建一个新的测试用户ranger_user2 , 并创建Kerberos用户
0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图

0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图

2.修改访问表t1的策略 , 以及行过滤策略
·访问策略修改 , 加入ranger_user2
0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图

·行过滤策略修改 , 加入对ranger_user2的过滤条件
0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图

3.使用ranger_user2查询t1表
0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图

可以看到ranger_user2无法查看到name=Eric的这一条数据
4.再次使用ranger_user1查询t1表
0769-如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏
本文插图

可以看到ranger_user1仍然无法查看到name=Tom的这一条数据
由此可见 , 针对同一个表配置的多个行过滤条件均生效 。


推荐阅读