数据脱敏方法及装置与流程

文档序号:31049061发布日期:2022-08-06 06:14阅读:289来源:国知局
数据脱敏方法及装置与流程

1.本技术涉及计算机技术领域,尤其涉及数据脱敏方法及装置。


背景技术:

2.数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。常见的敏感信息包括姓名、手机号、密码等。
3.目前,在对数据(例如,日志)进行脱敏处理时,一般是通过正则表达式对数据进行扫描匹配,即通过每种敏感类型对应的正则表达式,确定该数据中是否存在该敏感类型对应的敏感信息(例如,姓名),从而在确定存在该敏感类型对应的敏感信息时,对该敏感信息进行脱敏。
4.然而,当需进行脱敏处理的数据量较大时,利用正则表达式对数据进行扫描匹配需要较长的时间,从而导致确定数据中的敏感信息所需的时间较长,进而造成脱敏处理效率低。


技术实现要素:

5.为克服相关技术中存在的问题,本技术提供了数据脱敏方法及装置。
6.根据本技术实施例的第一方面,提供一种数据脱敏方法,所述方法包括:
7.确定待处理数据中的对象,并从所述待处理数据中获取所述对象的属性信息;
8.在所述对象的属性信息对应于敏感标签的情况下,基于所述敏感标签对所述属性信息进行脱敏处理;其中,所述敏感标签表示预先为所述对象所属类中的敏感属性设置的标记。
9.可选的,所述基于所述敏感标签对所述属性信息进行脱敏处理,包括:
10.获取所述敏感标签中的设定属性参数,并基于所述设定属性参数对应的脱敏规则,对所述属性信息进行脱敏处理。
11.可选的,所述基于所述敏感标签对所述属性信息进行脱敏处理,包括:
12.确定所述对象对应的目标脱敏变量标记;所述目标脱敏变量标记用于指示是否对所述对象进行脱敏处理;
13.在所述目标脱敏变量标记指示对所述对象进行脱敏处理的情况下,基于所述敏感标签,对所述属性信息进行脱敏处理。
14.可选的,所述确定所述对象对应的目标脱敏变量标记,包括:
15.确定处理所述对象对应的属性信息的目标处理线程;
16.获取所述目标处理线程对应的脱敏变量标记,并根据所述脱敏变量标记确定所述对象对应的目标脱敏变量标记。
17.可选的,所述方法还包括:
18.响应于标记更新操作,对所述目标处理线程对应的脱敏变量标记进行更新。
19.可选的,所述待处理数据包括日志;
20.所述确定待处理数据中的对象,包括:
21.确定输出所述日志的第一日志方法,并确定所述第一日志方法对应的第一方法类型;
22.在所述第一日志方法为所述第一方法类型对应的预设脱敏日志方法的情况下,确定所述待处理数据所包括的日志中的对象。
23.可选的,所述确定所述待处理数据所包括的日志中的对象,包括:
24.获取所述日志对应的日志级别,并获取所述第一日志方法对应的预设级别;
25.在所述日志级别大于或等于所述预设级别的情况下,确定所述待处理数据所包括的日志中的对象。
26.可选的,所述方法还包括:
27.响应于接收到方法替换请求,获取所述方法替换请求中的第二方法类型;
28.将目标代码中的第二方法类型对应的第二日志方法替换为所述第二方法类型对应的预设脱敏日志方法。
29.可选的,所述方法还包括:
30.在确定所述属性信息不存在对应的敏感标签的情况下,对所述属性信息进行标准序列化操作。
31.可选的,所述方法还包括:
32.在所述待处理数据包含非对象信息的情况下,确定所述非对象信息对应的数据类型;
33.在所述数据类型为预设脱敏数据类型的情况下,基于所述数据类型对应的脱敏规则,对所述非对象信息进行脱敏处理。
34.根据本技术实施例的第二方面,提供一种工时确定装置,包括:
35.属性获取模块,用于确定待处理数据中的对象,并从所述待处理数据中获取所述对象的属性信息;
36.数据脱敏模块,用于在所述对象的属性信息对应于敏感标签的情况下,基于所述敏感标签对所述属性信息进行脱敏处理;其中,所述敏感标签表示预先为所述对象所属类中的敏感属性设置的标记。
37.可选的,数据脱敏模块具体用于:
38.获取所述敏感标签中的设定属性参数,并基于所述设定属性参数对应的脱敏规则,对所述属性信息进行脱敏处理。
39.可选的,数据脱敏模块具体用于:
40.确定所述对象对应的目标脱敏变量标记;其中,所述目标脱敏变量标记用于指示是否对所述对象进行脱敏处理;
41.在所述目标脱敏变量标记指示对所述对象进行脱敏处理的情况下,基于所述敏感标签,对所述属性信息进行脱敏处理。
42.可选的,数据脱敏模块还用于:
43.确定处理所述对象对应的属性信息的目标处理线程;
44.获取所述目标处理线程对应的脱敏变量标记,并根据所述脱敏变量标记确定所述对象对应的目标脱敏变量标记。
45.可选的,数据脱敏模块还用于:
46.响应于标记更新操作,对所述目标处理线程对应的脱敏变量标记进行更新。
47.可选的,所述待处理数据包括日志;
48.所述属性获取模块具体用于:
49.确定输出所述日志的第一日志方法,并确定所述第一日志方法对应的第一方法类型;
50.在所述第一日志方法为所述第一方法类型对应的预设脱敏日志方法的情况下,确定所述待处理数据所包括的日志中的对象。
51.可选的,所述属性获取模块具体用于:
52.获取所述日志对应的日志级别,并获取所述第一日志方法对应的预设级别;
53.在所述日志级别大于或等于所述预设级别的情况下,确定所述待处理数据所包括的日志中的对象。
54.可选的,所述数据脱敏模块还用于:
55.响应于接收到方法替换请求,获取所述方法替换请求中的第二方法类型;
56.将目标代码中的第二方法类型对应的第二日志方法替换为所述第二方法类型对应的预设脱敏日志方法。
57.可选的,所述数据脱敏模块还用于:
58.在确定所述属性信息不存在对应的敏感标签的情况下,对所述属性信息进行标准序列化操作。
59.可选的,所述数据脱敏模块还用于:
60.在所述待处理数据包含非对象信息的情况下,确定所述非对象信息对应的数据类型;
61.在所述数据类型为预设脱敏数据类型的情况下,基于所述数据类型对应的脱敏规则,对所述非对象信息进行脱敏处理。
62.根据本技术实施例的第三方面,提供一种计算机设备,包括:
63.处理器;
64.用于存储处理器可执行指令的存储器;
65.其中,所述处理器被配置为:
66.确定待处理数据中的对象,并从所述待处理数据中获取所述对象的属性信息;
67.在所述对象的属性信息对应于敏感标签的情况下,基于所述敏感标签对所述属性信息进行脱敏处理;其中,所述敏感标签表示预先为所述对象所属类中的敏感属性设置的标记。
68.根据本技术实施例的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的数据脱敏方法。
69.根据本技术实施例的第五方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的数据脱敏方法。
70.本技术的实施例提供的技术方案可以包括以下有益效果:
71.本技术实施例中,在对待处理数据进行脱敏处理的情况下,确定该待处理数据中的各个对象以及各个对象所对应的属性信息,并确定各个对象所对应的类,即对象所属类中的敏感标签,该敏感标签是为对象所属类中的敏感属性设置的标记。对于每个对象的属性信息,判断该属性信息是否对应于敏感标签,即判断该对象所对应的类中的该属性信息是否存在相应的敏感标签,以确定该属性信息是否为敏感属性,也即确定是否需对该属性信息进行脱敏处理。在该属性信息对应于敏感标签的情况下,表明该属性信息为敏感属性,即表明需对该属性信息进行脱敏处理,则利用该敏感标签对应的脱敏方法,对该属性信息进行脱敏处理,实现敏感信息的快速确定,从而实现数据的快速脱敏处理,提高数据脱敏效率,且由于无需利用正则表达式对数据进行扫描匹配,可以减少资源的占用。
72.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
73.此处的附图被并入说明书中并构成本技术的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
74.图1是本技术根据一示例性实施例示出的一种数据脱敏方法的流程图。
75.图2是本技术根据一示例性实施例示出的另一种数据脱敏方法的流程图。
76.图3是本技术根据一示例性实施例示出的参数方法映射关系图。
77.图4是本技术根据一示例性实施例示出的数据脱敏过程示意图。
78.图5是本技术实施例数据脱敏装置所在计算机设备的一种硬件结构图。
79.图6是本技术根据一示例性实施例示出的一种数据脱敏装置的框图。
具体实施方式
80.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
81.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
82.应当理解,尽管在本技术可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
83.接下来对本技术实施例进行详细说明。
84.如图1所示,图1是本技术根据一示例性实施例示出的一种数据脱敏方法的流程图,应用于计算机设备,该方法包括以下步骤:
85.步骤101、确定待处理数据中的对象,并从待处理数据中获取对象的属性信息。
86.在本实施例中,在获取到数据(即待处理数据)后,当需要对该数据进行脱敏处理时,获取该数据所包括的各个对象数据,该对象数据包括对象对应的所有属性信息。
87.其中,对象是类的实例。对象对应的属性信息包括属性名和属性值,例如,obj2.address='x市',该obj2为一个对象,address为obj2对象的一个属性,'x市'为相应的属性值。
88.可选的,待处理数据包括日志、应用数据(例如,业务数据)中的一个或多个。其中,日志为程序在运行过程中所输出的日志;应用数据为程序(例如,应用系统)在运行中所产生的数据。该业务数据为在程序运行过程中进行相关业务操作所产生的数据,例如,业务操作指示转账操作,业务数据包括收款人的相关信息。
89.步骤102、在对象的属性信息对应于敏感标签的情况下,基于敏感标签对属性信息进行脱敏处理。其中,敏感标签表示预先为对象所属类中的敏感属性设置的标记。
90.在本实施例中,对于对象对应的每个属性信息,判断该属性信息是否对应于敏感标签,即判断该对象对应的类中的该属性信息是否存在相应的敏感标签,也即确定该属性信息是否为敏感信息。在确定该属性信息对应于敏感标签时,表明该属性信息为敏感信息,即为该对象中的需进行脱敏处理的信息,则对该属性信息进行脱敏处理,即对该属性信息中的属性值进行脱敏。
91.其中,敏感标签为相关开发人员根据实际需求,预先为对象所属类中的敏感属性设置的标记,即当相关人员确定相关类中的某个属性信息为敏感信息时,在定义该类时,为该类中的该属性信息添加敏感标签,例如,敏感标签为@sensitivemaskfield。相应的,在待处理数据包括该类对应的对象所对应的该属性信息时,由于该属性信息存在相应的敏感标签,因此,可以确定该属性信息为敏感信息,需要对该属性信息进行脱敏处理,实现敏感信息的快速确定。
92.其中,类对应的对象为对该类进行实例化得到的对象。
93.举例而言,开发人员根据需求,确定用户姓名和用户手机号为敏感信息,当定义的类中包括用户姓名和用户手机号这两个属性时,为用户姓名和用户手机号添加敏感标签,以便后续在待处理数据包括该类对应的实例对象所对应的用户姓名和/或用户手机号时,可以直接通过敏感标签确定该用户姓名和/或用户手机号为敏感信息。其中,为该类添加敏感标签的代码具体如下:
94.java
95.@data
96.@sensitive
97.public class userdto{
98./**.
99.*
100.用户姓名
101.*
102.@sensitivefield(sensitiveenum.name)
103.private string name;
104./**
105.*用户手机号
106.@sensitivefield(sensitiveenum.phone)
107.private string phone;
108./**
109.*用户地址
110.private string address。
111.可选的,在确定对象的属性信息是否对应于敏感标签之前,可以先确定该对象所属的类,即该对象所对应的类是否为设定类,该设定类为存在敏感标签的类,在确定该对象所属的类型为设定类的情况下,继续确定该对象的属性信息是否对应于敏感标签。
112.在本实施例中,当敏感信息大多以对象为载体时,可以根据需求,为相关对象(即对象所对应的相关类)的具体属性设置敏感标签,该敏感标签仅做标识,以对对象的属性进行转化,且实现对代码无侵入式修改,不影响代码的正常运行。
113.在本实施例中,在得到待处理数据后,判断待处理数据中的对象的属性是否存在敏感标签,若存在,表明该属性为敏感属性,需要对其进行脱敏处理,则直接对其进行脱敏处理,无需利用正则表达式进行扫描匹配,可以有效降低对cpu的占用,从而减少资源的占用,从而缩短其它业务的响应时间。
114.从上述描述可知,在对待处理数据进行脱敏处理的情况下,确定该待处理数据中的各个对象以及各个对象所对应的属性信息,并确定各个对象所对应的类中的敏感标签,该敏感标签是为对象所属类中的敏感属性设置的标记。对于每个对象的属性信息,判断该属性信息是否对应于敏感标签,即判断该对象所对应的类中的该属性信息是否存在相应的敏感标签,以确定该属性信息是否为敏感属性,也即确定是否需对该属性信息进行脱敏处理。在该属性信息对应于敏感标签的情况下,表明该属性信息为敏感属性,即表明需对该属性信息进行脱敏处理,则利用该敏感标签对应的脱敏方法,对该属性信息进行脱敏处理,实现敏感信息的快速确定,从而实现数据的快速脱敏处理,提高数据脱敏效率,且由于无需利用正则表达式对数据进行扫描匹配,可以减少资源的占用。
115.如图2所示,图2是本技术根据一示例性实施例示出的另一种数据脱敏方法的流程图,本实施方式在前述实施例的基础上,描述了如何对敏感信息进行脱敏的过程,下面将结合一个具体实施例对此过程进行详细说明,如图2所示,该方法包括以下步骤:
116.步骤201、确定待处理数据中的对象,并从所述待处理数据中获取所述对象的属性信息。
117.在本实施例中,由于日志是通过执行相关日志方法输出的,为了提高数据脱敏的效率,可以通过替换相关日志方法以在输出日志时,直接确定通过该日志方法输出的日志是否需要进行脱敏,其具体过程为:响应于接收到方法替换请求,获取方法替换请求中的第二方法类型。将目标代码中的第二方法类型对应的第二日志方法替换为第二方法类型对应的预设脱敏日志方法。
118.具体的,在接收到方法替换请求时,该方法替换请求包括第二方法类型,即需要进行替换的日志方法所对应的类型。将与生成该日志相关的目标代码(例如,输出日志的程序所对应的代码)中的该第二方法类型对应的日志方法(即第二日志方法)替换为该第二方法
类型对应的预设脱敏日志方法,该第二方法类型对应的预设脱敏日志方法,实现日志方法的替换,以供在待处理数据中包括基于该预设脱敏日志方法输出的日志时,表明需要对该日志进行脱敏处理,从而可以在源头上实现对脱敏数据的分流。
119.其中,第二日志方法是slf4j接口提供的日志方法,第二方法类型对应的预设脱敏日志方法是扩展slf4j接口得到的。第二方法类型对应的预设脱敏日志方法实现的功能与该第二方法类型对应的第二日志方法所实现的功能相同,相应的,该预设脱敏日志方法输出的日志(例如,日志的内容、格式等)与该第二日子方法输出的日志相同。
120.可选的,第二方法类型包括info类型、trace类型、debug类型、warn类型和error类型中的一个或多个。例如,当第二方法类型为info类型时,第二方法类型对应的第二日志方法为logger.info(),第二方法类型对应的预设脱敏日志方法为logger.maskinfo(),将目标代码中的logger.info()方法替换为logger.maskinfo()。
121.其中,目标代码可以是指定的程序对应的部分代码(例如,功能模块对应的代码),也可以是程序对应的全部代码,实现日志方法的全量替换。
122.在本实施例中,将org.slf4j.logger接口复制一份,放入程序对应的项目中,包名采用org.slf4j不变,用于覆盖原有的logger接口,同理将org.apache.logging.slf4j.log4jlogger复制一份,追加脱敏处理方法,原有方法不变。
123.可选的,在对目标代码中的日志方法替换后,当得到待处理数据时,该待处理数据包括日志。确定输出日志的第一日志方法,并确定第一日志方法对应的第一方法类型。在第一日志方法为第一方法类型对应的预设脱敏日志方法的情况下,确定待处理数据中的对象。
124.具体的,对于每条日志,确定输出该日志的日志方法(即第一日志方法),即在调用该第一日志方法时,输出了该日志。在该第一日志方法对应的方法类型(即第一方法类型)为该第一方法类型对应的预设脱敏日志方法的情况下,表明该第一日志方法为预设脱敏日志方法,换言之,通过该第一日志方法输出的日志需要涉及脱敏处理,则确定待处理数据所包括的日志中的对象,以判断该对象的属性信息是否进行脱敏。
125.可选的,由于日志方法的类型不同,主要输出的日志不同,因此,可以利用日志级别对基于该日志方法输出的日志进行筛选,以确定该日志方法输出的所有日志中需涉及脱敏处理的日志,即获取日志对应的日志级别,并获取第一日志方法对应的预设级别。在日志级别大于或等于预设级别的情况下,确定待处理数据所包括的日志中的对象。
126.具体的,获取该日志所属的级别,以得到该日志对应的日志级别,并获取输出该日志的第一日志方法对应的预设级别,该预设级别用于判断是否该日志是否需要涉及脱敏处理。在该日志对应的日志级别大于该第一日志方法对应的预设级别时,表明该日志需要涉及脱敏处理,则获取该日志中的对象所对应的各个属性信息。在该日志对应的日志级别大于该第一日志方法对应的预设级别时,确定该日志无需涉及脱敏处理,则无需获取该日志中的对象所对应的各个属性信息,可以继续处理下一条日志,以确定是否需要对该下一条日志进行脱敏处理。
127.其中,预设级别可以根据实际需求进行设置。例如,当第一日志方法为logger.masktrace()时,其对应的预设级别(即level)为;trace级别;当第一日志方法为logger.maskdebug()时,其对应的预设级别(即level)为;debug级别;当第一日志方法为
logger.maskinfo()时,其对应的预设级别(即level)为;info级别;当第一日志方法为logger.maskwarn()时,其对应的预设级别(即level)为;warn级别;当第一日志方法为logger.maskerror()时,其对应的预设级别(即level)为;error级别。
128.可选的,第一方法类型包括info类型、trace类型、debug类型、warn类型和error类型中的一个或多个。
129.可选的,级别的高低可以是slf4j接口原有的日志方法所默认的,也可以是开发人员根据实际需求进行设置的,在此,不对其进行限制。
130.可选的,在待处理数据包含非对象信息的情况下,确定非对象信息对应的数据类型;在数据类型为预设脱敏数据类型的情况下,基于数据类型对应的脱敏规则,对非对象信息进行脱敏处理。
131.其中,预设脱敏数据类型可以根据实际需求进行设置,例如,预设脱敏数据类型包括string类型(即字符串类型)、date类型(即日期类型)等。
132.具体的,获取待处理数据中的除对象数据,即对象对应的属性信息以外的数据,也即非对象信息。当该非对象信息的数据类型为预设脱敏数据类型时,利用该数据类型对应的脱敏规则,对该非对象信息进行脱敏处理,保证数据脱敏的全面性。例如,当非对象信息为“今天天气很好啊”,该非对象信息对应的数据类型为string类型,则获取该string类型对应的脱敏规则,即脱敏方法为sensitiveutils.maskcontext方法,该方法指示显示3个字,然后掩藏3个字,从而脱敏处理后的非对象信息为“今天天***啊”。
133.步骤202、在对象的属性信息对应于敏感标签的情况下,获取敏感标签中的设定属性参数。其中,敏感标签表示预先为对象所属类中的敏感属性设置的标记。
134.在本实施例中,在得到待处理数据后,需对该待处理数据进行序列化处理,则在待处理数据进行序列化处理的过程中,对于该待处理数据中的对象中的每个属性信息,判断该属性信息是否对应于敏感标签,即判断该属性信息是否存在相应的敏感标签。在确定该属性信息对应于敏感标签时,表明需要对该敏感信息进行脱敏处理,则获取该敏感标签中的设定属性参数,以供利用该设定属性参数确定处理该属性信息的脱敏方法。
135.可选的,敏感标签中的设定属性参数与该敏感标签对应的属性信息中的属性名称相对应,其用于查找相应的脱敏方法,即脱敏规则。不同开发人员的命名习惯可能不同,且不同属性名称所对应的格式可能会相同(例如,创建日期、删除日期均对应日期格式,可以通过日期格式对应的脱敏方法,对两者进行脱敏),因此,基于该属性名称所代表的含义、以及对应的格式,设定相应的设定属性参数,例如,上述添加敏感标签代码中的name为属性名称name对应的设定属性参数,即时后续属性名称name的命名发生改变,也不会对该设定属性参数造成影响,仍可以利用该设定属性参数查找相应的脱敏规则,且其它格式的属性名称也可以使用该设定属性参数查找相应的脱敏规则,减少开发人员的工作量。
136.可选的,基于jackson的序列化扩展接口,构建执行器对象,即执行器类sensitivemaskdataserializer,以利用该执行器识别,即判断属性信息是否存在相应的敏感标签。该执行器类继承jsonserializer,即public class sensitivemaskdataserializer extends jsonserializer implements contextualserializer。
137.步骤203、基于设定属性参数对应的脱敏规则,对属性信息进行脱敏处理。
138.在本实施例中,在确定属性信息存在对应的敏感标签的情况下,查找该敏感标签中的设定属性参数所对应的脱敏规则,即脱敏方法,对该属性信息进行脱敏处理。
139.其中,设定属性参数为构建的枚举对象sensitivemaskenum的属性,该对象中的每个对象为一个设定属性参数,与一个脱敏方法相对应。其中,构建该枚举对象的代码为:
140.public enum sensitivemaskenum{
141.context,//文本
142.cn_id,//中国公民身份证date,
143.date,//日期
144.email,//邮件
145.ch_name,//中文姓名,模糊除姓氏以外的部分,例如,王小小-》王**
146.ch_name_mid,//中文名模糊中间,例如,王小小-》王*小
147.phone,//手机号码
148.address,//地址;
149.code,//用户编号
150.}。
151.举例来说,当属性信息对应的敏感标签中的设定属性参数为email时,查找该email对应的脱敏处理方法,以利用该脱敏处理方法对该属性信息进行脱敏。
152.可选的,为了实现利用设定属性参数确定脱敏规则,需要在创建敏感标签的情况下,设置该设定属性参数对应的枚举对象,其中,该创建代码具体为:
153./**
154.*description:sensitive annotation for field of class.
155.*/
156.@retention(retentionpolicy.runtime)
157.@inherited
158.@target(value={elementtype.field})
159.@jacksonannotationsinside
160.@jsonserialize(using=sensitivedataserializer.class)
161.public@interface sensitivemaskfield{
162./**
163.*value from sensitiveenum
164.*/
165.sensitivemaskenum value();
166.}。
167.可选的,在创建敏感标签时,需要利用序列化工具,例如,jackson的扩展序列化接口,进行创建。
168.可选的,脱敏方法可以是从sensitiveutils工具集,即脱敏方法集确定的,该sensitiveutils工具集中包含开发人员根据实际需求,预先设置的不同类型的脱敏方法,该脱敏方法与敏感标签中的设定属性参数相对应,例如,如图3所示,当设定属性参数为name时,表明需要从sensitiveutils工具集,即脱敏方法集中查找对该name对应的脱敏方
法,以对属性信息中的姓名进行掩码,即脱敏。
169.在本实施例中,建立包含多种脱敏方法的sensitiveutils工具集,可针对不同属性,按照不同要求进行脱敏处理,实现数据脱敏多样化。
170.可选的,脱敏方法,即脱敏具体规则可以根据实际需求进行设置。例如,在对姓名进行脱敏处理时,可以对姓名的中间部分进行模糊,举例来说,张三,经过脱敏处理后为张*;王小小,经过脱敏处理后为王*小,也可以对姓名中的除姓氏以外的部分进行模糊,举例来说,王小小,经过脱敏处理后为王**。又例如,在对电话号码(例如,手机号、固定电话号码等)进行脱敏处理时,可以对电话号码的中间四位进行模糊,举例来说,电话号码为11122223333,经过脱敏处理后为111****3333;也可以其它位置的预设数目的数字进行模糊,例如,模糊最后四位数字,举例来说,电话号码为11122223333,经过脱敏处理后为1112222***。
171.其中,对电话号码的中间四位进行模糊的具体代码为:
172./**
173.*《p》sensitive name,mianame would be mask.《/p》
174.*《p》example;《/p》
175.*《p》张三,王小小-》张*,王*小《/p》
176.*@param name
177.*@return mask'name//返回掩码后的姓名
178.*/
179.public static string maskchmidname(string name){
180.//just 1character dont need mask姓名的字数为1时,不需要进行掩码;
181.if(stringutils.length(name)《3){
182.return maskchname(name);
183.}
184.string firstname=stringutils.substring(name,start:0,end:1);
185.int padlength=name.lengtho-1;
186.string lastname=stringutils.substring(name,padlength);
187.return stringutils.rightpad(firstname,padlength,mask_flag).concat(lastname);
188.}。
189.其中,对电话号码的中间四位进行模糊的具体代码为:
190./**
191.*《p》if phone's length greater than 7,sensitive phonenm need would be mask.《/p》
192.*《p》exomple;《/p》
193.*《p》11122223333-》111****3333《/p》
194.*《p》+8611122223333-》+86111****3333《/p》
195.*《p》010-66611166-》010-****1166《/p》
196.*@paran phone
197.*@return nask

mobilephone
198.*/
199.public static string maskphone(string phone){
200.//just 4character dont need mask,is not mobilephone
201.if(stringutils.length(phone)《7){
202.return phone;
203.}//无需掩码
204.int length=phone.length();
205.if(length》9){
206.//模糊中间4位数字
207.string firstnane=stringutils.substring(phone,start:0,end:length-8);
208.string lastname=stringutils.substring(phone,start length-4);
209.return stringutils.rightpad(firstnane,size:length-4,mask_flag).concat(lastname);
210.};
211.//9位以下
212.string firstnane=stringutils.substring(phone,start:0,end:2);
213.string lastname=stringutils.substring(phone,start:length-4);
214.return stringutils.rightpad(finstname,size:length-4,mask_flag).concat(lastname);
215.}。
216.可选的,在对属性信息进行脱敏处理时,先判断该属性信息是否需要进行脱敏,即确定对象对应的目标脱敏变量标记。目标脱敏变量标记用于指示是否对对象进行脱敏处理。在目标脱敏变量标记指示对对象进行脱敏处理的情况下,表明该对象的属性信息需要进行脱敏处理,则基于敏感标签,对属性信息进行脱敏处理。
217.可选的,确定对象对应的目标脱敏变量标记,包括:
218.确定处理对象对应的属性信息的目标处理线程。
219.获取目标处理线程对应的脱敏变量标记,并根据脱敏变量标记确定对象对应的目标脱敏变量标记,即将脱敏变量标记确定对象作为目标脱敏变量标记。
220.具体的,目标处理线程为处理对象数据的线程。计算机设备上运行了多个处理待处理数据的线程。当线程处理被分配的待处理数据时,若该线程对应的脱敏变量标记指示对对象进行脱敏处理的情况下,表明该线程所处理的数据需要涉及脱敏,则获取待处理数据中的对象所对应的属性信息,以利用敏感标签确定该属性信息是否需要进行脱敏处理。若该线程对应的脱敏变量标记指示不对对象进行脱敏处理的情况下,表明该线程所处理的数据无需涉及脱敏,则无需继续获取待处理数据中的对象所对应的属性信息,从而实现脱敏数据的快速识别分流,提高数据脱敏效率
221.举例来说,共存在2个线程,线程1处理数据1和2、线程2处理数据3,当线程1对应的脱敏变量标记设置为第一标识,即该脱敏变量标记指示对对象进行脱敏处理时,需利用敏感标签确定数据1和2是否需要进行脱敏处理;当线程2对应的脱敏变量标记设置为第二标
识,即该脱敏变量标记指示部对对象进行脱敏处理时,无需对数据3进行脱敏处理。
222.可选的,还可以根据需求,对线程对应的脱敏标量标记进行修改,即响应于标记更新操作,对目标处理线程对应的脱敏变量标记进行更新。例如,目标处理线程对应的脱敏变量标记指示对对象进行脱敏处理,在接收到标记更新操作后,将目标处理线程对应的脱敏变量标记更新为不对对象进行脱敏处理。
223.可选的,脱敏变量标记可以为mdc(mapped diagnostic context映射调试上下文)固定变量,mdc是log4j和logback提供的一种方便在多线程条件下记录日志的功能,本技术用于判断是否需要进行脱敏。
224.可选的,在确定属性信息不存在对应的敏感标签的情况下,对属性信息进行标准序列化操作。
225.具体的,对于对象中的各个属性信息,当确定该属性信息不存在相应的敏感标签时,表明该属性信息并不是敏感信息,无需对其进行脱敏处理,则可以对其进行标准序列化操作。例如,上述添加敏感标签的代码中的address属性并未存在相应的敏感标签,因此,当对象的属性信息为address属性时,无需对其进行脱敏处理。
226.可选的,标准序列化操作可以是默认的stringserializer处理操作。当然,由于jackson可以存在多种标记(即标签),当属性信息对应的标记为除敏感标签以外的其它标签时,可以按照该标签对应的序列化操作,对该属性信息进行处理。
227.可选的,在得到对象对应的各个脱敏处理后的属性信息后,调用jsongenerator的writeobject方法对该对象对应的脱敏处理后的属性信息进行组合等处理,以得到相应的脱敏数据。
228.可选的,在得到脱敏数据后,还可以输出该脱敏数据,以使相关用户获得该脱敏数据。例如,如图4所示,当用户a/b输入查询请求时,应用系统响应该查询请求,经过相关业务处理,确定待处理数据,在得到待处理数据后,确定该待处理数据是否存在敏感标签,即脱敏标记。在存在敏感标签时,对该待处理数据进行脱敏处理,并将脱敏处理后的数据,即脱敏数据返回至用户;在不存在敏感标签时,直接将待处理数据,即查询得到的原数据返回至用户
229.可选的,还可以对待处理数据中的目标数据类型的数据直接进行脱敏处理,目标数据类型可以根据需求进行设置,例如,目标数据类型为string类型、
230.在本实施例中,考虑到大部分的应用数据都是基于对象数据格式的,因此,可以通过在对象的属性上标记此属性为敏感数据,以及所需使用的脱敏方法,实现对对象数据的统一脱敏处理。
231.可选的,在得到脱敏后的属性信息后,还可以显示脱敏后的属性信息,即脱敏后的对象数据,也即脱敏结果。
232.在本实施例中,在确定对象的属性信息对应于敏感标签时,获取该敏感标签对应的设定属性参数,利用该设定属性参数确定脱敏规则,以供利用该脱敏规则对该属性信息进行处理,该脱敏规则可以根据实际需求进行设置,从而在实现数据脱敏的基础上,保证脱敏方式的多样化,满足用户的个性化需求。
233.在本实施例中,扩展slf4j的原生接口,在原生接口上新加脱敏日志方法,并通过对程序对应的部分或全部业务代码(即目标代码)中的日志方法进行替换,可以实现在源头
上对数据进行脱敏分流,避免对无需进行脱敏的数据进行脱敏,保证数据脱敏的有效性,避免资源的浪费,且修改成本低。
234.与前述方法的实施例相对应,本技术还提供了数据脱敏装置及其所应用的终端的实施例。
235.本技术数据脱敏装置的实施例可以应用在计算机设备上,例如服务器或终端设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在文件处理的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本技术实施例数据脱敏装置所在计算机设备的一种硬件结构图,除了图5所示的处理器510、内存530、网络接口520、以及非易失性存储器540之外,实施例中数据脱敏装置531所在的计算机设备,通常根据该计算机设备的实际功能,还可以包括其他硬件,对此不再赘述。
236.如图6所示,图6是本技术根据一示例性实施例示出的一种数据脱敏装置的框图,所述装置包括:
237.属性获取模块610,用于确定待处理数据中的对象,并从待处理数据中获取对象的属性信息;
238.数据脱敏模块620,用于在对象的属性信息对应于敏感标签的情况下,基于敏感标签对属性信息进行脱敏处理;其中,敏感标签表示预先为对象所属类中的敏感属性设置的标记。
239.可选的,数据脱敏模块620具体用于:
240.获取敏感标签中的设定属性参数,并基于设定属性参数对应的脱敏规则,对属性信息进行脱敏处理。
241.可选的,数据脱敏模块620具体用于:
242.确定对象对应的目标脱敏变量标记。其中,目标脱敏变量标记用于指示是否对对象进行脱敏处理。
243.在目标脱敏变量标记指示对对象进行脱敏处理的情况下,基于敏感标签,对属性信息进行脱敏处理。
244.可选的,数据脱敏模块620还用于:
245.确定处理对象对应的属性信息的目标处理线程。
246.获取目标处理线程对应的脱敏变量标记,并根据脱敏变量标记确定对象对应的目标脱敏变量标记。
247.可选的,数据脱敏模块620还用于:
248.响应于标记更新操作,对目标处理线程对应的脱敏变量标记进行更新。
249.可选的,待处理数据包括日志。
250.属性获取模块610具体用于:
251.确定输出日志的第一日志方法,并确定第一日志方法对应的第一方法类型。
252.在第一日志方法为第一方法类型对应的预设脱敏日志方法的情况下,确定待处理数据所包括的日志中的对象。
253.可选的,属性获取模块610具体用于:
254.获取日志对应的日志级别,并获取第一日志方法对应的预设级别。
255.在日志级别大于或等于预设级别的情况下,确定待处理数据所包括的日志中的对象。
256.可选的,数据脱敏模块620还用于:
257.响应于接收到方法替换请求,获取方法替换请求中的第二方法类型。
258.将目标代码中的第二方法类型对应的第二日志方法替换为第二方法类型对应的预设脱敏日志方法。
259.可选的,数据脱敏模块620还用于:
260.在确定属性信息不存在对应的敏感标签的情况下,对属性信息进行标准序列化操作。
261.可选的,数据脱敏模块620还用于:
262.在待处理数据包含非对象信息的情况下,确定非对象信息对应的数据类型。
263.在数据类型为预设脱敏数据类型的情况下,基于数据类型对应的脱敏规则,对非对象信息进行脱敏处理。
264.上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
265.在另一个实施例中,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上所述的数据脱敏方法。
266.在另一个实施例中,本技术提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上所述的数据脱敏方法。
267.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本技术方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
268.上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
269.本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求指出。另外,本技术所涉及的数据可以为经用户授权或者经过各方充分授权的数据。
270.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求来限制。
271.以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1