数据脱敏是一种采用专门的脱敏算法对敏感数据进行变形、屏蔽、替换、随机化、加密,并将敏感数据转化为虚构数据的技术。按照作用位置、实现原理,数据脱敏可以划分为静态数据脱敏(Static Data Masking, SDM)和动态数据脱敏(Dynamic Data Masking, DDM)技术。
静态脱敏一般用于非生产环境,在不能将敏感数据存储于非生产环境的场合中,通过脱敏程序转换生产数据,使数据内容及数据间的关联能够满足测试、开发中的问题排查需要,也可以进行数据分析、数据挖掘等分析活动。而动态脱敏通常用于生产环境,在敏感数据被低权限用户访问时对其进行脱敏,并能够根据策略执行相应的脱敏方法。静态脱敏与动态脱敏的区别在于是否在使用敏感数据时才进行脱敏,这个区别影响了脱敏规则对应的脱敏算法、脱敏策略以及脱敏操作的执行位置。
静态脱敏技术原理主要是通过内置规则来自动识别敏感数据,通过内置的脱敏算法对数据进行漂白。针对数据库的脱敏技术使用两种方法来识别敏感数据,第一种是通过人工指定,比如通过正则表达式来指定敏感数据的格式;第二种为自动识别,该方式是基于敏感数据的特征来进行自动识别的,此方式一般不需要用户编写正则表达式的格式来指定敏感数据,而是基于聚类算法,自动对数据进行识别和分类。常规的静态脱敏用来识别一些涉及个人隐私的敏感数据,比如信用卡号、ID、手机号、电子邮箱、IP地址、住址等。
识别出敏感数据之后,就需要使用脱敏算法来进行脱敏。在比较常见的数据脱敏系统中,都内置了丰富和高效率的脱敏算法。算法的选择一般是通过手工指定,对常见数据如姓名、证件号、银行账户、金额、日期、住址、电话号码、Email地址、车牌号、车架号、企业名称、工商注册号、组织机构代码、纳税人识别号等敏感数据进行脱敏。常用的内置脱敏算法有同义替换、部分数据遮蔽、混合屏蔽和可逆脱敏等。
动态脱敏通常适用于大数据应用环境。在大数据环境中,面对海量、异构、需要实时处理的数据,如何能够在不影响数据使用的条件下,在用户层面实现数据屏蔽、加密、隐藏、审计或内容封锁是动态脱敏技术的目标。动态脱敏根据安全等级要求,按照用户角色、职责和其他规则对敏感数据进行变换。动态脱敏技术对大数据应用的合规性来说至关重要。
动态数据脱敏技术目前主流的实现机制是基于代理的实现机制。用户的数据请求被代理实时在线拦截并经脱敏后返回。这种机制的脱敏判断是在数据容器外实现的,对用户及应用程序完全透明,因而能够适用于非关系型数据库,如大数据环境。
上图展示了动态脱敏技术原理。外部有三类数据请求来源,分别是内部应用系统、外部应用系统(如报表)和数据管理应用(迁移、备份等)。动态数据代理请求系统对数据的请求来源进行识别,针对内部应用执行bypaas查询,不进行脱敏运算。对于报表类或其他业务类请求,针对不同的数据库类型采用不同的脱敏算法,经过代理请求系统返回的数据即是脱敏后的数据。假设后端访问的是关系型数据库,代理请求系统将执行的SQL请求进行变形,执行内置的脱敏函数,对返回的数据进行脱敏,返回合规的脱敏后的数据。