79.1 演示环境介绍
- CM和CDH版本:5.13.1
- 已启用Kerberos
- 已启用Sentry
79.2 操作演示
测试数据
[root@ip-186-31-16-68 datamasking]# vim employees.csv
1,John Smith,123-55-4567,25000.0
2,Jim Bloggs,999-88-7777,35000.0
3,Jane Doe,808-88-0880,45000.0
创建Hive外部表
CREATE EXTERNAL TABLE employees
(key INT, fullname STRING, ssn STRING, salary FLOAT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/extwarehouse/data/employees/';
用beeline连接HiveServer2
[root@ip-186-31-16-68 datamasking]# beeline
beeline> !connect jdbc:hive2://ip-186-31-24-169.ap-southeast-1.compute.internal:10099/;principal=hive/ip-186-31-24-169.ap-southeast-1.compute.internal@FAYSON.COM
将数据加载到外部表employees的HDFS目录
[root@ip-186-31-16-68 ~]# cd datamasking/
[root@ip-186-31-16-68 datamasking]# ll
total 8
-rw-r--r-- 1 root root 97 Mar 15 23:12 employees.csv
-rw-r--r-- 1 root root 173 Mar 15 23:22 employees.sql
[root@ip-186-31-16-68 datamasking]# hadoop fs -put employees.csv /extwarehouse/data/employees/
[root@ip-186-31-16-68 datamasking]# hadoop fs -ls /extwarehouse/data/employees/
Found 1 items
-rwxrwx--x+ 3 hive hive 97 2018-03-15 23:28 /extwarehouse/data/employees/employees.csv
[root@ip-186-31-16-68 datamasking]#
通过视图的方式将employees表中的ssn数据进行脱敏处理,SQL如下:
CREATE VIEW employees_masked AS
SELECT key,
fullname,
CONCAT('***-**-', SUBSTR(ssn, 8, 4)) AS ssn,
"PRIVATE" AS salary
FROM employees;
- 在命令行通过Beeline使用Hive管理员用户登录HiveServer2,进行创建视图操作
- 执行SQL查看视图数据
- 创建脱敏视图
- 查看未脱敏视图数据
CREATE VIEW employees_unmasked AS
SELECT key, fullname, ssn, salary
FROM employees;
- 权限分配及测试
- 创建faysona和faysonb用户对应上图的Group A和Group B
- Hue管理员账号登录创建faysona和faysonb用户
- 在命令行使用faysona用户访问employees表的数据文件
- hive用户登录Hue给faysona和faysonb用户分别授权
- faysona用户登录Hue查看employees_unmasked和employees_masked视图数据
- fHive引擎查询employees_masked脱敏视图数据
- Hive引擎查询employees_unmasked未脱敏视图
- Impala引擎查询employees_masked脱敏视图数据
- Impala引擎查询employees_unmasked未脱敏视图数据
- 在命令行使用faysona用户访问employees表的数据文件
[root@ip-186-31-16-68 ~]# kinit faysona
[root@ip-186-31-16-68 ~]# hadoop fs -cat /extwarehouse/data/employees/employees.csv
- 总结
- 为Hive数据进行脱敏处理可以使用regexp_replace()函数通过正则表达式的方式敏感数据屏蔽,也可以通过自定义的UDF函数来等方式来实现敏感数据脱敏
- 通过脱敏SQL创建视图,使用Sentry权限控制将脱敏数据的视图提供给不同的用户访问
- 授权访问视图(即使授权ALL)的用户也无权限访问相应表的底层数据文件
大数据视频推荐:
腾讯课堂
CSDN
大数据语音推荐:
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通