ITPub博客

首页 > 应用开发 > IT综合 > 利用 Optim TDM 解决方案实现随需的数据漂白项目

利用 Optim TDM 解决方案实现随需的数据漂白项目

IT综合 作者:yhou31 时间:2015-05-15 14:22:25 0 删除 编辑

数据漂白是保护测试数据的有效手段

由于业务上的需要,很多企业需要在非生产环境中使用生产系统的真实业务数据,比如在测试系统中用真实数据运行各项测试用例、在培训系统中用业务数据进行演示等等。而往往在非生产环境中不具备生产环境中的各项数据保护措施,如权限控制、访问控制等等,使得在这些环境中对生产数据的保护面临严峻的挑战。再加上测试环节的复杂性,如引入第三方测试伙伴,数据分发过程等,数据安全更加难以保证,数据泄露的风险很高。从 Optim 测试数据管理以及数据隐私保护项目的运行经验看,在非生产系统中使用真实数据进行测试前,先将数据漂白然后再分发、使用是保护数据的有效方式。数据漂白 ( 又叫数据脱敏或数据变形 ) 是指在非生产环境中将涉及个人隐私或其它需要保护的敏感业务数据,进行移除、屏蔽以及转换的一系列系统过程,目的是将敏感数据进行脱敏处理,以达到对其保护的目的。数据漂白需要明确数据漂白范围、确定数据漂白需求,以及实现有效的数据漂白技术。

常见敏感数据的类别

什么样的数据是敏感数据?这个问题的答案,当然是根据不同业务系统的特点、测试背景而各不相同。通常可能被视为敏感数据的业务数据包含客户个人隐私数据以及某些关键的敏感业务数据:

  • 个人隐私数据 : 姓名,身份证号码,地址,电话号码 / 联系电话,邮箱地址,所属城市,邮编号码等。
  • 其他敏感业务数据(关键业务数据):组织机构名称,客户账号信息 ( 银行账号等 ) ,营业执照号码,交易日期,识别码 ( 交易号、系统唯一 ID 等 ),密码类 ( 如账户查询密码、取款密码等 )。

具体数据漂白项目中涉及的敏感数据范围,需要由业务人员以及漂白项目人员共同确定。明确敏感数据范围之后,下一个问题需要确定数据漂白的具体需求,即明确数据漂白要做到什么程度、漂白成什么样的目标数据。

数据漂白需求以及常见的三对矛盾

数据漂白对数据安全、数据质量、漂白效率等各个方面都有不同的要求,而各个需求之间有相互关联的特点:

  • 去隐私化与保持真实性:数据漂白的基本原则是对隐私数据进行脱敏处理,然而过度的处理往往会带来负面的问题:数据失去了原有的格式以及含义,不满足测试对数据保持仿真度的要求。比如在客服培训系统中如果将客户姓名“张三”转换为随意汉字组合或者乱码序列“A%#LK 嗑”,将会使培训人员不易识别甚至带来困惑,从而影响培训效果。因此,数据漂白在脱敏保证数据安全的同时,也需要保持原来业务数据的特点才能保证其在测试场景中的可用性。
  • 保持业务规则与漂白通用性:保证数据业务规则不变是数据漂白的基本要求,包括:保持漂白数据的数据关联性以及业务语义不变等。其中数据关联性包括主外键关联性、关联字段的业务语义关联性等。保持主外键关联是保证数据一致性的重要保证:如客户表和订单表通过客户号码进行关联,如果将客户表的客户号进行漂白,而订单表的客户号没有漂白或者漂白为不一样的数值,会出现数据不一致性。而业务语义关联是指不同字段没有直接的主外键关联,但在业务含义上确实有相互关联的,比如,客户地址与邮编号码有语义关联,客户表中的客户名称字段与邮寄地址表中联系人的客户名称有语义关联。通常数据库中的冗余设计容易带来这样的语义关联。而真实情况往往更复杂,比如关联数据跨越不同数据表以及不同的数据库,为保证漂白数据的一致性带来难度。业务语义不变则是许多测试案例的硬性指标,如保证数据格式不变、保证业务数据在合理的取值范围等。总体上来讲,业务规则是千变万化的,数据漂白需要根据不同的漂白需求设计不同的漂白流程,但如果数据漂白方案设计没有考虑通用性,会带来管理上的问题以及不能适应漂白需求的变化,最终导致数据漂白项目不可控。因此数据漂白设计时需要综合考虑业务规则以及漂白通用性。
  • 漂白结果一致性与不可逆需求:在数据漂白项目中,同样的数据进行多遍漂白的情况是很常见的:如分别对不同的子系统进行异步漂白;或者对一个系统按照不同条件进行任务划分,使同样的数据 ( 不同时期的客户订单中同一客户的姓名数据等 ) 出现在不同的任务中。因此保证不同漂白过程中漂白结果的一致很重要,而做到漂白结果最理想情况是能做到数据值的一一映射。然而实现一一映射却会带来另外一个问题:被变形的数据有可能会被逆转,得到真实的原始数据,从而失去数据漂白的意义。综合考虑这两个因素,一个有效解决手段是实现可控规则的一一映射,即:将实现数据映射规则的人员和实施数据漂白的人员分开,设计人员负责实现映射算法并保证算法的不可被逆推,保证在有效取值范围内实现一一映射,同时保留外部能影响映射的参数。而实施人员在实施数据漂白项目时才指定控制参数,进而得到唯一的映射规则。

