一、定义
数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。数据安全技术之一,数据库安全技术主要包括:数据库漏扫、数据库加密、数据库防火墙、数据脱敏、数据库安全审计系统。
数据库安全风险包括:拖库、刷库、撞库。
通过数据脱敏产品,可以有效防止企业内部对隐私数据的滥用,防止隐私数据在未经脱敏的情况下从企业流出。满足企业既要保护隐私数据,同时又保持监管合规,满足企业合规性。
- 但无论如何,脱敏需要遵循以下原则:
1.remain meaningful for application logic(尽可能的为脱敏后的应用,保留脱敏前的有意义信息)
2.sufficiently treated to avoid reverse engineer(最大程度上防止黑客进行破解)
(via .wiki)
二、分类
1. 静态脱敏
- 将数据抽取出生产环境脱敏后分发至测试、开发等场景。
- 脱敏后数据与生产环境相隔离,满足业务需求的同时保障生产数据库的安全。
2. 动态脱敏
- 在查询语句执行过程中,根据生效条件是否满足,实现实时的脱敏处理。
- 一般用在生产环境,访问敏感数据时实时进行脱敏,因为有时在不同情况下对于同一敏感数据的读取,需要做不同级别的脱敏处理。
- 需要注意的是,在抹去数据中的敏感内容同时,也需要保持原有的数据特征、业务规则和数据关联性,保证我们在开发、测试以及数据分析类业务不会受到脱敏的影响,使脱敏前后的数据一致性和有效性。
三、方案
1. 替换
- 随机值替换,字母变为随机字母,数字变为随机数字,文字随机替换文字的方式来改变敏感数据,这种方案的优点在于可以在一定程度上保留原有数据的格式,往往这种方法用户不易察觉的。如统一将用户名中的“张”替换为A,这种方法更像“障眼法”,对内部人员可以完全保持信息完整性,但易破解。
2. 无效化
- 无效化方案在处理待脱敏的数据时,通过对字段数据值进行 截断、加密、隐藏 等方式让敏感数据脱敏,使其不再具有利用价值。一般采用特殊字符(*等)代替真值,这种隐藏敏感数据的方法简单,但缺点是用户无法得知原数据的格式,如果想要获取完整信息,要让用户授权查询。如遮盖手机号的中间四位、身份证号中间部分等。
3. 置乱
- 对敏感数据列的值进行重新随机分布,混淆原有值和其他字段的联系。这种方法不影响原有数据的统计特性,如最大/ 最小/ 方差等均与原数据无异。
4. 均值
- 平均值方案经常用在统计场景,针对数值型数据,我们先计算它们的均值,然后使脱敏后的值在均值附近随机分布,从而保持数据的总和不变。通常用于产品成本表、工资表等场合。
5. 对称加密
- 通过给原始数据增加salt值来实现数据的可逆,多用于密码存储等场景。对称加密是一种特殊的可逆脱敏方法,通过加密密钥和算法对敏感数据进行加密,密文格式与原始数据在逻辑规则上一致,通过密钥解密可以恢复原始数据,要注意的就是密钥的安全性。
6. 偏移
- 这种方式通过随机移位改变数字数据,偏移取整在保持了数据的安全性的同时保证了范围的大致真实性,比之前几种方案更接近真实数据,在大数据分析场景中意义比较大。
四、 案例
美团一般的业务场景是这样的,用户在网站上付款一笔团购单之后,我们会将团购密码,发到用户对应的手机号上。这个过程中,从用户的角度来看团购密码在未被用户消费之前,对用户来说是要保密的,不能被公开的,其次美团用户的手机号也是要保密的,因为公开之后可能被推送一些垃圾信息,或者更严重的危害。从公司内部数据分析人员来看,他们有时虽然没有权限知道用户团购密码,但是他们想分析公司发送的团购密码数量情况,这是安全允许;再有数据分析人员虽然没有权限知道用户具体的手机号码,但是他们需要统计美团用户手机的地区分布情况,或者运营商分布差异,进而为更上层的决策提供支持。
根据这样的需求,我们可以对团购密码做加密处理保证其唯一性,也保留其原有的数据格式,在保密的同时不影响数据分析的需求。同样,我们将用户的手机号码的前7位,关于运营商和地区位置信息保留,后四位进行模糊化处理。这样同样也达到了保护和不影响统计的需求。
因此从实际出发遵循上面的两个处理原则,第一阶段我们在脱敏工具集中,确定了如下4种基本类型的脱敏方案(对应4个udf):
字段名称 | 方案 | 举例 | 原则 |
---|---|---|---|
电话号码(moblie) | 掩码 | 13812345678-> 13812340000 | 防止号码泄露,但保留运营商和地区信息 (唯一性,由前端绑定或者注册时约束) |
邮件(email) | 截断+ 加密 | hASD121@11.com -> 6225881323a1d4a139f5f124d846102b423d0d@163.com | 保留邮件域信息 |
团购密码(code) | 加密 | 4023926843399219 -> 1298078978 | 加密后在一定精度上保持唯一性,并与数据类型一致 |
设备号(deviceid) | 加密 | ffbacff428263q12da832b7e907a212a -> b9c2a619sdq19bf21b06b0ddb8ba642d | 加密后保持唯一性 |
确定实施范围与步骤
通过上面字段的梳理和脱敏方案的制定,我们对美团数据仓库中涉及到得敏感字段的表进行脱敏处理。在数据仓库分层理论中,数据脱敏往往发生在上层,最直接的是在对外开放这一层面上。在实际应用中,我们既要参考分层理论,又要从美团现有数据仓库生产环境的体系出发,主要在数据维度层(dim),以及基础服务数据层(fact)上实施脱敏。这样,我们可以在下游相关数据报表以及衍生数据层的开发过程中使用脱敏后的数据,从而避免出现数据安全问题。
确认处理的表和字段后,我们还要确保相关上下游流程的正常运行, 以及未脱敏的敏感信息的正常产出与存储(通过更严格的安全审核来进行访问)。
以用户信息表user为例,脱敏步骤如下:
1.首先生产一份ndm_user未脱敏数据,用于未脱敏数据的正常产出。
2.对下游涉及的所有依赖user生产流程进行修改,来确保脱敏后的正常运行,这里主要是确认数据格式,以及数据源的工作。
3.根据对应的脱敏方法对user表中对应的字段进行脱敏处理。