为什么谈SAP数据脱敏?
SAP进入中国市场超过30年,作为一个典型的德国思维的产品,我们很难找到另一个市值这么大的软件,在过去的几十年中,一直活的这么滋润,没有太多的挑战,而且软件本身的变化肉眼可见的不大。
但近年来,这个固有的套路不断的被挑战,背后的推手有很多,我个人理解较大有两个。一个是AI的技术,使得传统SAP顾问不敢去想的一些功能,例如预测性分析,自然语言处理(NLP),图像识别,RPA,Machine Learning,AI驱动的业务流程优化等等,变成了可能,另一个是数据治理和隐私保护的日益重视。不管是法律法规还是大家的意识,都需要实现更先进的数据治理和隐私保护功能,以确保数据的质量、安全和合规性。
本篇是个知识分享篇,更多的是想借助团队刚刚完成的SAP数据脱敏的项目,聊聊相关的业务需求,系统架构和技术实现的关键点。
SAP数据脱敏的需求有哪些
这里不去谈什么高大上的定义和论述。更多的引述我们实际项目的需求。
第一个项目,一个体量庞大的德国S记跨国集团,需要把一块业务板块整体切割出去,属于Carve Out 项目。切出去的系统除了SAP,还有若干个其他系统,SAP是这些系统的骨干系统(Backbone system)。项目的公司代码拆分部分,和第三方系统与SAP集成部分,都需要有大量的业务数据来支撑测试。因此,项目组同事以生产机为源系统(Source System),刷新(System Refresh)了一个新的系统,其中只包含待切出业务板块的数据。以这个新系统为测试系统,提供给各路人马进行集成及测试工作。但这个德国企业严格遵循GDPR的要求,这个测试系统的数据必须对敏感数据进行脱敏操作。待处理的数据主要是员工的个人信息(包含姓名,生日,住址,银行信息,联系方式,个人薪资,个人合同等等)。
第二个项目,是日本的一家生产办公用品的A记公司。该公司需要升级SAP系统,并集成更多的外围系统。与S记公司类似,A记公司也准备了包含生产机数据的测试系统。A记公司希望,除了员工数据,也希望对BP数据进行脱敏工作。
SAP数据脱敏的工具
市场上有几款能完成SAP数据脱敏的工具产品。下面主要是介绍是SNP公司的TDO工具技术路径讲解和截图。
SAP数据脱敏的关键要点 – 系统架构
考虑到方案的严谨性和运作的持续性,用源系统-控制机-目标系统的三位一体的架构更好。 架构可以参照一下图例:
中间的Cockpit 控制机可以装在SOLMAN上,如果SOLMAN条件不具备,也可以装在源系统上。上述的功能点可以通过在安装过程中引入TR的方式来实现。在此过程中,也需要注意权限的管控。
SAP数据脱敏的关键要点 – 敏感数据的池化数据(Pool Data)
举个例子说明这个要点。某员工的家庭住址信息需要脱敏,他的住址是上海市浦东新区金海路x弄x号,邮编201209。我们怎样做一个masking,用一个新的地址去替换呢?
我们不能用同一个地址强行付给所有的员工(或者BP),例如,北京市东长安街天安门广场。 这个不太严谨,而且后续的一些业务流程也需要要到地址信息。
我们也不能用太虚假或自相矛盾的一个masking 数据,例如,我们不能有一个地址是类似是天津市凯达格兰大道这样的。还例如,我们在脱敏员工姓名及性别数据时,不能太多的出现,姓名王金刚,性别女这样的数据。
脱敏的目标是,以假乱真。数据本身要合理严谨完整。
SNP TDO中提供了Pool table的模板及部分数据。模板参见下图列表
我们以第一个pool table,address data啊(地址信息)为例。我们可以运行程序上载SAP中的PA0006表,或者BUT***表中的地址信息,可以在SE16中直接维护这张表(/SNP/CM05ADRPOOL)内容。我们维护的结果如下(仅供示例之用)。
有了这张表,我们做data masking就有准星了。我们可以从这张表中,由程序随机挑选一条数据去替换员工的正式地址数据。当然在实际项目中,我们可以选择国家是否要替换,城市是否要替换。Masking程序会带入这些选择条件在Pool Table中随机找到满足条件的记录来完成替换。
另外多说一句,这个随机替换,有Random的实现,也有Hash实现。这个是底层技术,不清楚这个算法的同学直接跳过。但结果是确定的,就是SAP用户们不可能根据新的地址去猜到这个员工(或者BP)是谁,或者他的真实地址是哪一个。