使用 Optim Data Privacy 函数对个人隐私数据的漂白

前面讨论了有效数据漂白需要注意的几个方面的问题,而最终的检验标准是数据是否足够安全、是否能满足测试用例要求。然而由于不同的业务系统以及不同的测试环境对数据漂白都有不同程度的要求,因此数据使用哪种数据漂白技术,取决于需求中对以上三个方面需求的权衡。根据前面讨论的三个方面的需求,针对常见的敏感数据类型,在 Optim TDM 以及 Data Privacy 的框架下提出具体的实现方式。 个人隐私数据的漂白:个人身份信息是最常见的需要脱敏的隐私信息,而在不同的测试系统中对个人身份信息的处理要求是不一样的。如通常情况下要求把真实的个人信息脱敏,且存在少量重复数据不影响测试场景的情况下,使用 Optim Data Privacy 函数库可以很好的完成个人身份信息脱敏的任务。具体步骤如下:

  1. 创建查找表,准备数据脱敏所需的模拟数据:

    在 Optim 项目范围内的任何一个 DBAlias 中创建包含模拟用户数据的查找表,并生成用于替换真实数据的姓名、身份证号码等个人信息数据。如下表所示:

    表 1. 查找表数据

    ID NAME ADDRESS PHONENUM CITY
    1 宗制 广东省广州市衡山路 2083 号 13010000000 广州市
    2 傅力 山东省济南市衡山路 187 号 13010022504 济南市
    3 许前 四川省成都市太姥路 1698 号 13010022516 成都市
    4 魏议 广东省广州市衡山路 3319 号 13010000003 广州市
    5 程定 北京市黄山路 1953 号 13010022527 黄山
    ... ... ... ... ...
  2. 在 Optim TDM 数据漂白流程中处理敏感数据 : Optim 数据漂白流程包含数据抽取 (Extract), 漂白 (Convert) 以及数据加载 (Insert/Load) 三个步骤,在此不一一展开详细说明,仅对 Convert 过程中使用的 Optim 函数进行说明。Optim Data Privacy 函数库提供的查找类的函数包括 Lookup 函数、Hash_Lookup 函数、以及 Rand_Lookup 函数,分别用于通过键值查找、通过哈希值查找以及随机查找三种方式来完成查找模拟数据并替换真实数据的功能。本例中我们采取使用 Hash_lookup 函数来完成。Optim Convert Request 中的 Column map 格式如下: 图 1. Column map 设置 Column map 设置
  3. 最终数据脱敏的效果展示如下 : 图 2. Hash_lookup 脱敏效果 Hash_lookup 脱敏效果

中文姓名漂白方案

