数据脱敏的方法、装置、电子设备及存储介质
技术领域
本发明实施例涉及大数据
技术领域
,特别涉及一种数据脱敏的方法、装置、电子设备及存储介质。背景技术
数据脱敏是数据库安全技术之一,是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。数据脱敏的脱敏规则可以是替换、变形、加密或截断对特定字段进行处理。
然而,目前通常采用全局脱敏的方式对数据进行脱敏处理,全局脱敏是指对所有的数据进行扫描,由于不能区分出哪些对象无需进行脱敏,导致性能损耗大,脱敏效率低;在面对大量的数据时,需要采用高并发系统进行处理,将导致系统性能损耗严重,严重降低了脱敏效率。
发明内容
本发明实施方式的目的在于提供一种数据脱敏的方法、装置、电子设备及存储介质,可以减少数据脱敏的系统损耗,提高数据脱敏的效率。
为解决上述技术问题,第一方面,本发明的实施方式提供了一种数据脱敏的方法,包括:若检测到原始数据标注有脱敏标签,则获取所述原始数据对应的数据对象,所述脱敏标签用于指示所述原始数据包括敏感数据;获取以深拷贝所述数据对象生成的脱敏对象;按照所述脱敏对象匹配的脱敏规则,对所述脱敏对象进行脱敏,生成脱敏数据。
第二方面,本发明的实施方式还提供了一种数据脱敏的装置,包括:数据对象获取模块、脱敏对象获取模块以及脱敏模块;所述数据对象获取模块用于若检测到原始数据标注有脱敏标签,则获取所述原始数据对应的数据对象,所述脱敏标签用于指示所述原始数据为敏感数据;所述脱敏对象获取模块用于获取被深拷贝的所述数据对象作为脱敏对象;所述脱敏模块用于按照所述脱敏对象匹配的脱敏规则,对所述脱敏对象进行脱敏,生成脱敏数据。
第三方面,本发明的实施方式还提供了一种电子设备,至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的数据脱敏的方法。
第四方面,本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的数据脱敏的方法。
本申请实施例中,原始数据中标注有脱敏标签,针对具有脱敏标签的原始数据进行处理,而不是对所有数据均进行扫描获取敏感数据,提高了获取敏感数据的速度,从而提高了数据脱敏的速度;同时,敏感数据通常涉及用户的个人信息,如:身份证、地址等信息,通过获取原始数据对应的数据对象,可以针对具有敏感数据的一类对象进行处理,而无需关注具体的实例,提高脱敏的效率;由于以深拷贝的形式复制该数据对象获得的脱敏对象,使得脱敏对象与该数据对象完全相同,对该脱敏对象进行脱敏处理,不会影响该数据对象,也减少了对原始数据的侵入。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例中数据脱敏的方法的流程图;
图2是一个实施例中提供的一种获取脱敏对象的示意图;
图3是一个实施例中提供的另一种获取脱敏对象的示意图;
图4是一个实施例中提供的另一种获取脱敏规则的示意图;
图5是一个实施例中提供的输出脱敏数据的示意图;
图6是本申请实施例中数据脱敏的装置的结构框图;
图7是本申请实施例中电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
目前数据脱敏可以用于生成环境和非生产环境,非生产环境如:开发环境、测试环境等,在面对大数据时,需要数据脱敏的系统可以并发处理数据,但往往采用的是全局脱敏的方式对数据进行脱敏处理,影响数据脱敏的效率;另外,在非生产环境中对敏感数据进行脱敏处理,如替换、剪切,对敏感数据入侵大,对原有的业务造成了影响,不利于对敏感数据所属业务的进行,例如,在处理待脱敏的数据时采用特殊字符(如“*”)对敏感数据进行替换,该方式更好的隐藏敏感数据,但是用户无法得知原始数据的格式,对数据统计工作影响,导致数据统计不准确。
申请实施例中的数据脱敏的方法,该数据脱敏的方法可以由电子设备执行,如服务器;其流程如图1所示:
步骤101:若检测到原始数据标注有脱敏标签,则获取原始数据对应的数据对象,脱敏标签用于指示原始数据中包括敏感数据。
具体地,数据脱敏可以应用于非生产环境,例如:日志输出环境,接口输出环境。为了提高数据脱敏的效率,可以对原始数据标注脱敏标签,该脱敏标签用于指示该原始数据包括敏感数据,标注的过程可以是:识别该原始数据中的是否包含指定的敏感字段,若包含指定的敏感字段,根据指定的敏感字段与脱敏标签之间的对应关系,即可确定该敏感字段的脱敏标签并将该确定的脱敏标签标注在该原始数据上。上述标注脱敏标签的过程可以通过面向切面编程(Aspect Oriented Programming,“AOP”)的方式对原始数据进行标注,采用AOP对原始数据进行标注的方式,标注速度快,可以进一步提高数据脱敏的速度。
通过对原始数据标注脱敏标签,使得可以通过识别脱敏标签即可确定敏感数据,无需对所有的数据进行扫描,且通过脱敏标签可以快速从大量的数据中识别敏感数据,进而提高了获取敏感数据的速度。
若检测到该原始数据中标注有脱敏标签,表明该原始数据为敏感数据,需要进行脱敏处理,故可以获取该原始数据对应的数据对象。识别该原始数据的结构,即可获取该原始数据对应的数据对象。
下面以日志输出环境为例,介绍该获取原始数据对应的数据对象的过程:
例如:原始数据可以为数据对象中的一个具体实例,实例A为:“姓名:小明,年龄:10岁”,获取该实例中的字段以及该实例的结构,该实例的结构是指各字段之间的关系,根据该实例的结构,可以确定原始数据对应的数据对象包括姓名和年龄,记为对象A。
步骤102:获取以深拷贝数据对象生成的脱敏对象。
具体地,该脱敏对象为新建的对象,且赋值为深拷贝的数据对象,即完全复制的数据对象赋值该新建的对象,形成脱敏对象。
步骤103:按照脱敏对象匹配的脱敏规则,对脱敏对象进行脱敏,生成脱敏数据。
具体地,获取该脱敏对象匹配的脱敏规则,该脱敏规则包括:待脱敏的字段以及脱敏方式等。脱敏规则可以预先根据脱敏对象的类型设置。例如:脱敏对象包括姓名,若对应的脱敏规则为:姓名的值以“小*”替代的方式进行脱敏,那么对该脱敏对象进行脱敏处理后生成的数据为“小*”,原始数据为“小明”。
由于采用深拷贝的方式复制数据对象,可以完全复制该数据对象,由于采用深拷贝,该脱敏对象和数据对象相互独立,对脱敏对象的处理不会导致数据对象的改变;从而可以避免在非生产环境中对敏感数据进行脱敏导致对原有的业务造成的影响。
另外,对脱敏对象进行脱敏,而不是直接对原始数据进行脱敏,实现工程化脱敏,简化使用流程。
本申请实施例中,原始数据中标注有脱敏标签,针对具有脱敏标签的原始数据进行处理,而不是对所有数据均进行扫描获取敏感数据,提高了获取敏感数据的速度,从而提高了数据脱敏的速度;同时,敏感数据通常涉及用户的个人信息,如:身份证、地址等信息,通过获取原始数据对应的数据对象,可以针对具有敏感数据的一类对象进行处理,而无需关注具体的实例,提高脱敏的效率;由于以深拷贝的形式复制该数据对象获得的脱敏对象,使得脱敏对象与该数据对象完全相同,对该脱敏对象进行脱敏处理,不会影响该数据对象,也减少了对原始数据的侵入。
在一个实施例中,步骤102具体可以执行步骤1021实现,其流程如图2所示:
步骤101:若检测到原始数据标注有脱敏标签,则获取原始数据对应的数据对象,脱敏标签用于指示原始数据包括敏感数据。
步骤1021:采用反射的方式对数据对象进行深拷贝,生成脱敏对象,脱敏对象包括脱敏标签。
具体地,深拷贝的方式有多种,本申请中采用反射的方式对数据对象进行深拷贝,例如,可以由JDK的反射机制进行反射计算,从而完成对该数据对象的深拷贝,其中,JDK是Java语言的软件开发工具包。可以理解的是,由于采用反射机制对数据对象进行深拷贝,为了减少反射的层数,该数据对象不采用继承的方式创建,避免反射过程中一层一层查找继承的父类,减少反射的次数,从而提高深拷贝的速度。
在一个例子中,反射的方式还可以:代码生成库cglib的反射机制。cglib是一个强大的,高性能,高质量的代码生库,它可以在运行期扩展Java类与实现Java接口。采用cglib中的反射机制可以快速对数据对象进行深拷贝,其速度快于采用JDK中的反射机制进行的深拷贝,进一步提高了深拷贝的速度。本示例中不采用GraalVM实现本申请中的数据脱敏的方法,其中,GraalVM是一个高性能的通用虚拟机。
步骤103:按照脱敏对象匹配的脱敏规则,对脱敏对象进行脱敏,生成脱敏数据。
本实施例中,通过反射的方式进行深拷贝,而不是采用序列化、json或二进制的方式进行深拷贝,提高了深拷贝的速度。
一个实施例中,步骤102可以执行如下步骤1022~1024,其流程如图3所示:
步骤101:若检测到原始数据标注有脱敏标签,则获取原始数据对应的数据对象,脱敏标签用于指示原始数据包括敏感数据。
步骤1022:若检测到缓存区存储有脱敏对象,则从缓存区读取脱敏对象。
具体地,深拷贝数据对象过程中,针对相同类别的对象具有相同的待脱敏字段,即不同对象的待脱敏字段相同,为了进一步提高数据脱敏的效率,可以将脱敏对象进行缓存,以用于下一次获取了相同的数据对象时,无需再次进行深拷贝该数据对象。
检测该缓存区是否存储有脱敏对象,若检测到了该脱敏对象,则直接从该缓存区读取脱敏对象。检测的方式有多种,例如,可以基于脱敏标签进行识别,也可以根据数据对象的结构,在缓存区检测是否存在与该深拷贝的数据对象相同字段和结构的对象,若存在,表明该缓存区存储有脱敏对象。
步骤1023:若缓存区不存在脱敏对象,则采用反射的方式对数据对象进行深拷贝,将深拷贝的数据对象作为脱敏对象。
若不存在脱敏对象,则可以采用反射的方式对数据对象进行深拷贝,将深拷贝的数据对象作为脱敏对象,反射方式与步骤1021类似,此处不再进行赘述。
步骤1024:将脱敏对象以及与脱敏对象匹配的脱敏规则缓存至缓存区。
具体地,若缓存区不存在脱敏对象,在执行步骤1023后,将脱敏对象以及与脱敏对象匹配的脱敏规则缓存至缓存区。
脱敏规则可以是预先设定的,每个脱敏标签可以表征对应的脱敏规则,将脱敏规则缓存至缓存区,无需在反射过程中再次查找脱敏规则,减少查找脱敏规则的过程。
步骤103:按照脱敏对象匹配的脱敏规则,对脱敏对象进行脱敏,生成脱敏数据。
本实施例中,使用cglib加本地缓存进行深拷贝,生成的脱敏对象不影响原始数据的使用,减少脱敏数据对原业务的入侵。
在一个实施例中,在执行步骤103之前,该数据脱敏的方法还可以执行步骤103-1,其流程如图4所示:
步骤101:若检测到原始数据标注有脱敏标签,则获取原始数据对应的数据对象,脱敏标签用于指示原始数据包括敏感数据。
步骤102:获取以深拷贝数据对象生成的脱敏对象。
具体地,深拷贝的方式有多种,本申请中采用反射的方式对数据对象进行深拷贝,例如,可以由JDK中的反射机制进行反射计算,从而完成对该数据对象的深拷贝。
步骤103-1:解析脱敏标签,获取与脱敏对象匹配的脱敏规则。
具体地,该脱敏标签中还可以包括脱敏规则,从而实现脱敏标签与脱敏规则之间的绑定,通过解析该脱敏标签,即可得到该脱敏规则。不同类别的对象具有不同的脱敏标签,而脱敏标签中包括脱敏规则,脱敏标签与脱敏规则绑定,使得不同类别的对象有不同的脱敏规则,可以精准控制不同类别的对象采用不同的脱敏规则进行脱敏。例如:对象中包含电话的类别,包含姓名的类别,包含公司名的类别,包含邮箱的类别,不同的类别可以采用不同的脱敏规则。
还可以根据应用需求为每个对象设置脱敏规则,该脱敏标签上还可以包含触发脱敏的条件,当满足脱敏条件时,调用该脱敏规则对脱敏对象进行脱敏,由于仅需添加数据标签,减少了对原始数据的入侵。
步骤103:按照脱敏对象匹配的脱敏规则,对脱敏对象进行脱敏,生成脱敏数据。
本实施例,脱敏标签与脱敏规则对应,脱敏规则明确了待脱敏字段和脱敏方式,使得可以通过脱敏标签精准的进行数据脱敏,实现精准控制,充分提高脱敏的性能。本实施例中,提高了数据脱敏的性能效率,实现了对脱敏对象的精准控制,减少了对原始数据的入侵,使得数据脱敏使用方便。互联网系统对系统要求特别高,采用申请中的数据脱敏方式,可以提高大数据脱敏的性能效率,精确控制脱敏对象。
在一个实施例中,步骤103之后该数据脱敏的方法还可以执行步骤104,其流程如图5所示
步骤101:若检测到原始数据标注有脱敏标签,则获取原始数据对应的数据对象,脱敏标签用于指示原始数据包括敏感数据。
步骤102:获取以深拷贝数据对象生成的脱敏对象
步骤103:按照脱敏对象匹配的脱敏规则,对脱敏对象进行脱敏,生成脱敏数据。
步骤104:以字符串形式输出脱敏数据。
具体地,以字符串的形式输出脱敏数据,例如,通过重写toString方法输出,放弃其它性能较低的序列化工具,提高输出效率。ToString方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。
本实施例中,以字符串形式输出脱敏数据,无需采用其它性能低的序列化工具,提高输出的速率。
以上各实施例可以相互结合相互引用,例如下面是各实施例结合后的例子,然并不以此为限;各实施例在不矛盾的前提下可以任意结合成为一个新的实施例。
本申请实施例中还提供一种数据脱敏的装置,数据脱敏的装置20的结构框图如图6所示,包括:数据对象获取模块201、脱敏对象获取模块202以及脱敏模块203;数据对象获取模块201用于若检测到原始数据标注有脱敏标签,则获取原始数据对应的数据对象,脱敏标签用于指示原始数据为敏感数据;脱敏对象获取模块202用于获取被深拷贝的数据对象作为脱敏对象;脱敏模块203用于按照脱敏对象匹配的脱敏规则,对脱敏对象进行脱敏,生成脱敏数据。
不难发现,本实施方式为与第一实施方式相对应的装置实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本申请实施例中还提供一种电子设备,其结构框图如图7所示,包括:至少一个处理器301;以及,与至少一个处理器301通信连接的存储器302;其中,存储器302存储有可被至少一个处理器301执行的指令,指令被至少一个处理器301执行,以使至少一个处理器301能够执行上述的数据脱敏的方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本申请实施例中还提供一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的数据脱敏的方法。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。