数据脱敏

背景与目标

在数据仓库建设过程当中,数据安全扮演着重要角色,由于隐私或敏感数据的泄露,会对数据主体(客户,员工和公司)的财产、名誉、人身安全、以及合法利益形成严重损害。所以咱们须要严格控制对仓库中的数据访问,即什么样的人员或者需求才能够访问到相关的数据。这就要求对数据自己的敏感程度进行安全级别划分。数据有了安全等级的划分,才能更好管理对数据访问控制,以此来保护好数据安全。前端

举个例子简单的说明下,例如咱们仓库中有一张关于注册用户的基本信息表User,其中有手机号mobile,昵称username两个字段。咱们在划分数据安全层级的时,将用户mobile的安全等级划分为L2要高于username的等级L1,并规定只有访问权限达到L2的运营部门才能访问mobile字段。这样在公司各个部门须要访问注册用户基本信息表User时,咱们只需检查访问者是否来自运营部门,若是是运营部能够访问mobile,若是不是只能访问username信息了。这样就有效的防止用户手机号被不相关工做人员泄露出去,同时也不影响查询用户username的需求。算法

可是每每在实际生产过程当中,应用场景会更加复杂,仅靠相似这样的访问控制,知足不了生产的须要,还须要结合其它的途径,而数据脱敏就是一种有效的方式,既能知足平常生产的须要,又能保护数据安全。安全

数据脱敏,具体指对某些敏感信息经过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。这样可使数据自己的安全等级降级,就能够在开发、测试和其它非生产环境以及外包或云计算环境中安全地使用脱敏后的真实数据集。借助数据脱敏技术,屏蔽敏感信息,并使屏蔽的信息保留其原始数据格式和属性,以确保应用程序可在使用脱敏数据的开发与测试过程当中正常运行。架构

敏感数据梳理

在数据脱敏进行以前,咱们首先要肯定哪些数据要做为脱敏的目标。咱们根据美团特有的业务场景和数据安全级别划分(绝密、高保密、保密、可公开,四个级别), 主要从“高保密”等级的敏感数据,开始进行梳理。app

这里咱们把敏感数据分红四个维度进行梳理,用户、商家、终端、公司。工具

  1. 从用户维度进行梳理可能有这些敏感字段以下:手机号码、邮件地址、帐号、地址、固定电话号码等信息(此外我的隐私数据相关还有如:种族、政治观点、宗教信仰、基因等)
  2. 从商家维度进行梳理:合同签定人,合同签定人电话等(不排除全局敏感数据:如商家团购品类等)
  3. 从用户终端维度进行梳理:可以可能标识终端的惟一性字段,如设备id。
  4. 从公司角度进行梳理:交易金额、代金卷密码、充值码等

肯定脱敏处理方法

梳理出了敏感数据字段,咱们接下来的工做就是如何根据特定的应用场景对敏感字段实施具体的脱敏处理方法。测试

常见的处理方法以下几种有:网站

  1. 替换:如统一将女性用户名替换为F,这种方法更像“障眼法”,对内部人员能够彻底保持信息完整性,但易破解。
  2. 重排:序号12345重排为54321,按照必定的顺序进行打乱,很像“替换”, 能够在须要时方便还原信息,但一样易破解。
  3. 加密:编号12345加密为23456,安全程度取决于采用哪一种加密算法,通常根据实际状况而定。
  4. 截断:13811001111截断为138,舍弃必要信息来保证数据的模糊性,是比较经常使用的脱敏方法,但每每对生产不够友好。
  5. 掩码: 123456 -> 1xxxx6,保留了部分信息,而且保证了信息的长度不变性,对信息持有者更易辨别, 如火车票上得身份信息。
  6. 日期偏移取整:20130520 12:30:45 -> 20130520 12:00:00,舍弃精度来保证原始数据的安全性,通常此种方法能够保护数据的时间分布密度。

但无论哪一种手段都要基于不一样的应用场景,遵循下面两个原则:云计算