当测试系统要求处理的个人身份信息需要保持排他性、以及在多遍漂白中保持一致等特殊要求,且 Optim 的自带漂白方式不能满足时,需要通过 Optim 提供的扩展接口,实现特殊业务要求的数据漂白功能。Optim TDM 解决方案提供特定接口规范,用户按照接口规范编写的扩展程序 (User Exit) 都能被 Optim 调用。下面以中文客户姓名作为示例。

中文客户姓名的变形要求:要求隐去真实客户性能,漂白结果为测试人员可识别的中文姓名,即姓名组成符合常见的中文姓名特点:为常用姓氏和人名的组合,并且保持一致性以及排他性,并且要求漂白结果是不可逆的。

漂白算法说明: 使用常用姓氏以及常用汉字来代替原姓名,组成新的姓名数据。对常见的 850 个姓氏以及 3500 个姓名常用汉字实现一对一映射,如此最多可以产生超过 100 亿个不重复的常用姓名,对国内的数据漂白项目来说是足够的。具体漂白算法设计如下: 姓和名分别处理,对于每个汉字首先定位其在常用姓氏和常用汉字数组中的位置,然后根据用户输入参数值和内部汉字序列产生新的姓和名数据。对于不在常用姓名范围内的姓氏和名字,使用与其 Hash 值一致的姓氏或者名字来代替。只有当漂白客户姓名不在常用姓氏以及常用名字范围内,其漂白结果才可能与另外的客户名称重复,实际测试中这样的重复数据是小于万分之一的。为提高汉字的定位效率,程序内部分别预先设计大小为 1000 的姓式 Hash 桶和名字 Hash 桶来存放数据。单个汉字的查找过程描述如下所示:

  1. 计算汉字的 Hash 值
  2. 根据 Hash 值定位其 Hash 桶,在 Hash 桶内部线性查找,定位汉字,若没有找到则使用 Hash 桶内部最后一个汉字代替原汉字;
  3. 根据用户输入参数计算偏移量,并根据偏移量在 Hash 桶内部查找替换真实数据的汉字。

在实际应用中,由于 Hash 算法、Hash 桶数据不公开,且用户输入参数在漂白执行时才指定,可以充分保证漂白算法的不可逆。实际漂白效果如下:

图 3. 中文姓名 Column map 设置 中文姓名 Column map 设置 图 4. 中文姓名漂白效果 中文姓名漂白效果

账号类数据的漂白方案

通常情况下推荐使用 Optim 自带的漂白函数进行漂白,但当业务数据漂白有特殊业务规则时,可根据需要采用额外的漂白方式。下面以账号类数据为示例,介绍一种通用的漂白算法。 账号数据的变形需求:账号类数据一般由字母和数据组成,通常做为客户的唯一标识,要求数据漂白后严格保持不重复。有些账号 ( 如银行卡号 ) 由前几位字符来表示不同的账号类型,业务测试场景要求这些类型判定字符保持不变。由于账号数据分散在系统中的多张表中,需要在不同的变形过程中处理,要求对同样的账号变形结果保持唯一性和排他性。同时变形算法具备一定程度的通用性。

漂白算法说明:用户输入参数指定保留原号码的前 N 位,对其他字符进行变形并实现一一映射变形,以保正变形唯一性:程序内部保持一个全局映射表,映射表的映射规则根据用户输入的参数在运行时生成。映射表包含 10 组映射规则,分别用于字符顺序尾号为 0 到 9 的 10 类字符的变形。运行时对于每个字符按照其对应的映射规则变形,并保持原格式不变(即保持大小写以及数字字符格式不变)。

图 5. 账号数据漂白 Column map 设置 账号数据漂白 Column map 设置 图 6. 账号数据漂白效果 账号数据漂白效果

总结

通过以上实例,读者可以了解到 Optim TDM 解决方案可以满足不同项目对敏感数据的不同漂白需求:通常情况下,如果对漂白结果一致性要求不高的漂白需求,例如不需要实现一一映射的漂白效果时,都可以使用 Optim 自带的漂白函数库完成漂白;当部分关键数据需要特殊的漂白要求时,通过 Optim 提供的扩展接口,可以很方便的实现满足要求的漂白算法,从而实现敏感数据的全覆盖漂白。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9950964/viewspace-1656143/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-04-10

  • 博文量
    15
  • 访问量
    25657