Hive3.1.0结合Ranger1.1.0数据脱敏(行过滤Row-level Filter、列屏蔽Column Masking)

1. 概述

  • Ranger结合Hive组件对数据进行脱敏包括:行过滤Row Filter列屏蔽Column Masking两种方式。只对Select操作进行行列级别数据脱敏,进而实现对用户屏蔽敏感信息。

  • 注意:
    (1) 该功能只适用于HiveServer2使用场景(如:Beeline/JDBC/Hue等途径执行的Select);
    (2) 对Hive Cli(如:Hive -e)场景不适用;
    (3) 对直接读取Hive表的HDFS文件场景不适用;

2. 准备示例数据

2.1 数据准备

  • 对hive进行行过滤和列屏蔽操作,都根据以下数据进行:
    在这里插入图片描述

2.2 导入hive库

切换hive
[root@managerhd ~]# su - hive

创建数据文件,数据如上2.1
[hive@managerhd ~]$ vim ranger_hive.txt

创建hive数据库
[hive@managerhd ~]$ hive
0: jdbc:hive2://managerhd.bigdata:2181,master> create database if not exists ranger_hive;

查看数据库
0: jdbc:hive2://managerhd.bigdata:2181,master> show databases;

使用数据库
0: jdbc:hive2://managerhd.bigdata:2181,master> use ranger_hive;

创建数据表
0: jdbc:hive2://managerhd.bigdata:2181,master> create table ranger_hive.ranger_hive_row_column(id int,name_first String,name_last String,addr_country String,date_of_birth String, phone_num String) row format delimited fields terminated by ':' stored as textfile;

导入数据
0: jdbc:hive2://managerhd.bigdata:2181,master> load data local inpath '/home/hive/ranger_hive.txt' into table ranger_hive.ranger_hive_row_column;
如果导入数据时报错,请参考:https://blog.csdn.net/Happy_Sunshine_Boy/article/details/103971994

3.行过滤Row-level Filter

  • 新建用户:ranger_us
    • 集群节点执行:useradd ranger_us
  • 首先,先在ranger中配置用户ranger_us,有访问数据的权限;
    在这里插入图片描述
    在这里插入图片描述
  • 若只允许用户 ranger_us 查看addr_country="US"的数据,在Ranger上配置如下:
    在这里插入图片描述
    在这里插入图片描述
  • 登录hive方式1:

[root@masterhd hive]# beeline -n ranger_us -u jdbc:hive2://masterhd.bigdata:10000/ranger_hive;
0: jdbc:hive2://masterhd.bigdata:10000/ranger> select * from ranger_hive_row_column;

  • 登录hive方式2:

[root@masterhd hive]# su - ranger_us
[ranger_us@masterhd ~]$ hive
0: jdbc:hive2://managerhd.bigdata:2181,master> use ranger_hive;
0: jdbc:hive2://managerhd.bigdata:2181,master> select * from ranger_hive_row_column;

在这里插入图片描述

4.列屏蔽Column Masking

屏蔽选项 描述
Redact x屏蔽所有字母字符,用n屏蔽所有数字字符
Partial mask: show last 4 仅显示最后四个字符,其他用x代替
Partial mask: show first 4 仅显示前四个字符,其他用x代替
Hash 用哈希值替换原值
Nullify 用NULL值替换原值
Unmasked(retain original value) 原样显示
Date:show only year 仅显示日期字符串的年份部分,并将月份和日期默认为01/01
Custom 可使用任何有效Hive UDF(返回与被屏蔽的列中的数据类型相同的数据类型)来自定义策略

在这里插入图片描述
在这里插入图片描述

  • 登录hive方式1:

[root@masterhd hive]# beeline -n ranger_us -u jdbc:hive2://masterhd.bigdata:10000/ranger_hive;
0: jdbc:hive2://masterhd.bigdata:10000/ranger> select * from ranger_hive_row_column;

  • 登录hive方式2:

[root@masterhd hive]# su - ranger_us
[ranger_us@masterhd ~]$ hive
0: jdbc:hive2://managerhd.bigdata:2181,master> use ranger_hive;
0: jdbc:hive2://managerhd.bigdata:2181,master> select * from ranger_hive_row_column;

在这里插入图片描述

参考:
https://cwiki.apache.org/confluence/display/RANGER/Row-level+filtering+and+column-masking+using+Apache+Ranger+policies+in+Apache+Hive

发布了153 篇原创文章 · 获赞 122 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/Happy_Sunshine_Boy/article/details/103969287
今日推荐