一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据脱敏方法、数据脱敏装置以及存储设备与流程

2022-03-02 00:59:37 来源:中国专利 TAG:


1.本技术涉及存储技术领域,特别涉及一种数据脱敏方法、数据脱敏装置以及存储设备。


背景技术:

2.数据脱敏(data masking)又称数据漂白,数据去隐私化或数据变形,是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。
3.当前的脱敏方式为,从生产环境将生产数据的副本复制到专门的开发测试存储中,通过脱敏服务器进行离线的脱敏处理,待脱敏处理完成之后,仅给开发测试人员提供脱敏处理后的数据副本。然而,离线的脱敏处理耗时较长,另外还需要部署额外的脱敏服务器,增加了开发成本。


技术实现要素:

4.本技术提供了一种数据脱敏方法、数据脱敏装置以及存储设备,可以提高脱敏效率。
5.第一方面提供了一种数据脱敏方法。该方法由存储设备执行,例如,接收主机发送的读数据命令,该读数据命令用于请求待读取数据。存储设备响应于该读数据命令,获取所述待读取数据。然后对所述待读取数据进行脱敏处理,从而得到目标数据。再向所述主机发送所述目标数据。
6.上述读数据命令属于输入输出(input output,io)命令,可见对数据进行脱敏是在io路径上实现的,换言之是在响应读数据命令的过程中由存储设备对待读取数据进行脱敏。和离线脱敏的方式相比,在线脱敏提高了脱敏效率。主机收到经过脱敏的数据后可以直接对该数据进行测试或其他用途,不用再借助专门的脱敏设备对其脱敏。另外,由于存储设备自己对数据进行脱敏,不需要部署额外的脱敏服务器,也降低了成本。
7.可选的,所述待读取数据属于非结构化数据,例如文件。
8.可选的,所述对待读取数据进行脱敏处理包括判断是否需要对所述待读取数据进行脱敏处理,当判断的结果为需要对所述待读取数据进行脱敏处理时,根据所述待读取数据的类型匹配对应的脱敏方式,所述脱敏方式包括一级脱敏处理或二级脱敏处理,根据所述待读取数据对应的脱敏方式对所述待读取数据进行脱敏处理。例如,存储设备中可以通过设置白名单或者黑名单来对不需要进行脱敏处理的文件进行过滤。因为某些文件类型,例如二进制文件,通常不会包含敏感信息,因此不需要对该类文件进行脱敏。在脱敏处理之前判断需要对所述待读取数据进行脱敏处理,可以过滤掉这些不需要进行脱敏处理的文件,进一步提高了脱敏效率。
9.可选的,脱敏方式至少包含一级脱敏、二级脱敏和三级脱敏。一级脱敏主要针对不
需要解码的文件,例如文本文件或者日志文件。二级脱敏主要针对需要解码的文件,例如word文件、excel文件等。三级脱敏主要针对一级脱敏、二级脱敏解决不了的文件类型。由于不同的文件类型采用不同的脱敏方式,使得脱敏方式更有针对性,脱敏过程更有效率。
10.可选的,用于执行的三级脱敏的脱敏引擎可以设置在存储设备内部,也可以设置存储设备外部。如果执行的三级脱敏的脱敏引擎设置存储设备外部,那么存储设备内部的脱敏引擎在判断出某一种类型的文件应该由三级脱敏来处理时,可以由存储设备的接口将该文件传递至该三级脱敏的脱敏引擎,该三级脱敏的脱敏引擎完成脱敏处理后再通过所述接口将脱敏后的文件传递至存储设备内部的脱敏引擎,然后存储设备内部的脱敏引擎再将脱敏后的文件发送给主机。在该实施方式中,即使脱敏处理是由外置的脱敏引擎完成的,仍然可以保证在线脱敏。
11.可选的,无论是一级脱敏、二级脱敏还是三级脱敏均可以采用以下方式完成脱敏处理。例如,将所述待读取数据划分为多个文件片段,对于所述多个文件片段中的每个文件片段,判断该文件片段是否命中所述存储设备存储的已经过脱敏的文件片段;若命中,则不对该文件片段进行所述一级脱敏处理;若不命中,则对该文件片段进行所述一级脱敏处理。然后,再合并经过脱敏处理后的文件片段,得到所述目标数据。由于内存中保留有一些已经经过脱敏处理的文件片段,如果命中这些文件片段则不需要再次进行脱敏处理,提高了脱敏效率,也减小了io时延。
12.可选的,经过一级脱敏、二级脱敏或者三级脱敏的文件片段可以保存在内存中,提高下一次脱敏时的文件片段命中率。
13.可选的,第一方面的方法还包括预取数据并对其进行脱敏处理的步骤。例如,当预取数据的条件满足时,从所述存储设备的硬盘中获取其他待读取数据。对所述其他待读取数据进行脱敏处理。当接收到所述主机发送的用于读取所述其他待读取数据的命令时,将所述脱敏后的其他待读取数据发送给所述主机。所述其他待读取数据并非为了响应io请求时获取的,而是在预取数据的条件满足时,从硬盘读取至内存,并发送给脱敏引擎进行脱敏处理。经过脱敏处理后的数据可保存在内存中,当存储设备执行用于读取所述其他待读取数据的命令时就不用再次进行脱敏处理了,减小了io时延。
14.可选的,预取数据的条件包括但不限于以下情况:所述其他待读取数据被修改;或发现所述其他待读取数据的类型符合设置的需要进行预取的数据的类型;或所述其他待读取数据被创建快照;或设置的预取周期到达。
15.本技术第二方面提供一种数据脱敏装置,该装置位于存储设备内部,用于实现第一方面任一实施方式所提供的方法。
16.本技术第三方面提供一种存储设备,包括处理器和内存,所述内存中保存有程序,所述处理器通过执行所述程序以实现第一方面任一实施方式所提供的方法。在第三方面提供的存储设备中,脱敏引擎是由软件来实现的。
17.本技术第四方面提供一种存储设备,包括处理器和脱敏引擎。其中,所述处理器和所述脱敏引擎相互配合,以实现第一方面任一实施方式所提供的方法。在第四方面提供的存储设备中,脱敏引擎是由硬件组件来实现的。
18.本技术第五方面提供一种主机,所述主机包括处理器和脱敏引擎。其中,所述处理器,用于向存储设备发送读数据命令,并接收所述存储设备基于所述读数据命令发送的数
据。所述脱敏引擎,用于对所述数据进行脱敏处理,得到目标数据。
19.第五方面提供的主机内部设置有脱敏引擎,因此可以在主机侧完成脱敏处理。该过程既可以在io路径上实现,也可以离线处理。
20.可选的,所述脱敏引擎具体用于:判断是否需要对所述待读取数据进行脱敏处理。当判断的结果为需要对所述待读取数据进行脱敏处理时,根据所述待读取数据的类型匹配对应的脱敏方式,所述脱敏方式包括一级脱敏处理或二级脱敏处理。根据所述待读取数据对应的脱敏方式对所述待读取数据进行脱敏处理。
21.可选的,所述待读取数据对应的脱敏方式为一级脱敏处理时,所述脱敏引擎具体用于:将所述待读取数据划分为多个文件片段。对所述多个文件片段进行所述一级脱敏处理。合并经过所述一级脱敏处理后的文件片段,得到所述目标数据。
22.可选的,所述脱敏引擎在对所述多个文件片段进行所述一级脱敏处理时具体用于:对于所述多个文件片段中的每个文件片段,判断该文件片段是否命中所述存储设备存储的已经过脱敏的文件片段。若命中,则不对该文件片段进行所述一级脱敏处理。若不命中,则对该文件片段进行所述一级脱敏处理。
23.可选的,所述待读取数据对应的脱敏方式为二级脱敏处理时,所述脱敏引擎具体用于:解码所述待读取数据,获得解码后的文件内容。将所述解码后的文件内容划分为多个文件片段。对所述多个文件片段进行所述二级脱敏处理。对经过所述二级脱敏处理后的文件片段进行编码,得到所述目标数据。
24.本技术第六方面提供一种数据脱敏方法,由主机执行,以实现第五方面所描述的主机的功能。
25.本技术第七方面提供了一种计算程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被运行时,使得上述各方面中由存储设备执行的方法被执行。
26.本技术第八方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当该计算机程序被运行时,实现上述各方面中由存储设备执行的方法。
附图说明
27.图1是本实施例提供的一种应用场景图;
28.图2是本实施例提供的另一种应用场景图;
29.图3是本实施例提供的一种存储设备的结构示意图;
30.图4是本实施例提供的另一种存储设备的结构示意图;
31.图5是本实施例提供的一种脱敏引擎的结构示意图;
32.图6是本实施例提供的另一种脱敏引擎的结构示意图;
33.图7是本实施例提供的一种数据脱敏方法的流程示意图;
34.图8是本实施例提供的另一种数据脱敏方法的流程示意图;
35.图9是本实施例提供的另一种数据脱敏方法的流程示意图;
36.图10是本实施例提供的另一种数据预取方法的流程示意图;
37.图11是本实施例提供的一种数据脱敏装置的结构示意图。
具体实施方式
38.图1提供了一种数据脱敏系统包括生产设备10、存储设备20和主机30。生产设备10可以是任何形式的电子设备,例如服务器、台式计算机、大型计算机以及其他包含处理器和存储器的任何类型的计算设备。生产设备10将生产数据保存在存储装置40中,生产数据是来源于用户的原始数据,其中可能包含涉及用户隐私的信息。为了防止用户隐私泄露,需要对生产数据进行脱敏操作。存储装置40既可以是位于生产设备10内部的存储器,也可以是位于生产设备10外部的设备的存储器,该外部的设备与生产设备10之间可通信,用于存储来自生产设备10的生产数据。该外部的设备可以是任何形式的电子设备,例如服务器、台式计算机、大型计算机、存储阵列以及其他包含处理器和存储器的任何类型的计算设备。
39.主机30主要指开发/测试服务器,开发/测试人员通过主机30从存储设备20中获取数据以用于产品开发或者测试。在本实施例中,存储设备20提供给主机30的数据是经过脱敏处理之后的数据,以保障用户隐私。在产品形态上,主机30可以是任何形式的电子设备,例如服务器、台式计算机、移动设备以及其他包含处理器和存储器的任何类型的计算设备。
40.存储设备20可以是一个网络附属存储(network attached storage,nas)设备,nas设备是专用的高性能文件存储设备,它通过网络和文件共享协议将文件数据提供给用户访问。它和主机30之间使用的协议包括用于数据传输的tcp/ip协议,以及用于网络文件服务的cifs和nfs协议等。这种情况下,主机30中配置有nfs/cifs客户端(如图3所示),通过nfs/cifs客户端在读命令中指明文件名、位置或其他属性来访问某个文件。相应的,存储设备20中配置有nfs/cifs服务端,nfs/cifs服务端解析所述读命令,由于文件系统中记录有该文件位于硬盘中的位置,因此存储设备20可以将接收的读命令中的文件名、位置转换为块数据的地址以获取数据。存储设备20也可以是一个存储区域网络(storage area network,san)设备,san设备通过光纤通道网络与主机30通信。在本实施例中的san设备中具有文件系统,所以块数据也可以以文件的形式进行访问。除了nas设备和san设备外,存储设备20还可以是其他具有存储功能的设备,并且数据脱敏系统所包含的存储设备20的数量可以是一个也可以是多个,本实施例不对存储设备20的数量进行限定。
41.由于生产设备10中存储的生产数据属于原始数据,如果直接对原始数据进行脱敏处理会破坏该数据,难以恢复。所以,在图1所示的场景中,生产数据被发送至存储设备20作为副本保存下来,存储设备20针对所述副本,而非原始数据本身,进行脱敏处理。
42.图2所示的应用场景与图1类似,不同之处在于生产设备10可直接将生产数据存储至存储设备20中,为了使得原始的生产数据不被破坏,存储设备20创建一份所述生产数据的副本,对所述副本进行脱敏处理。换言之,在图2所示的场景中,生产数据以及生产数据副本均位于存储设备20中。创建副本的方式有多种,例如复制、快照、克隆等,在此不一一赘述。
43.存储设备20内部设置有脱敏引擎21,如图3所示,通过脱敏引擎21可以实现在io路径上对数据进行在线脱敏。例如,当主机30向存储设备20发送读数据命令读取数据时,存储设备20的处理器(图3中未示出)判断是否在内存中命中该数据,若命中,则通知脱敏引擎21从存储设备的内存中获取该数据,经过脱敏处理后再写入内存中。处理器再将经过脱敏处理后的数据返回给主机30。若未命中,则通过文件系统读取该数据至所述内存,再通知脱敏引擎21从存储设备的内存中获取该数据进行脱敏处理。文件系统是建立在硬盘之上的,它
是存储设备20的操作系统的一部分,将数据写入文件系统实际上是将该数据写入硬盘,并且可以以文件的形式访问该数据。脱敏引擎21既可以是一个软件模块,也可以是一个硬件组件。当脱敏引擎21是软件模块时,其功能是由处理器调用相应的程序指令来实现的。当脱敏引擎21是硬件组件时,它是一个可编程的电子部件,用于对数据进行脱敏处理等,例如数据处理单元(data processing unit,dpu)、图形处理单元(graphics processing unit,gpu)、嵌入式神经网络处理器(neural-network processing units,npu)等专用处理芯片。专用处理器具有中央处理器(central process unit,cpu)的通用性和可编程性,但更具有专用性,可以更高效地运行。dpu通过较大程度的并行性(需要处理大量请求)与cpu区别开来。此时,脱敏引擎21既可以拥有自己的内存,也可以与存储设备20共享同一个内存。另外,脱敏引擎21也可以设置在主机30内部,由主机30直接对读取的数据进行脱敏处理。当脱敏引擎21位于主机30内部与脱敏引擎21位于存储设备20内部时的具体功能类似,只是此时对待读取数据进行脱敏既可以在线进行,也可以离线进行。
44.在某些应用场景中,存储设备20内部还设置有预取引擎41。前面提到如果存储设备20在响应主机30发送的读命令时,并未在内存中命中请求的数据,则需要从文件系统中获取该数据,这就会造成一定的时延,影响读性能。因此,可以在存储设备20中设置有预取引擎41,用于在一定的触发条件下预先从文件系统读取一些数据,将这些数据发送给脱敏引擎进行脱敏处理,经过脱敏处理后的数据存放在内存中。待后续主机30发送读数据命令读取该数据时,则可以在内存中命中,并且不需要再次经过脱敏处理,缩小了时延,提高了读性能。预取引擎41在本实施例中属于可选,而非必选配置。
45.与脱敏引擎21类似,预取引擎41既可以是一个软件模块,也可以是一个硬件组件。当预取引擎41是软件模块时,其功能是由处理器调用相应的程序指令来实现的。当预取引擎41是硬件组件时,它是一个可编程的电子部件,用于对数据进行脱敏处理等,例如dpu、gpu、npu等专用处理芯片。当预取引擎41是硬件组件时,它既可以拥有自己的内存,也可以与存储设备20共享同一个内存。
46.由于脱敏引擎21设置在存储设备20内部,其功能也有一定的局限性。对于某些特定类型的数据还可以通过外设的脱敏引擎51来进行脱敏处理(参见图4)。脱敏引擎51位于存储设备20外部,是一个独立的设备,专用于处理较为复杂的脱敏操作。脱敏引擎51也可以是公有云或私有云中的设备。当脱敏引擎21发现自己不能处理某种类型的数据时,可以通过存储设备20的接口将该数据传递给脱敏引擎51,由脱敏引擎51对该数据进行脱敏处理之后再发送给脱敏引擎21。另外,脱敏引擎51还可以用于执行脱敏策略管理等功能,例如不同类型的数据可能会采用不同的脱敏方式,脱敏引擎51将脱敏策略推送给脱敏引擎21,脱敏引擎根据该策略在识别数据所属的类型之后就可以选择对应脱敏方式进行脱敏操作了。脱敏策略是预先设置在脱敏引擎51的,可以定期对其进行更新,更新后的策略需推送给脱敏引擎21。虽然脱敏引擎51可以处理更为复杂的脱敏操作,对数据脱敏进行更加精细化的管理,但是在本实施例中脱敏引擎51只是一个可选配置。在没有设置脱敏引擎51的情况下,脱敏策略可以预先设置在脱敏引擎21中,或者在设备运行过程中直接在脱敏引擎21中进行配置。
47.参见图5,图5是本实施例提供的脱敏引擎21的结构示意图。如图5所示,脱敏引擎21包括一级脱敏200、二级脱敏210和内容编码器230。不同的文件类型对应不同的脱敏方
式。例如,文本文件和日志文件等不需要解码的文件采用一级脱敏方式对其进行脱敏处理。而word文件、pdf文件等需要解码的文件采用二级脱敏方式对其进行脱敏处理。内容编码器230主要用于将经过脱敏处理后的数据还原为读命令的请求对象。
48.其中,一级脱敏200包括识别器201、白名单202和脱敏器203。识别器201用于识别数据类型。本实施例中的数据可分为结构化数据和非结构化数据。结构化数据指的是以固定格式(通常用二维表结构来表达)存在的数据,通常使用关系型数据库来表示和存储。它通常包括表格数据,例如数据库。总言之,结构化数据必须依赖于建立一个数据模型,按照这个数据模型存储、处理数据。而不方便用数据库二维逻辑表来表达的数据被称为非结构化数据,它包括所有格式的办公文档、文本、图片、xml、html、各类报表、图像和音频/视频信息等等。本实施例主要是对非结构化数据,特别是文件,进行脱敏处理。接下来就以文件为例对脱敏处理予以说明。当然,本实施例也不排除对文件之外的非结构化数据进行脱敏处理,甚至也不排除对结构化数据进行脱敏处理。识别器201可具体用于识别文件类型。另外,白名单202记录有不需要进行脱敏处理的文件的文件类型。例如,二进制文件通常不会包含涉及用户隐私的信息,因此可以将二进制文件的文件类型记录在白名单202中。当识别器201识别出文件类型之后,再根据白名单202对文件进行过滤,排除一些不需要进行脱敏处理的文件。可以理解的是,白名单202的功能可以由黑名单来代替,黑名单记录有需要进行脱敏处理的文件的文件类型,其用法与白名单类似。另外,即使同为非解码文件,不同的文件类型也可以采用不同的脱敏方式,因此识别器201所识别出的文件类型除了用于判断是否需要对该文件进行脱敏处理之外,还用于判断对该文件采用何种脱敏方式。这些脱敏方式(也称为脱敏规则)都存储在脱敏器203中,脱敏器203是用于具体执行脱敏处理的组件。
49.脱敏器203在对某个文件进行脱敏处理时,将该文件划分为若干个文件片段,然后分别对每个文件片段按照该文件的文件类型所对应脱敏方式进行脱敏。如果在这些文件片段中,有一个或几个文件片段命中内存中所保存的已经过脱敏处理的文件片段,则对于这些命中的文件片段就不再需要进行脱敏处理了,直接使用内存中保存的已经过脱敏处理的文件片段即可。在对未命中的文件片段进行脱敏处理之后,可以将经过脱敏处理后的文件片段保存在内存中,以供下一次对其他文件进行脱敏处理时可以命中,从而提高脱敏效率。
50.二级脱敏包括识别器211、解码器213和脱敏器212。识别器211用于识别数据类型,其功能与一级脱敏200中的识别器201类似,只是识别器211是一个可选配置,如果二级脱敏中没有设置识别器211则可以由一级脱敏中的识别器201对文件类型进行识别,对于需要解码的文件可由一级脱敏发送给二级脱敏,二级脱敏中的脱敏器212直接根据该文件对应的脱敏方式进行脱敏处理即可。如果需要解码的文件也包含多种文件类型,并且不同文件类型对应不同的脱敏方式,此时则需要在二级脱敏中设置识别器211对文件类型进行识别,从而选择对应的脱敏方式。由于二级脱敏多用于处理需要解码的文件,例如word、excel、pdf等文件,因此二级脱敏中设置有解码器213,用于对这些类型的文件进行解码。另外,待脱敏处理完成之后,解码器213还负责对这些文件进行编码。文件对应的脱敏方式都保存在脱敏器212中,脱敏器212是用于具体执行脱敏处理的组件。
51.与脱敏器203的处理方式类似,脱敏器212在对某个文件进行脱敏处理时,将该文件划分为若干个文件片段,然后分别对每个文件片段按照该文件的文件类型所对应脱敏方式进行脱敏。如果在这些文件片段中,有一个或几个文件片段命中内存中所保存的已经过
脱敏处理的文件片段,则对于这些命中的文件片段就不再需要进行脱敏处理了,直接使用内存中保存的已经过脱敏处理的文件片段即可。在对未命中的文件片段进行脱敏处理之后,可以将经过脱敏处理后的文件片段保存在内存中,以供下一次对其他文件进行脱敏处理时可以命中,从而提高脱敏效率。
52.外置的脱敏引擎51(如图6所示)包括识别器501、脱敏器502、解码器503和策略管理器504。其中,识别器501与内置的脱敏引擎21中的识别器的功能一致,解码器503与解码器213的功能一致,这里不再赘述。脱敏器502是对文件执行脱敏处理的组件,它的执行过程与脱敏器212、脱敏器203类似,这里不再赘述,不同之处在于由于脱敏引擎51所要处理的文件类型与脱敏引擎21所要处理的文件类型不同,而不同的文件类型采用不同的脱敏方式。策略管理器504用于存储脱敏策略,例如每一种文件类型所对应的脱敏方式。这些策略可以预先设置在策略管理器504的,可以定期对其进行更新,更新后的策略会推送给脱敏引擎21。
53.脱敏器201、脱敏器203和脱敏器502所使用的脱敏算法均可以包含如下算法的一种或多种,或者其组合。
54.一、数值/字符串替换。即,使用固定的虚构值代替真实数值或字符串,例如,脱敏处理前的文件如表1所示,脱敏处理后的文件如表2所示。
[0055][0056]
表1
[0057]
对于表1中的手机号码,可以使用mobile=13800013800函数对手机号码字段进行赋值替换为13800013800。数据替换后,手机号码脱敏后的显示值如表2所示。
[0058]
[0059][0060]
表2
[0061]
二、无效化:通过对数据使用截断、加密、隐藏等方式使敏感数据脱敏,使其不再具有利用价值,例如将地址以******代替真值。数据无效化与数据替换所达成的效果基本类似。例如,对表1中的地址进行隐藏式的处理。具体的,可采用address=“*******”函数将地址字段起来隐藏,以达到脱敏效果。隐藏后的数据如表3所示。
[0062][0063]
表3
[0064]
可选的,在上述例子中,还可以对地址字段进行截断式的脱敏,即,只隐藏部分信息。具体的,可使用address=left(address,3) "******"函数对address地址源字符串的左边三位字串加上******。经此处理后的数据如表4所示。
[0065]
[0066][0067]
表4
[0068]
三、随机化。其含义是采用随机数据代替真实的数值/字符串,保持替换值的随机性以模拟样本的真实性。例如,使用随机生成的姓名代替真实姓名,或者用指定范围的随机数代替真实数值。具体的,可采用a1(rand(a1.len()) 1) b1(rand(b1.len()) 1)函数对姓名进行随机化(从a1“姓氏.txt”和b1“名字.txt”外部字典表随机化组合生成姓名)。随机化后姓名的显示值表5所示。
[0069][0070]
表5
[0071]
四、偏移和取整。其含义是通过随机移位改变数字数据,例如日期2018-01-02 8:12:25变为2018-01-02 8:00:00,偏移取整在保持了数据的安全性的同时保证了范围的大致真实性,此项功能在大数据利用环境中具有重大价值。具体的,可使用string(operatetime,"yyyy-mm-dd hh:00:00")函数按照偏移和取整规则格式化成“yyyy-mm-dd hh:00:00”格式,操作时间脱敏后的显示值如表6所示。
[0072][0073]
表6
[0074]
五、掩码屏蔽。掩码屏蔽是针对账户类数据的部分信息进行脱敏时的有力工具,比如银行卡号或是身份证号的脱敏。可以指定全部掩盖还是部分掩盖(掩盖的范围,例如后x位,中间x位等)。例如,将身份证号的出生日期进行掩码屏蔽脱敏。使用left(string(idnumber),6) "********" right(string(idnumber),4)函数脱敏后的身份证号显示值如表7所示。
[0075][0076]
表7
[0077]
以上几种脱敏方式任选一种使用,也可以几种或者全部同时使用,另外,这些脱敏方式仅仅是示例性的说明,本实施例也不排除其他脱敏方式。
[0078]
下面结合图1至图5的应用场景,对本实施例提供的数据脱敏方法予以说明。图7是数据脱敏方法的流程示意图,如图7所示,该方法包括如下步骤。
[0079]
s101,存储设备20接收主机30发送的nfs/cifs消息。这里以存储设备20是nas设备为例予以说明,nas设备与主机30之间可通过nfs协议或cifs协议进行通信。因此主机30的客户端可将读数据命令封装成nfs消息或者封装成cifs消息,再通过相应的协议发送给存
储设备20。然而,nfs消息或cifs消息仅仅是一个示例,也可以采用其他协议所对应的格式来封装读写命令请求。如果存储设备20是san设备,则可以将读写命令请求按照块数据的语义进行封装,然后通过光纤通道网络发送给存储设备20。
[0080]
s102,存储设备20解析该nfs/cifs消息,获得读数据命令。存储设备20中具有nfs/cifs服务端,可以对收到的消息进行解析,从而获得读数据命令。在以下步骤中仍然以读文件为例,所述读数据命令包括待读取文件的地址。可以理解的是,如果存储设备20是san设备,那么读数据命令中携带的就是待读取的块数据的地址。
[0081]
s103,是否在内存中命中待读取文件。若命中则执行s105,若不命中则执行s104。存储设备根据所述待读取文件的地址判断自己的内存中是否保存有所述待读取文件,如果内存中已经保存有所述待读取文件则可以直接对该文件进行处理,否则需要进一步地根据所述地址从硬盘中获取所述待读取文件。
[0082]
s104,从文件系统中获取待读取文件,并保存在内存中。从文件系统中获取待读取文件即根据该文件的地址从所述文件系统中获取该文件所对应的块数据位于硬盘中的位置,然后从该位置中读取所述文件,保存在所述内存中。
[0083]
s105,由脱敏引擎21对待读取文件进行脱敏处理。待存储设备20在内存中找到所述待读取文件之后(无论是直接在内存中命中的,还是从硬盘中获取所述文件并保存在内存中的),就可以通知脱敏引擎21对该文件进行脱敏处理了。该步骤的执行过程可参考图8及相应的描述。
[0084]
s106,脱敏引擎21将脱敏处理后的文件保存在内存中。脱敏引擎21位于存储设备20内部,在脱敏处理之后将该文件发送至存储设备20的内存中。请注意,当脱敏引擎21与存储设备20共享同一个内存时,则脱敏引擎21在完成脱敏处理之后将该文件保存在其内存中就可以了,然后通知存储设备的处理器:脱敏处理已完成,可以从内存中读取经过脱敏处理的文件了。
[0085]
s107,存储设备20将脱敏处理后的文件发送给主机。
[0086]
上述读数据命令属于输入输出(input output,io)命令,可见对数据进行脱敏是在io路径上实现的,换言之是在响应读数据命令的过程中由存储设备对待读取数据进行脱敏。和离线脱敏的方式相比,在线脱敏提高了脱敏效率。主机收到经过脱敏的数据后可以直接对该数据进行测试或其他用途,不用再借助专门的脱敏设备对其脱敏。另外,由于存储设备自己对数据进行脱敏,不需要部署额外的脱敏服务器,也降低了成本。
[0087]
对于s105,其具体的实现过程可参考图8的示例。如图8所示,脱敏引擎21在对待读取文件进行脱敏处理包括如下步骤。
[0088]
s201,获取待读取文件。存储设备的处理器在获取待读取文件之后,可以将该文件发送给脱敏引擎21,也可以通知脱敏引擎21到内存中提取所述文件。
[0089]
s202,识别文件类型。该步骤可由识别器201执行。所述待读取文件的类型可以有多种,例如二进制文件、word文件、excel文件、pdf文件等等。基于识别结果,可以判断出哪些文件需要进行脱敏处理,哪些文件不需要进行脱敏处理。
[0090]
s203,根据白名单202判断是否需要进行脱敏处理。若不需要进行脱敏则返回,若需要进行脱敏处理则执行s204。白名单中保存有不需要进行脱敏处理的文件类型,例如,二进制文件。
[0091]
s204,将待读取文件划分为多个文件片段。
[0092]
s205,对于每个文件片段,判断该文件片段是否命中已脱敏文件片段。若命中,则执行s206:不对该文件片段进行脱敏处理。若否,则执行s207。脱敏引擎21的内存中可能保留有已经经过脱敏处理的文件片段,如果本次待读取文件的某一个或几个文件片段与脱敏引擎21已保留的文件片段一致,则不需要再次对这些文件片段进行脱敏处理了。而对于没有命中的文件片段,则需要继续进行脱敏处理。
[0093]
s207,获取脱敏规则,进行脱敏处理。脱敏规则可以是按照用户要求在脱敏引擎21内部设置的,也可以是由外置的脱敏引擎51推送给脱敏引擎21的。具体的脱敏处理过程可参考表1-表7及相应的描述。
[0094]
s208,保存经过脱敏处理后的文件片段。保存的目的是下一次处理其他文件时,可以提高已脱敏的文件片段命中率,提高脱敏效率。
[0095]
s209,将脱敏处理后的文件片段编码为目标文件。在s204中待读取文件被划分为若干个文件片段了,在脱敏处理完成之后需要将这些文件片段还原为原来的文件。
[0096]
s204-s209可由脱敏器203执行。
[0097]
图8所示的示例仅包含一级脱敏,在某些场景下,一级脱敏无法对待读取文件执行脱敏处理,这时候就需要引入二级脱敏。引入二级脱敏后的脱敏过程如图9所示,示例性的,它包括如下步骤。
[0098]
s301,获取待读取文件。该步骤与图8所示的s201类似。
[0099]
s302,识别文件类型。该步骤与图8所示的s202类似。基于识别结果,不但可以判断出哪些文件需要进行脱敏处理,哪些文件不需要进行脱敏处理,对于需要进行脱敏处理的文件还可以进一步确定采用哪种脱敏方式。
[0100]
s303,根据白名单判断是否需要进行脱敏处理。若不需要进行脱离则返回,若需要进行脱敏处理则执行s304。该步骤与图8所示的s203类似。
[0101]
s304,判断是否需要解码待读取文件。若需要则执行s305,若不需要解码则执行s306。根据文件类型可以判断所述待读取文件是否属于需要解码的文件。例如word、excel、pdf等文件属于需要解码的文件,而文本文件、日志文件等则属于不需要解码的文件。
[0102]
s305,采用二级脱敏210处理该文件。在二级脱敏处理中,内容编码器230需要先对所述待读取文件进行解码,对于解码后的内容采用与图8所示的s204-s209类似的方式处理。
[0103]
s306,采用一级脱敏处理200处理该文件。此处可参考图8所示的s204-s209的描述,采用类似的方式处理。
[0104]
在某些应用场景中,所述待读取文件所属的文件类型既不适用于一级脱敏也不适用于二级脱敏,此时脱敏引擎21可将该文件发送给外置的脱敏引擎51,由脱敏引擎51完成脱敏处理后再返回给脱敏引擎21。
[0105]
在以上示例中,收到读数据命令之后,需要先对待读取文件进行脱敏处理之后再将该文件发送给主机,虽然保护了用户隐私,但是在一定程度上还是影响了读文件的效率。为此,本示例了还提供了预取文件脱敏方法,可参考图10所示的流程示意图。预取文件脱敏是在收到读数据命令之前对文件进行脱敏处理,因此图10所示的方法发生在图7至图9所示的任意一种数据脱敏方法之前,以提高脱敏文件片段的命中率,从而进一步提高读数据的
效率。应理解,图10所示的方法也可以发生在图7至图9所示的任意一种数据脱敏方法之后,为下一次读数据做好准备工作。如图10所示,预取文件脱敏方法包括如下步骤。
[0106]
s301,预取引擎41监测预取条件是否满足。所述预取条件包括但不限于以下情况:(1)文件系统中的某一个或几个文件被修改;或(2)预取引擎41发现文件系统中的某一个或几个文件的文件类型符合设置的预取文件的文件类型;或(3)文件系统中的某一个或几个文件被创建快照;或(4)设置的预取周期到达。
[0107]
s302,当预取条件满足时,预取引擎41读取待预取文件。如果该方法发生在图7至图9所示的接收读数据命令之前,那么此处的待预取文件就是图7至图9所示的待读取文件,或者其包含的文件片段与所述待读取文件所包含的文件片段部分重合。如果该方法发生在图7至图9所示的接收读数据命令之后,那么此处的待预取文件就是除所述待读取文件之外的其他文件。
[0108]
s303,对所述待预取文件进行脱敏处理。预取引擎41在读取所述文件之后可以将该该文件发送给脱敏引擎21,由脱敏引擎21对该文件进行脱敏处理。其中,进行脱敏处理的具体过程可参考图7至图9的描述。
[0109]
请参考图11,图11是本实施例提供的数据脱敏装置的结构示意图。所述数据脱敏装置位于存储设备20内部,包括收发模块1101、读写模块1102和脱敏模块1103。收发模块1101用于接收主机发送的读数据命令,所述读数据命令用于请求待读取数据。读写模块1102用于响应于所述读数据命令,获取所述待读取数据。脱敏模块1103用于对所述待读取数据进行脱敏处理,得到目标数据。收发模块1101还用于向所述主机发送所述目标数据。
[0110]
可选的,脱敏模块1103具体用于判断是否需要对所述待读取数据进行脱敏处理。当判断的结果为需要对所述待读取数据进行脱敏处理时,根据所述待读取数据的类型匹配对应的脱敏方式,所述脱敏方式包括一级脱敏处理或二级脱敏处理。根据所述待读取数据对应的脱敏方式对所述待读取数据进行脱敏处理。
[0111]
可选的,当所述待读取数据对应的脱敏方式为一级脱敏处理时,所述脱敏模块1103具体用于将所述待读取数据划分为多个文件片段。对所述多个文件片段进行所述一级脱敏处理。合并经过所述一级脱敏处理后的文件片段,得到所述目标数据。
[0112]
可选的,脱敏模块1103在对所述多个文件片段进行所述一级脱敏处理时具体用于:对于所述多个文件片段中的每个文件片段,判断该文件片段是否命中所述存储设备存储的已经过脱敏的文件片段。若命中,则不对该文件片段进行所述一级脱敏处理,若不命中,则对该文件片段进行所述一级脱敏处理。
[0113]
可选的,所述待读取数据对应的脱敏方式为二级脱敏处理时,所述脱敏模块具体用于解码所述待读取数据,获得解码后的文件内容。将所述解码后的文件内容划分为多个文件片段。对所述多个文件片段进行所述二级脱敏处理。对经过所述二级脱敏处理后的文件片段进行编码,得到所述目标数据。
[0114]
可选的,读写模块1102还用于保存所述经过一级脱敏处理或二级脱敏处理后的文件片段。
[0115]
可选的,所述装置还包括预取模块1104。预取模块1104用于当预取数据的条件满足时,从所述存储设备的硬盘中获取其他待读取数据。脱敏模块1103还用于对所述其他待读取数据进行脱敏处理。预取模块1104还用于当接收到所述主机发送的用于读取所述其他
待读取数据的命令时,将所述脱敏后的其他待读取数据发送给所述主机。
[0116]
可选的,所述预取数据的条件包括但不限于以下情况:所述其他待读取数据被修改;或发现所述其他待读取数据的类型符合设置的需要进行预取的数据的类型;或所述其他待读取数据被创建快照;或设置的预取周期到达。
[0117]
收发模块1101和读写模块1102、脱敏模块1103和预取模块1104均可以由存储设备内部的处理器调用内存中的程序来实现,或者由所述处理器独立实现。脱敏模块1103是图3或图4所示的脱敏引擎21,它可以由所述处理器调用内存中的程序来实现,或者由所述处理器独立实现,还可以是一个可编程的电子部件,例如数据处理单元(data processing unit,dpu)、图形处理单元(graphics processing unit,gpu)、嵌入式神经网络处理器(neural-network processing units,npu)等专用处理芯片。预取模块1102是图3或图4所示的预取引擎41,它可以由所述处理器调用内存中的程序来实现,或者由所述处理器独立实现,还可以是一个可编程的电子部件,例如dpu、gpu、npu等。
[0118]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,dsl))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,dvd))、或者半导体介质(例如:固态硬盘(solid state disk,ssd))等。
[0119]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0120]
在本技术的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。
[0121]
本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。在本技术的文字描述中,字符“/”,一般表示前后关联对象是一种“或”的关系;在本技术的公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
[0122]
可以理解的是,在本技术的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本技术的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。
[0123]
以上所述为本技术提供的实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献