温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢
1.文档编写目的
本文主要描述如何使用Sentry实现数据的脱敏(masking of sensitive data elements),高大上的叫法也就是Data Masking。数据脱敏主要是指将原始数据的全部或者部分敏感值进行替换。这样避免了用户未经授权而直接访问原始的值,并保留了底层数据的schema。
灵活的数据脱敏方案应该是底层数据真实的值没有被脱敏,当有用户查询数据时则判断是否屏蔽,取决于用户的具体权限。我们可以使用Sentry控制视图的权限来实现数据脱敏。
本文Fayson会以一个简单的实操例子来介绍如何使用Sentry实现Hive/Impala的数据脱敏。
1.环境准备及描述
2.创建脱敏视图
3.权限分配及测试
4.总结
1.CM和CDH版本为5.13.1
1.集群已启用Kerberos
2.集群已启用Sentry
2.环境准备
准备数据节点使用Hive的超级管理用户来创建employees表及employees_mask视图。
1.准备测试数据
[root@ip-172-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
(可左右滑动)
2.创建一个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-172-31-16-68 datamasking]# beeline
beeline> !connect jdbc:hive2://ip-172-31-24-169.ap-southeast-1.compute.internal:10099/;principal=hive/ip-172-31-24-169.ap-southeast-1.compute.internal@FAYSON.COM
(可左右滑动)
3.将数据加载到外部表employees的HDFS目录
[root@ip-172-31-16-68 ~]# cd datamasking/
[root@ip-172-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-172-31-16-68 datamasking]# hadoop fs -put employees.csv /extwarehouse/data/employees/
[root@ip-172-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-172-31-16-68 datamasking]#
(可左右滑动)
4.验证employees表数据是否正常
3.创建脱敏视图
1.通过视图的方式将employees表中的ssn数据进行脱敏处理,SQL如下:
CREATE VIEW employees_masked AS
SELECT key,
fullname,
CONCAT('***-**-', SUBSTR(ssn, 8, 4)) AS ssn,
"PRIVATE" AS salary
FROM employees;
(可左右滑动)
2.在命令行通过Beeline使用Hive管理员用户登录HiveServer2,进行创建视图操作
3.执行SQL查看视图数据
4.创建未脱敏视图
CREATE VIEW employees_unmasked AS
SELECT key, fullname, ssn, salary
FROM employees;
(可左右滑动)
查看未脱敏视图数据
4.权限分配及测试
如上图所示,我们现在访问数据一共有4个入口包括HDFS文件,表以及2个视图。最终用户不能访问文件或者表,仅仅被赋权访问视图,然后视图对应到相应的数据遮蔽逻辑。我们通过Sentry来控制Hive/Impala的表或视图的访问,通过Sentry的HDFS ACL同步功能防止用户绕过Hive/Impala去直接访问底层文件。
通过上图可以看出Group A可以访问视图employees_unmasked里未经遮蔽的数据,但是不能直接访问表employees,当然也不能访问底层文件。当然Group A也被授权可以访问视图employees_masked,比如他想将数据下发时做敏感数据脱敏,则也可以从这个视图里取出数据。
而Group B只能访问employees_masked视图里的数据,这个是有敏感数据被屏蔽了的,因为Sentry的控制,他没权限直接访问employees表或者通过HDFS文件去获取真实的被屏蔽的值。
1.创建faysona和faysonb用户对应上图的Group A和Group B
2.使用Hue管理员账号登录创建faysona和faysonb用户
3.使用hive用户登录Hue给faysona和faysonb用户分别授权
4.使用faysona用户登录Hue查看employees_unmasked和employees_masked视图数据
Hive引擎查询employees_masked脱敏视图数据
Hive引擎查询employees_unmasked未脱敏视图
Impala引擎查询employees_masked脱敏视图数据
Impala引擎查询employees_unmasked未脱敏视图数据
在命令行使用faysona用户访问employees表的数据文件
[root@ip-172-31-16-68 ~]# kinit faysona
[root@ip-172-31-16-68 ~]# hadoop fs -cat /extwarehouse/data/employees/employees.csv
(可左右滑动)
5.使用faysonb用户登录Hue
Impala引擎查询employees_masked脱敏视图数据
Hive引擎查询employees_masked脱敏视图数据
在命令行使用faysonb用户访问employees表的数据文件
[root@ip-172-31-16-68 ~]# kinit faysonb
[root@ip-172-31-16-68 ~]# hadoop fs -cat /extwarehouse/data/employees/employees.csv
(可左右滑动)
5.总结
参考:
http://blog.cloudera.com/blog/2013/07/with-sentry-cloudera-fills-hadoops-enterprise-security-gap/
提示:代码块部分可以左右滑动查看噢 为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操