1.remain meaningful for application logic(尽量的为脱敏后的应用,保留脱敏前的有意义信息) 2.sufficiently treated to avoid reverse engineer(最大程度上防止黑客进行破解)加密

以此次脱敏一个需求为例:

美团通常的业务场景是这样的,用户在网站上付款一笔团购单以后,咱们会将团购密码,发到用户对应的手机号上。这个过程当中,从用户的角度来看团购密码在未被用户消费以前,对用户来讲是要保密的,不能被公开的,其次美团用户的手机号也是要保密的,由于公开以后可能被推送一些垃圾信息,或者更严重的危害。从公司内部数据分析人员来看,他们有时虽然没有权限知道用户团购密码,可是他们想分析公司发送的团购密码数量状况,这是安全容许;再有数据分析人员虽然没有权限知道用户具体的手机号码,可是他们须要统计美团用户手机的地区分布状况,或者运营商分布差别,进而为更上层的决策提供支持。

根据这样的需求,咱们能够对团购密码作加密处理保证其惟一性,也保留其原有的数据格式,在保密的同时不影响数据分析的需求。一样,咱们将用户的手机号码的前7位,关于运营商和地区位置信息保留,后四位进行模糊化处理。这样一样也达到了保护和不影响统计的需求。

所以从实际出发遵循上面的两个处理原则,第一阶段咱们在脱敏工具集中,肯定了以下4种基本类型的脱敏方案(对应4个udf):

字段名称 方案 举例 原则
电话号码(moblie) 掩码 13812345678-> 13812340000 防止号码泄露,但保留运营商和地区信息 (惟一性,由前端绑定或者注册时约束)
邮件(email) 截断+ 加密 hxs@163.com -> 6225888e3a1d4a139f5f5db98d846102b2cd0d@163.com 保留邮件域信息
团购密码(code) 加密 4023926843399219 -> 1298078978 加密后在必定精度上保持惟一性,并与数据类型一致
设备号(deviceid) 加密 ffbacff42826302d9e832b7e907a212a -> b9c2a61972a19bf21b06b0ddb8ba642d 加密后保持惟一性

肯定实施范围与步骤

经过上面字段的梳理和脱敏方案的制定,咱们对美团数据仓库中涉及到得敏感字段的表进行脱敏处理。在数据仓库分层理论中,数据脱敏每每发生在上层,最直接的是在对外开放这一层面上。在实际应用中,咱们既要参考分层理论,又要从美团现有数据仓库生产环境的体系出发,主要在数据维度层(dim),以及基础服务数据层(fact)上实施脱敏。这样,咱们能够在下游相关数据报表以及衍生数据层的开发过程当中使用脱敏后的数据,从而避免出现数据安全问题。

确认处理的表和字段后,咱们还要确保相关上下游流程的正常运行, 以及未脱敏的敏感信息的正常产出与存储(经过更严格的安全审核来进行访问)。

以用户信息表user为例,脱敏步骤以下:

1.首先生产一份ndm_user未脱敏数据,用于未脱敏数据的正常产出。 2.对下游涉及的全部依赖user生产流程进行修改,来确保脱敏后的正常运行,这里主要是确认数据格式,以及数据源的工做。 3.根据对应的脱敏方法对user表中对应的字段进行脱敏处理。

总结

经过上面的几个步骤的实施,咱们完成了第一阶段的数据脱敏工做。在数据脱敏方案设计与实施过程当中, 咱们以为更重要的仍是从特定的应用场景出发进行总体设计,兼顾了数据仓库建设这一重要考量维度。数据脱敏实施为公司数据安全的推动,提供了有力支持。固然,咱们第一阶段脱敏的工具集还相对较少,须要补充。 脱敏的技术架构还有待完善和更加自动化。

本文关于数据安全和数据访问隔离的控制阐述较少,但愿经过之后的生产实践,继续为你们介绍。

相关文章
相关标签/搜索