文档编写目的
在前面的文章中介绍了用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权限授予测试用户
![99611057816ceabb85fddb3ef22c0ebf.png](https://img-blog.csdnimg.cn/img_convert/99611057816ceabb85fddb3ef22c0ebf.png)
![e46756940371eec1bd55772bbb22a5e5.png](https://img-blog.csdnimg.cn/img_convert/e46756940371eec1bd55772bbb22a5e5.png)
2.使用测试用户查询t1表
![5ba92dc0a38fa69e31cdb34ad60ef2e9.png](https://img-blog.csdnimg.cn/img_convert/5ba92dc0a38fa69e31cdb34ad60ef2e9.png)
目前用户ranger_user1拥有对t1表的select权限
2.2 授予使用UDF的权限给用户
1.将自定义UDF的jar包上传到服务器,并上传到HDFS,该自定义UDF函数的作用是将数字1-9按照a-j进行转换
![2dcaec3c5c78545e64648b45a9ae919c.png](https://img-blog.csdnimg.cn/img_convert/2dcaec3c5c78545e64648b45a9ae919c.png)
2.使用hive用户创建UDF函数
![088aae0da3f86fd675703b6cc8873a86.png](https://img-blog.csdnimg.cn/img_convert/088aae0da3f86fd675703b6cc8873a86.png)
3.测试UDF函数的使用
![42253309e951a281d88607d62227213f.png](https://img-blog.csdnimg.cn/img_convert/42253309e951a281d88607d62227213f.png)
4.使用测试用户登录Hive并使用UDF函数,提示没有权限
![0e49016adab57cd6779bdff4d238be45.png](https://img-blog.csdnimg.cn/img_convert/0e49016adab57cd6779bdff4d238be45.png)
5.创建策略,授予测试用户使用该UDF函数的权限
![369d621a511b89daae016c7001f38e7b.png](https://img-blog.csdnimg.cn/img_convert/369d621a511b89daae016c7001f38e7b.png)
![6391714603066224405dd37fc23d96eb.png](https://img-blog.csdnimg.cn/img_convert/6391714603066224405dd37fc23d96eb.png)
6.再次使用测试用户进行验证,使用UDF函数成功
![e53ed291efb5acc8829b9259260bac67.png](https://img-blog.csdnimg.cn/img_convert/e53ed291efb5acc8829b9259260bac67.png)
2.3 配置使用自定义的UDF进行列脱敏
1.配置脱敏策略,使用自定义UDF的方式对phone列进行脱敏
![d82121820a45438c60957ca477ebcd8d.png](https://img-blog.csdnimg.cn/img_convert/d82121820a45438c60957ca477ebcd8d.png)
![f4799bc6256dd57182a73683d25e1663.png](https://img-blog.csdnimg.cn/img_convert/f4799bc6256dd57182a73683d25e1663.png)
2.使用ranger_user1查看t1表
![9d54b7ec510594515c16d7a2c6d18dfa.png](https://img-blog.csdnimg.cn/img_convert/9d54b7ec510594515c16d7a2c6d18dfa.png)
由上图可见,自定义UDF脱敏成功
总结
1.对于任何可用的UDF函数,都可以在配置脱敏策略时使用自定义的方式配置进策略中,然后指定用户/用户组进行脱敏。
2.在创建脱敏策略之前,需要先确保对应的用户/用户组已经拥有对表以及UDF函数的权限,否则脱敏策略不会默认授予用户/用户组对于表和UDF函数的权限。
3.在配置脱敏策略时,方式选择Custom,在输入框中填入UDF函数的使用方式即可,例如:function_name(arg)