CN113343293A - 通用数据脱敏方法、组件、系统、计算机设备和存储介质 - Google Patents
通用数据脱敏方法、组件、系统、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113343293A CN113343293A CN202110601216.3A CN202110601216A CN113343293A CN 113343293 A CN113343293 A CN 113343293A CN 202110601216 A CN202110601216 A CN 202110601216A CN 113343293 A CN113343293 A CN 113343293A
- Authority
- CN
- China
- Prior art keywords
- desensitization
- configuration
- interface
- calling
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6254—Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
Landscapes
- Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Medical Informatics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出了一种通用数据脱敏方法、组件、系统、计算机设备和存储介质,该方法包括:将脱敏组件的jar包引入业务服务器中;启动业务服务器,脱敏组件通过RSF接口调用DRS接口;公共服务模块接收获取脱敏配置请求,根据应用编号从公共数据库内读取相应的脱敏配置并返回;脱敏配置加载完毕后,脱敏组件应用相应的脱敏规则对接入数据进行脱敏;在公共后管模块中修改脱敏配置后,将其写入公共数据库内,并调用脱敏组件提供的DARS接口;接收到重新加载通知后,调用DRS接口重新加载。本发明数据脱敏接入简单成本低廉,支持远程集中式管理及加载,对任意复杂结构的字符串数据进行脱敏,不需要改动任何现有代码就能对日志进行脱敏。
Description
技术领域
本发明涉及数据处理技术领域,具体而言,涉及一种通用数据脱敏方法、组件、系统、计算机设备和存储介质。
背景技术
随着计算机技术的飞速发展,大数据技术也应运而生,在大数据时代,数据共享的背景下,对于个人信息等敏感数据的安全性的保证也是研究的重要方向之一,客户的敏感信息(例如手机号码、身份证号码、银行卡号等)需要进行脱敏操作。
目前,行业内在实现数据脱敏功能方面普遍存在以下缺陷或不足:
(1)现有技术中的脱敏方案很容易对已知类型的单值数据进行脱敏,但是无法实现对一个复杂未知结构的字符串数据进行脱敏。例如:HTTP接口吐出的响应数据、日志打印出来的日志等字符串数据。
(2)在对日志数据脱敏的方案中,通常采用以下两种:
Ⅰ.部分方案采用自定义具体日志框架的Appender,然后将自定的Appender配置到具体日志的配置文件中来实现。但是,因为在Appender中对日志进行脱敏处于日志打印的最后阶段,脱敏逻辑处理的是一堆无差别的字符串,即任何输出日志(包括一些框架日志)都将被处理,处理数据量大,造成性能低下,甚至会拖累应用的性能。
Ⅱ.大多数方案都是实现自定义的Logger(日志记录器),该Logger实现了org.slf4j.Logger接口,并通过静态代理,在代理逻辑中实现对log方法的参数进行脱敏处理。该方案在处理脱敏数据的契机上优于方案Ⅰ,但是弊端也是很明显的,就是要现有代码进行改造,例如:
原有代码:
改动后代码:
对比前后代码可见:需要大范围的改动各处对Logger的声明,代码改动的范围很大,而且有些Logger声明属于某个框架的、存在于某个独立jar中对其进行改动也不现实。
(3)现有的脱敏方案在脱敏规则的可配置化、集中化管理等特性上存在不足。例如,有的方案为了简便,直接将脱敏规则固化在代码中,无法修改配置。有的方案可以提供一个properties或者yaml的配置文件,可以在配置文件中修改脱敏规则,但是因为修改了properties|yaml配置文件需要重新打包发布,不具备实时修改配置并使配置生效的可能。如果将配置文件放在SCM(统一配置中心),则需要修改各个应用的SCM配置,且不具备配置集中式管理的诉求。
发明内容
鉴于上述问题,本发明提供了一种通用数据脱敏方法、组件、系统、计算机设备和存储介质,既可以对应用输出的日志进行脱敏,又可以对基于SpringMVC框架的HTTP接口进行数据脱敏,充分满足了客户敏感信息保护的需求。
为解决上述技术问题,本发明采用的技术方案是:
第一方面,本发明提供了一种通用数据脱敏方法,包括:将脱敏组件的jar包引入业务服务器中,所述业务服务器接入有应用程序;启动业务服务器,脱敏组件通过RSF接口调用公共服务模块提供的DRS接口;公共服务模块接收由所述脱敏组件发出的获取脱敏配置请求,根据应用编号从公共数据库内读取相应的脱敏配置并返回;脱敏配置加载完毕后,脱敏组件应用相应的脱敏规则对接入数据进行脱敏;在公共后管模块中修改脱敏配置后,将其写入公共数据库内,并调用脱敏组件提供的DARS接口;脱敏组件接收到重新加载通知后,再次调用DRS接口重新加载脱敏配置;
其中,所述脱敏组件包括Logger日志脱敏单元和后管接口脱敏单元;当接入数据为后台日志类数据,调用Logger日志脱敏单元进行脱敏;当接入数据为接口返回类数据,调用后管接口脱敏单元进行脱敏。
作为优选方案,所述调用Logger日志脱敏单元进行脱敏,包括:利用SLF4j日志体系的logback和log4j2桥接代码的共性,通过动态代理、静态代理或反射将org.slf4j.LoggerFactory.getLogger方法的返回值替换为自定义的Logger记录器;重写Logger记录器的trace/info/debug/warn/error日志级别方法;在Logger记录器的日志级别方法执行开始时调用脱敏配置,对传入参数进行脱敏处理,将脱敏后的数据传递至被代理Logger记录器,执行日志打印。
作为优选方案,所述调用后管接口脱敏单元进行脱敏,包括:选择SpringMVC提供的ResponseBodyAdvice接口方法,对SpringMVC中的每个Controller方法进行拦截;若检查出Controller方法上存在@DataSensitive注解,则调用脱敏配置对Controller方法的返回结果进行脱敏处理。
作为优选方案,所述调用脱敏配置对Controller方法的返回结果进行脱敏处理,包括:当返回结果为简单值类型,将返回结果转换成字符串类型再调用脱敏规则;当返回结果为数组或List集合类型,通过遍历数组或List集合,再递归调用脱敏规则;当返回结果为Map集合,遍历Map集合,若Map的value值为简单类型,则直接调用脱敏规则,若Map的value值是复杂结构类型,则递归调用脱敏规则;当返回结果为指定包下的自定义对象,则遍历自定义对象的属性字段,逐一调用脱敏规则;当返回结果为String类型且为复杂结构类型,则通过正则表达式解析返回结果,并调用脱敏规则。
作为优选方案,所述通过正则表达式解析返回结果,并调用脱敏规则,包括:采用正则表达式对返回结果进行分析、匹配和递归,找出具有赋值格式的键值对,键值对包括相对应的关键字和关键值;对键值对的关键字进行匹配,匹配成功后,对关键值进行隐位处理。
第二方面,本发明提供了一种通用数据脱敏组件,安装于业务服务器上,包括:Logger日志脱敏单元,用于根据脱敏配置对后台日志类数据进行脱敏;所述调用Logger日志脱敏单元进行脱敏,包括:利用SLF4j日志体系的logback和log4j2桥接代码的共性,通过动态代理、静态代理或反射将org.slf4j.LoggerFactory.getLogger方法的返回值替换为自定义的Logger记录器;重写Logger记录器的trace/info/debug/warn/error日志级别方法;在Logger记录器的日志级别方法执行开始时调用脱敏配置,对传入参数进行脱敏处理,将脱敏后的数据传递至被代理Logger记录器,执行日志打印;
后管接口脱敏单元,用于根据脱敏配置对接口返回类数据进行脱敏;所述调用后管接口脱敏单元进行脱敏,包括:选择SpringMVC提供的ResponseBodyAdvice接口方法,对SpringMVC中的每个Controller方法进行拦截;若检查出Controller方法上存在@DataSensitive注解,则调用脱敏配置对Controller方法的返回结果进行脱敏处理。
第三方面,本发明提供了一种通用数据脱敏系统,包括业务服务器、公共服务模块、公共后管模块和公共数据库,及如根据权利要求7所述的脱敏组件;所述业务服务器,用于安装应用程序和脱敏组件,所述应用程序具有应用编号;所述公共服务模块,用于接收由所述脱敏组件发出的获取脱敏配置请求,根据应用编号从公共数据库内读取相应的脱敏配置并返回;所述公共后管模块,用于修改脱敏配置,将其写入公共数据库内,并通过RSF广播通知所有接入脱敏组件的应用程序重新加载脱敏配置;所述公共数据库,用于存储脱敏配置。
第四方面,本发明提供了一种计算设备,包括:存储器,用于存储程序指令;处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述任一项所述的方法。
第五方面,本发明提供了一种计算机可读存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述任一项所述的方法。
与现有技术相比,本发明的有益效果包括:
1.本申请提供的通用数据脱敏公共组件,引入脱敏组件jar包依赖以及简单灵活的本地脱敏配置即可,接入成本低廉,不需要引入额外的中间件,该组件仅依赖Spring、RSF两大框架,而这两大框架也是银行系统内每个应用的标配,所以接入该组件门槛低、更容易。
2.本申请提供的通用数据脱敏配置支持远程集中式管理及加载,即提供公共后管模块对脱敏配置进行统一维护,可实时发布最新脱敏配置到接入脱敏组件的各个应用节点上。该方式解决了传统基于本地配置文件,在修改了配置文件后需要打包重新发布的弊端。
3.本申请提供的数据脱敏算法能够实现对任意复杂结构的字符串数据进行脱敏,不仅限于JSON格式、toString格式的字符串。这种能力使得脱敏的范围更广,粒度更大,克服了现有大多数脱敏组件对复杂无规则结构的字符串无能为力的缺陷。
4.本申请对于日志数据脱敏,不需要改动任何现有代码就能对基于org.slf4j.Logger输出的日志进行脱敏,极大地改善了接入成本。
5.本申请脱敏组件性能表现优异,核心的脱敏方法ObjectDesensitizer#desensitizeObject(target,context)经过OpenJDK的性能测试框架JMH测试成绩如下:复杂结构字符串类型数据测试结果,每次调用desensitizeObject()方法耗时180微秒左右;复杂结构自定义对象类型数据测试结果,每次调用desensitizeObject()方法耗时320微秒左右。
附图说明
参照附图来说明本发明的公开内容。应当了解,附图仅仅用于说明目的,而并非意在对本发明的保护范围构成限制。在附图中,相同的附图标记用于指代相同的部件。其中:
图1为本发明实施例提供的通用数据脱敏方法的流程示意图;
图2为本发明实施例提供的调用Logger日志脱敏单元进行脱敏的流程示意图;
图3为本发明实施例提供的调用后管接口脱敏单元进行脱敏的流程示意图;
图4为本发明实施例提供的通用数据脱敏系统的流程示意图。
具体实施方式
容易理解,根据本发明的技术方案,在不变更本发明实质精神下,本领域的一般技术人员可以提出可相互替换的多种结构方式以及实现方式。因此,以下具体实施方式以及附图仅是对本发明的技术方案的示例性说明,而不应当视为本发明的全部或者视为对本发明技术方案的限定或限制。
为了便于对本方案的理解,下面对本文涉及到的专业术语进行说明。
JAR包:(Java ARchive,Java归档)是一种与平台无关的文件格式,可将多个文件合成一个文件。
RSF:Remote Service Framework的缩写,它专门为集群、高可用系统进行设计的分布式RPC服务框架。
DRS接口:即DesensitizeRsfService接口。
DARS接口:即DesensitizeAppRsfService接口。
equalsIgnoreCase():是用来比较字母的长度和字符是否相同,且不区分大小写。
Logger:日志记录器。
SLF4J:是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现。
Logback:是一个基于Java的日志框架。
log4j2:是一个基于Java的日志框架,是apache开发的一款Log4j的升级产品。
org.slf4j.LoggerFactory.getLogger方法:是一种获取logger日志实例的方法。
trace/info/debug/warn/error:是log4j定义的5个日志级别。
Spring框架:是一个开源的轻量级的Java开发框架,具有控制反转(IoC)和面向切面(AOP)两大核心。
Spring MVC:是Spring提供给Web应用的框架设计。
ResponseBodyAdvice接口方法:一种接口类方法。
Controller方法:是一种控制器方法,用于接收用户请求。
List集合:包括JavaList接口以及List接口的所有实现类。
Map集合:是一种键-值对(key-value)集合,Map集合中的每一个元素都包含一个键对象和一个值对象。
String类型:指字符串类型。
HTTP接口:是基于http协议的开发接口。
Appender:负责将日志事件传递到其目标。
org.slf4j.Logger接口:是一种打印日志接口。
Properties类:位于java.util.Properties,是Java语言的配置文件所使用的类。
Yaml:是一种通用的数据串行化格式。
ServiceAgent:服务代理。
JSON(JavaScript Object Notation,JS对象简谱):是一种轻量级的数据交换格式。
toString()方法:可把一个Number对象转换为一个字符串,并返回结果。
静态代理:是代理类和目标类实现同一个接口,让代理类持有目标类对象,在代理类中执行目标类方法,实现增强。
动态代理:是根据被代理类及其实现的接口,动态的创建一个代理类,当调用代理类实现的抽象方法时,就发起对被代理类同样的方法调用。
反射:是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
根据本发明的一实施方式结合图1示出。一种通用数据脱敏方法,包括如下步骤:
S101,将脱敏组件的jar包引入业务服务器中,业务服务器接入有应用程序。
S102,启动业务服务器,脱敏组件通过RSF接口调用公共服务模块提供的DRS接口。该DRS接口即DesensitizeRsfService接口,用于从公共服务模块中加载脱敏配置。
为了实现公共后管模块修改了某些应用的脱敏规则配置后,能实时通知这些应用来获取最新配置的功能,进行如下操作:
ServiceAgent的invoke方法声明如下:
Options中的LoadBalancer配置项为:
显然,LoadBalancer配置项中的list参数是当前接入脱敏组件的所有应用节点集合,因此我们可以挨个遍历list实现变相广播的能力。具体步骤如下:
1、自定义的一个LoadBalancer(负载均衡器),设置到Options中去并传给invoke()方法。
2、自定义的LoadBalancer在本次“发布脱敏配置”的第一次RSF调用时使用list.get(0)作为选择的ProviderAgent并记录list的size()大小,然后for循环进行剩余的list.size()–1次RSF调用,也即第i次RSF调用选择的应用节点即为list对应第i位置的ProviderAgent,如此则实现了RSF的广播功能。
S103,公共服务模块接收由脱敏组件发出的获取脱敏配置请求,根据应用编号(code)从公共数据库内读取相应的脱敏配置并返回。
S104,脱敏配置加载完毕后,脱敏组件应用相应的脱敏规则对接入数据进行脱敏。
S105,在公共后管模块中修改脱敏配置后,将其写入公共数据库内,并调用脱敏组件提供的DARS接口。该DARS接口即DesensitizeAppRsfService接口,用于通知脱敏组件下载脱敏配置。
S106,脱敏组件接收到重新加载通知后,再次调用DRS接口重新加载脱敏配置。
本申请的技术方案中,实现数据脱敏的主旨思想是:通过枚举出某一类脱敏对象的具体参数名(关键字key),然后通过对实际各参数key的遍历并与预先配置参数key进行equalsIgnoreCase()比较,如果匹配成功,则应用对应的脱敏规则进行脱敏。
下面通过一段yaml格式的脱敏配置来详细说明:
遍历User的所有字段,当匹配到mobile字段则应用上述脱敏规则,对mobile的相应字段进行隐位处理。
本发明实施例中,上述脱敏组件包括Logger日志脱敏单元和后管接口脱敏单元。当接入数据为后台日志类数据,调用Logger日志脱敏单元进行脱敏。当接入数据为接口返回类数据,调用后管接口脱敏单元进行脱敏。
参见图2,上述调用Logger日志脱敏单元进行脱敏,包括如下步骤:
S201,利用SLF4j日志体系的logback和log4j2桥接代码的共性,通过动态代理、静态代理或反射将org.slf4j.LoggerFactory.getLogger方法的返回值替换为自定义的Logger记录器。
在项目中对SLF4j日志API的使用一般如下所示:
在不改代码的情况下,实现替换上面logger成员变量为自定义的Logger实例,是整个日志脱敏需要克服的难点。
SLF4j日志体系是Java领域中日志框架的标准接口,其对具体的日志框架诸如logback、log4j2都有对应的桥接实现,分别位于下列依赖之中:
◆ch.qos.logback:logback-classic:{version}
◆org.apache.logging.log4j:log4j-slf4j-impl:{version}
在上述依赖中,都会存在一个`org.slf4j.StaticLoggerBinder`的单例类,该类实现了slf4j-api中的org.slf4j.spi.LoggerFactoryBinder接口,实现了其publicILoggerFactory getLoggerFactory()方法。由于该StaticLoggerBinder类是个单例模式的写法,其内部都有如下约定的代码:
实际上org.slf4j.LoggerFactory.getLogger()方法的调用,最终调用的就是上述getLoggerFactory()方法返回值ILoggerFactory的getLogger()方法。
因此,我们可以通过代理的方式,拦截public ILoggerFactorygetLoggerFactory()方法,修改其返回的ILoggerFactory为我们自定义的ILoggerFactory,然后接着在自定义的ILoggerFactory的public Logger getLogger(String name)中修改返回的Logger实例为自定义的代理Logger,最终实现对现有Logger声明无需改动的目标。
S202,重写Logger记录器的trace/info/debug/warn/error日志级别方法。
S203,在Logger记录器的日志级别方法执行开始时调用脱敏配置,对传入参数进行脱敏处理,将脱敏后的数据传递至被代理Logger记录器,执行日志打印。
参见图3,上述调用后管接口脱敏单元进行脱敏,包括:
S301,选择SpringMVC提供的ResponseBodyAdvice接口方法,对SpringMVC中的每个Controller方法进行拦截;
S302,若检查出Controller方法上存在@DataSensitive注解,则调用脱敏配置对Controller方法的返回结果进行脱敏处理。对接口返回结果数据的脱敏,即调用实现通用数据脱敏API接口即可。
对一般性数据进行脱敏的API接口定义如下,例如:
上述API接口的实现上要考虑target中的当前脱敏对象targetValue的类型。具体的,调用脱敏配置对Controller方法的返回结果进行脱敏处理,包括:
当targetValue返回结果为简单值类型,例如Java八大基本原始类型、Date、BigDecimal等类型时,将返回结果转换成字符串类型再调用脱敏规则。
当targetValue返回结果为数组或List集合类型,通过遍历数组或List集合,再递归调用脱敏规则,即调用上述desensitizeObject()接口方法。
当targetValue返回结果为Map集合,遍历Map集合,若Map的value值为简单类型,则直接调用脱敏规则,若Map的value值是复杂结构类型,则递归调用脱敏规则,即递归调用上述desensitizeObject()接口方法。
当targetValue返回结果为指定包下的自定义对象,其脱敏逻辑与Map类似,都是递归遍历自定义对象的属性字段,逐一调用脱敏规则。
当targetValue返回结果为String类型且为复杂结构类型,则通过正则表达式解析返回结果,并调用脱敏规则。
具体的,通过正则表达式解析targetValue返回结果,包括:
步骤1,采用正则表达式对返回结果进行分析、匹配和递归,找出具有赋值格式的键值对,键值对包括相对应的关键字和关键值。例如:赋值格式有key=value、key:value、"key"="value"、"key":"value"、'key':'value'、'key'='value'。
步骤2,对键值对的关键字进行匹配,匹配成功后,对关键值进行隐位处理。
本发明实施例中,上述desensitizeObject()方法的功能示例如下:
输入待脱敏数据:{"custNo":"261283828123","custInfo":{"mobile":"13812345678","idcard":"320100198705234712"}}
输出已脱敏数据:{"custNo":"261283828123","custInfo":{"mobile":"138****5678","idcard":"320100********4712"}}
此外,本发明实施例中还提供了脱敏白名单功能,白名单由系统账号或系统角色组成,处于白名单中的登录者可以看见未脱敏的原始数据。
参见图4,本发明还提供了一种通用数据脱敏系统,包括业务服务器、公共服务模块、公共后管模块和公共数据库,及脱敏组件。
业务服务器,用于安装应用程序和脱敏组件,应用程序具有应用编号;
公共服务模块,用于接收由脱敏组件发出的获取脱敏配置请求,根据应用编号从公共数据库内读取相应的脱敏配置并返回;
公共后管模块,用于修改脱敏配置,将其写入公共数据库内,并通过RSF广播通知所有接入脱敏组件的应用程序重新加载脱敏配置;
公共数据库,用于存储脱敏配置。
上述脱敏组件包括Logger日志脱敏单元和后管接口脱敏单元。
其中,Logger日志脱敏单元,用于根据脱敏配置对后台日志类数据进行脱敏;
调用Logger日志脱敏单元进行脱敏,包括:利用SLF4j日志体系的logback和log4j2桥接代码的共性,通过动态代理、静态代理或反射将org.slf4j.LoggerFactory.getLogger方法的返回值替换为自定义的Logger记录器;重写Logger记录器的trace/info/debug/warn/error日志级别方法;在Logger记录器的日志级别方法执行开始时调用脱敏配置,对传入参数进行脱敏处理,将脱敏后的数据传递至被代理Logger记录器,执行日志打印;
后管接口脱敏单元,用于根据脱敏配置对接口返回类数据进行脱敏;
调用后管接口脱敏单元进行脱敏,包括:选择SpringMVC提供的ResponseBodyAdvice接口方法,对SpringMVC中的每个Controller方法进行拦截;若检查出Controller方法上存在@DataSensitive注解,则调用脱敏配置对Controller方法的返回结果进行脱敏处理。
本发明还提供了一种计算设备,包括:存储器,用于存储程序指令;处理器,用于调用存储器中存储的程序指令,按照获得的程序执行上述任一项的方法。
本发明还提供了一种计算机可读存储介质,包括计算机可读指令,当计算机读取并执行计算机可读指令时,使得计算机执行上述任一项的方法。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
应理解,所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明的技术范围不仅仅局限于上述说明中的内容,本领域技术人员可以在不脱离本发明技术思想的前提下,对上述实施例进行多种变形和修改,而这些变形和修改均应当属于本发明的保护范围内。
Claims (9)
1.一种通用数据脱敏方法,其特征在于,包括如下步骤:
将脱敏组件的jar包引入业务服务器中,所述业务服务器接入有应用程序;
启动业务服务器,脱敏组件通过RSF接口调用公共服务模块提供的DRS接口;
公共服务模块接收由所述脱敏组件发出的获取脱敏配置请求,根据应用编号从公共数据库内读取相应的脱敏配置并返回;
脱敏配置加载完毕后,脱敏组件应用相应的脱敏规则对接入数据进行脱敏;
在公共后管模块中修改脱敏配置后,将其写入公共数据库内,并调用脱敏组件提供的DARS接口;
脱敏组件接收到重新加载通知后,再次调用DRS接口重新加载脱敏配置;
其中,
所述脱敏组件包括Logger日志脱敏单元和后管接口脱敏单元;
当接入数据为后台日志类数据,调用Logger日志脱敏单元进行脱敏;
当接入数据为接口返回类数据,调用后管接口脱敏单元进行脱敏。
2.根据权利要求1所述的通用数据脱敏方法,其特征在于,所述调用Logger日志脱敏单元进行脱敏,包括:
利用SLF4j日志体系的logback和log4j2桥接代码的共性,通过动态代理、静态代理或反射将org.slf4j.LoggerFactory.getLogger方法的返回值替换为自定义的Logger记录器;
重写Logger记录器的trace/info/debug/warn/error日志级别方法;
在Logger记录器的日志级别方法执行开始时调用脱敏配置,对传入参数进行脱敏处理,将脱敏后的数据传递至被代理Logger记录器,执行日志打印。
3.根据权利要求1所述的通用数据脱敏方法,其特征在于,所述调用后管接口脱敏单元进行脱敏,包括:
选择SpringMVC提供的ResponseBodyAdvice接口方法,对SpringMVC中的每个Controller方法进行拦截;
若检查出Controller方法上存在@DataSensitive注解,则调用脱敏配置对Controller方法的返回结果进行脱敏处理。
4.根据权利要求3所述的通用数据脱敏方法,其特征在于,所述调用脱敏配置对Controller方法的返回结果进行脱敏处理,包括:
当返回结果为简单值类型,将返回结果转换成字符串类型再调用脱敏规则;
当返回结果为数组或List集合类型,通过遍历数组或List集合,再递归调用脱敏规则;
当返回结果为Map集合,遍历Map集合,若Map的value值为简单类型,则直接调用脱敏规则,若Map的value值是复杂结构类型,则递归调用脱敏规则;
当返回结果为指定包下的自定义对象,则遍历自定义对象的属性字段,逐一调用脱敏规则;
当返回结果为String类型且为复杂结构类型,则通过正则表达式解析返回结果,并调用脱敏规则。
5.根据权利要求4所述的通用数据脱敏方法,其特征在于,所述通过正则表达式解析返回结果,并调用脱敏规则,包括:
采用正则表达式对返回结果进行分析、匹配和递归,找出具有赋值格式的键值对,键值对包括相对应的关键字和关键值;
对键值对的关键字进行匹配,匹配成功后,对关键值进行隐位处理。
6.一种通用数据脱敏组件,安装于业务服务器上,其特征在于,包括:
Logger日志脱敏单元,用于根据脱敏配置对后台日志类数据进行脱敏;
所述调用Logger日志脱敏单元进行脱敏,包括:利用SLF4j日志体系的logback和log4j2桥接代码的共性,通过动态代理、静态代理或反射将org.slf4j.LoggerFactory.getLogger方法的返回值替换为自定义的Logger记录器;重写Logger记录器的trace/info/debug/warn/error日志级别方法;在Logger记录器的日志级别方法执行开始时调用脱敏配置,对传入参数进行脱敏处理,将脱敏后的数据传递至被代理Logger记录器,执行日志打印;
后管接口脱敏单元,用于根据脱敏配置对接口返回类数据进行脱敏;
所述调用后管接口脱敏单元进行脱敏,包括:选择SpringMVC提供的ResponseBodyAdvice接口方法,对SpringMVC中的每个Controller方法进行拦截;若检查出Controller方法上存在@DataSensitive注解,则调用脱敏配置对Controller方法的返回结果进行脱敏处理。
7.一种通用数据脱敏系统,其特征在于,包括业务服务器、公共服务模块、公共后管模块和公共数据库,及如根据权利要求7所述的脱敏组件;
所述业务服务器,用于安装应用程序和脱敏组件,所述应用程序具有应用编号;
所述公共服务模块,用于接收由所述脱敏组件发出的获取脱敏配置请求,根据应用编号从公共数据库内读取相应的脱敏配置并返回;
所述公共后管模块,用于修改脱敏配置,将其写入公共数据库内,并通过RSF广播通知所有接入脱敏组件的应用程序重新加载脱敏配置;
所述公共数据库,用于存储脱敏配置。
8.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至5任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110601216.3A CN113343293B (zh) | 2021-05-31 | 2021-05-31 | 通用数据脱敏方法、组件、系统、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110601216.3A CN113343293B (zh) | 2021-05-31 | 2021-05-31 | 通用数据脱敏方法、组件、系统、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113343293A true CN113343293A (zh) | 2021-09-03 |
CN113343293B CN113343293B (zh) | 2022-07-22 |
Family
ID=77472844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110601216.3A Active CN113343293B (zh) | 2021-05-31 | 2021-05-31 | 通用数据脱敏方法、组件、系统、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113343293B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114721916A (zh) * | 2022-03-08 | 2022-07-08 | 北京健康之家科技有限公司 | 日志生成方法、装置、终端设备及介质 |
CN115357940A (zh) * | 2022-10-19 | 2022-11-18 | 支付宝(杭州)信息技术有限公司 | 一种数据处理的方法、装置、存储介质及电子设备 |
CN115374481A (zh) * | 2022-10-19 | 2022-11-22 | 支付宝(杭州)信息技术有限公司 | 数据脱敏处理的方法、装置、存储介质及电子设备 |
CN115688151A (zh) * | 2023-01-05 | 2023-02-03 | 恒丰银行股份有限公司 | 一种针对敏感信息的脱敏复敏方法、系统及终端机 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109726590A (zh) * | 2018-12-24 | 2019-05-07 | 平安普惠企业管理有限公司 | 系统日志脱敏方法、脱敏系统、计算机设备及存储介质 |
CN110175465A (zh) * | 2019-04-15 | 2019-08-27 | 深圳壹账通智能科技有限公司 | 日志脱敏方法、装置、计算机设备和计算机可读存储介质 |
CN111651784A (zh) * | 2020-04-28 | 2020-09-11 | 中国平安财产保险股份有限公司 | 日志脱敏方法、装置、设备及计算机可读存储介质 |
-
2021
- 2021-05-31 CN CN202110601216.3A patent/CN113343293B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109726590A (zh) * | 2018-12-24 | 2019-05-07 | 平安普惠企业管理有限公司 | 系统日志脱敏方法、脱敏系统、计算机设备及存储介质 |
CN110175465A (zh) * | 2019-04-15 | 2019-08-27 | 深圳壹账通智能科技有限公司 | 日志脱敏方法、装置、计算机设备和计算机可读存储介质 |
CN111651784A (zh) * | 2020-04-28 | 2020-09-11 | 中国平安财产保险股份有限公司 | 日志脱敏方法、装置、设备及计算机可读存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114721916A (zh) * | 2022-03-08 | 2022-07-08 | 北京健康之家科技有限公司 | 日志生成方法、装置、终端设备及介质 |
CN115357940A (zh) * | 2022-10-19 | 2022-11-18 | 支付宝(杭州)信息技术有限公司 | 一种数据处理的方法、装置、存储介质及电子设备 |
CN115374481A (zh) * | 2022-10-19 | 2022-11-22 | 支付宝(杭州)信息技术有限公司 | 数据脱敏处理的方法、装置、存储介质及电子设备 |
CN115688151A (zh) * | 2023-01-05 | 2023-02-03 | 恒丰银行股份有限公司 | 一种针对敏感信息的脱敏复敏方法、系统及终端机 |
CN115688151B (zh) * | 2023-01-05 | 2023-04-07 | 恒丰银行股份有限公司 | 一种针对敏感信息的脱敏复敏方法、系统及终端机 |
Also Published As
Publication number | Publication date |
---|---|
CN113343293B (zh) | 2022-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113343293B (zh) | 通用数据脱敏方法、组件、系统、计算机设备和存储介质 | |
US9992166B2 (en) | Hierarchical rule development and binding for web application server firewall | |
CN108156022B (zh) | 一种服务调用方法、装置及电子设备 | |
US10387171B2 (en) | Configurable development platform integrating heterogeneous persistence systems | |
US9141444B2 (en) | Inter-application communication on mobile platforms | |
US10169035B1 (en) | Customized static source code analysis | |
US7770185B2 (en) | Interceptor method and system for web services for remote portlets | |
US7996816B2 (en) | Method and apparatus for dynamically binding service component implementations for specific unit test cases | |
Jha et al. | Developer mistakes in writing android manifests: An empirical study of configuration errors | |
US20030105838A1 (en) | System and method for actively managing an enterprise of configurable components | |
US20080271046A1 (en) | Dynamically loading scripts | |
US8983935B2 (en) | Methods for utilizing a javascript emulator in a web content proxy server and devices thereof | |
US20030149799A1 (en) | System supporting unified event handling in ECMAScript | |
US11762763B2 (en) | Orchestration for automated performance testing | |
US11650905B2 (en) | Testing source code changes | |
US7984456B2 (en) | Interceptor framework using java dynamic proxies | |
US8250226B2 (en) | Generating one or more clients for generating one or more synthetic transactions with one or more web service operations | |
CN114595201A (zh) | 一种接口访问日志采集记录查询方法、设备及存储介质 | |
US8984124B2 (en) | System and method for adaptive data monitoring | |
CN103955477A (zh) | 在浏览器中写读Cookie信息的方法、装置和浏览器 | |
CN113360377B (zh) | 一种测试方法和装置 | |
GB2408813A (en) | Monitoring a data processing system using event metadata | |
US11928051B2 (en) | Test space sampling for model-based biased random system test through rest API | |
US7406520B2 (en) | Identifying interfaces related to a service | |
US7904552B2 (en) | Managing a server-based directory of web services |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |