文档编写目的




在前面的文章中介绍了用Ranger对Hive中的行进行过滤以及针对列进行脱敏,在生产环境中有时候会有脱敏条件无法满足的时候,那么就需要使用自定义的UDF来进行脱敏,本文档介绍如何在Ranger中配置使用自定义的UDF进行Hive的列脱敏。

  • 测试环境

1.操作系统Redhat7.6

2.CDP DC7.0.3

3.集群已启用Kerberos

4.使用root用户操作


使用自定义UDF进行脱敏




2.1 授予表的权限给用户

1.在Ranger中创建策略,将ranger_test库下的t1表的select权限授予测试用户

0765-7.0.3-如何在Kerberos环境下用Ranger对Hive中的列使用自定义UDF脱敏_hive

0765-7.0.3-如何在Kerberos环境下用Ranger对Hive中的列使用自定义UDF脱敏_自定义_02


2.使用测试用户查询t1表

0765-7.0.3-如何在Kerberos环境下用Ranger对Hive中的列使用自定义UDF脱敏_自定义_03

目前用户ranger_user1拥有对t1表的select权限


2.2 授予使用UDF的权限给用户

1.将自定义UDF的jar包上传到服务器,并上传到HDFS,该自定义UDF函数的作用是将数字1-9按照a-j进行转换

0765-7.0.3-如何在Kerberos环境下用Ranger对Hive中的列使用自定义UDF脱敏_用户组_04


2.使用hive用户创建UDF函数

0765-7.0.3-如何在Kerberos环境下用Ranger对Hive中的列使用自定义UDF脱敏_hive_05


3.测试UDF函数的使用

0765-7.0.3-如何在Kerberos环境下用Ranger对Hive中的列使用自定义UDF脱敏_hive_06


4.使用测试用户登录Hive并使用UDF函数,提示没有权限

0765-7.0.3-如何在Kerberos环境下用Ranger对Hive中的列使用自定义UDF脱敏_用户组_07


5.创建策略,授予测试用户使用该UDF函数的权限

0765-7.0.3-如何在Kerberos环境下用Ranger对Hive中的列使用自定义UDF脱敏_用户组_08

0765-7.0.3-如何在Kerberos环境下用Ranger对Hive中的列使用自定义UDF脱敏_自定义_09


6.再次使用测试用户进行验证,使用UDF函数成功

0765-7.0.3-如何在Kerberos环境下用Ranger对Hive中的列使用自定义UDF脱敏_hive_10


2.3 配置使用自定义的UDF进行列脱敏

1.配置脱敏策略,使用自定义UDF的方式对phone列进行脱敏

0765-7.0.3-如何在Kerberos环境下用Ranger对Hive中的列使用自定义UDF脱敏_自定义_11

0765-7.0.3-如何在Kerberos环境下用Ranger对Hive中的列使用自定义UDF脱敏_自定义_12


2.使用ranger_user1查看t1表

0765-7.0.3-如何在Kerberos环境下用Ranger对Hive中的列使用自定义UDF脱敏_自定义_13

由上图可见,自定义UDF脱敏成功


总结




1.对于任何可用的UDF函数,都可以在配置脱敏策略时使用自定义的方式配置进策略中,然后指定用户/用户组进行脱敏。

2.在创建脱敏策略之前,需要先确保对应的用户/用户组已经拥有对表以及UDF函数的权限,否则脱敏策略不会默认授予用户/用户组对于表和UDF函数的权限。

3.在配置脱敏策略时,方式选择Custom,在输入框中填入UDF函数的使用方式即可,例如:function_name(arg)