前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用Sentry实现Hive/Impala的数据脱敏

如何使用Sentry实现Hive/Impala的数据脱敏

作者头像
Fayson
修改2018-04-01 18:25:05
3.2K0
修改2018-04-01 18:25:05
举报
文章被收录于专栏:Hadoop实操

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 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.准备测试数据

代码语言:txt
复制
[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外部表

代码语言:txt
复制
CREATE EXTERNAL TABLE employees
(key INT, fullname STRING, ssn STRING, salary FLOAT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/extwarehouse/data/employees/';

(可左右滑动)

在命令行是用beeline连接HiveServer2

代码语言:txt
复制
[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目录

代码语言:txt
复制
[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如下:

代码语言:txt
复制
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.创建未脱敏视图

代码语言:txt
复制
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表的数据文件

代码语言:txt
复制
[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表的数据文件

代码语言:txt
复制
[root@ip-172-31-16-68 ~]# kinit faysonb
[root@ip-172-31-16-68 ~]# hadoop fs -cat /extwarehouse/data/employees/employees.csv

(可左右滑动)

5.总结


  • 为Hive数据进行脱敏处理可以使用regexp_replace()函数通过正则表达式的方式敏感数据屏蔽,也可以通过自定义的UDF函数来等方式来实现敏感数据脱敏。
  • 通过脱敏SQL创建视图,使用Sentry权限控制将脱敏数据的视图提供给不同的用户访问
  • 授权访问视图(即使授权ALL)的用户也无权限访问相应表的底层数据文件。

参考:

http://blog.cloudera.com/blog/2013/07/with-sentry-cloudera-fills-hadoops-enterprise-security-gap/

提示:代码块部分可以左右滑动查看噢 为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档