一种数据安全检测方法及装置与流程

文档序号:31760781发布日期:2022-10-12 02:54阅读:191来源:国知局
一种数据安全检测方法及装置与流程

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.图1示意性地示出了根据本说明书实施方式的一种数据安全检测方法的架构示意图;
29.图2示意性地示出了根据本说明书实施方式的一种数据安全检测方法的流程图;
30.图3示意性地示出了根据本说明书实施方式的一种数据安全检测方法的缓存结构的示意图;
31.图4示意性地示出了根据本说明书实施方式的一种数据安全检测方法的示意图;
32.图5示意性地示出了根据本说明书实施方式的一种数据安全检测装置的框图;
33.图6示意性地示出了根据本说明书实施方式的一种数据安全检测方法所在计算机设备的一种硬件结构图。
34.在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
35.下面将参考若干示例性实施方式来描述本说明书的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本说明书,而并非以任何方式限制本说明书的范围。相反,提供这些实施方式是为了使本说明书更加透彻和完整,并且能够将本说明书的范围完整地传达给本领域的技术人员。
36.本领域技术人员知道,本说明书的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本说明书可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
37.在大数据场景中,通常需要对进入计算引擎的大量数据进行安全检测,尤其是在专有云、混合云等对数据安全更敏感的应用场景中。而针对大量数据的检测通常需要应用大量的检测规则,其中每个检测规则可以包含多个正则表达式。
38.在相关技术中,通常通过flink或blink等大数据组件应用进行数据安全检测,但是上述大数据组件应用具有依赖重,任务开销大的特点,每个检测规则的运行都需要单独分配单独的计算资源,在安全检测场景中,通常需要运行大量的检测规则,所以开销会很大。
39.有鉴于此,本说明书提出一种数据安全检测方法。
40.下面结合附图对本说明书的方案进行详细说明。
41.请参见图1,图1是一示例性实施例提供的一种数据安全检测系统的架构示意图。如图1所示,该系统可以包括网络10、服务器11、若干电子设备,如手机12、手机13和手机14等。
42.服务器11可以为包含一独立主机的物理服务器,或者该服务器11可以为主机集群
承载的虚拟服务器、云服务器等。手机12-14只是用户可以使用的一种类型的电子设备。实际上,用户显然还可以使用诸如下述类型的电子设备:平板设备、笔记本电脑、掌上电脑(pdas,personal digital assistants)、可穿戴设备(如智能眼镜、智能手表等)等,本说明书一个或至少一个实施例并不对此进行限制。网络10可以包括多种类型的有线或无线网络。
43.在一实施例中,服务器11可以与手机12-14进行配合;其中,可由手机12-14接受用户操作,并将接受到的命令和文件通过网络10上传至服务器11,然后由服务器11基于本说明书的方案对文件进行处理。在另一实施例中,手机12-14可以独立实现本说明书的方案;其中,由手机12-14接受用户操作,并基于本说明书的方案对接受的命令和文件进行处理,以实现数据安全检测。
44.请参见图2,图2是一示例性实施例提供的一种数据安全检测方法的流程图,该方法应用于处理设备,该处理设备可以为图1所示的服务器11或手机12-14等。
45.该方法包括以下步骤:
46.步骤202,根据正则表达式对应的数据字段,对所述检测规则库中的检测规则包含的正则表达式进行分组,得到分别对应不同的数据字段的多个正则表达式集合;其中,所述正则表达式集合中的各个正则表达式对应的数据字段相同;
47.本说明书提供的数据安全检测方法应用于云服务系统搭载的大数据计算引擎,所述引擎用于运行预设的检测规则库中的检测规则,对来自与所述云服务系统对接的数据源的待检测数据进行安全检测;
48.大数据计算引擎部署于云服务系统中,所述云服务系统可以是公有云系统,也可以是专有云系统、或混合云系统,本说明书不对此进行具体限定。其中,大数据计算引擎可以对输入的数据进行安全检测,以确定其是否包含恶意入侵行为。
49.在本说明书示出的一个示意性的实施例中,所述云服务系统包括专有云或者混合云服务系统;所述大数据计算引擎包括轻量级的安全计算引擎。
50.在本说明书示出的一个示意性的实施例中,所述大数据计算引擎包括rocketmq-streams计算引擎。
51.其中所述待检测数据包括若干个数据字段;待检测数据通常可以具有相对固定的格式,或可以看做相对固定的格式,例如可以将待检测数据看做由若干个数据字段组成,每个字段为由字段名或字段值构成的key-value键值对,其中,上述字段名可以是在待检测数据中直接记录的,也可以是根据上述数据字段在待检测数据中的特定位置确定的。
52.对上述大数据预算引擎进行安全检测时,通常输入的待检测数据为来自少数几个数据源的大量数据;例如,针对主机安全进行检测的数据源可以包括进程日志和网络日志;针对来自每个数据源的待检测数据,通常可以分别使用不同的检测规则库中的检测规则进行安全检测,也可以使用相同的检测规则库中的检测规则进行安全检测。
53.在本说明书一个示意性的实施,根据待检测数据的变化,以及检测策略的更新,上述检测规则库中的检测规则可以进行动态更新。例如,可以通过预留用于更新上述动态检测规则库的api接口,以方便管理人员对上述检测规则库中的检测规则进行以增加、删除、修改、替换等方式进行更新。
54.在本说明书示出的一个示意性的实施例中,上述待检测数据包括来自同一数据源
的数据。
55.来自同一数据源的数据,通常其数据结构类似,包含的数据字段相似,可以使用相同的检测规则库中的检测规则对来自该数据源的数据进行安全检测。
56.上述来自数据源的数据可以是流数据,流数据通常是连续的随时间不断动态增长的数据,可以使用窗口截取上述流数据,作为待检测数据。上述窗口可以是时间窗口或者元素窗口,固定窗口或者滑动窗口。
57.其中,时间窗口是指,窗口按时间进行截取,例如窗口长度为1小时,则窗口截取的是窗口内的1小时接收到的流数据的数据片段;元素窗口是指,窗口按元素个数进行截取,在本说明书中,元素个数可以是数据字段的个数,例如,窗口长度为10000个数据字段,则窗口截取的是连续的10000个字段的流数据的数据片段。
58.其中,固定窗口指按固定的时间间隔或元素个数进行截取,例如,可以是每隔1小时截取过去1小时的数据片段,而滑动窗口可以在任意时刻动态进行截取。
59.在本说明书中示出的一个示意性的实施例中,所述待检测数据包括在来自同一数据源的流数据中通过滑动窗口动态截取的数据片段。
60.所述检测规则包括复数个与待检测数据中包含的数据字段对应的正则表达式;所述正则表达式用于针对所述待检测数据中包含的与该正则表达式对应的数据字段进行正则匹配;
61.由于大数据计算场景下的待检测数据通常数据量和数据复杂度都很大,因此对其进行安全检测通常需要配置大量的检测规则,上述检测规则可以包括通常包括一个或多个正则表达式,当检测规则包括多个正则表达式时,上述检测规则指由若干个正则表达式构成的复杂的安全检测规则。
62.在本说明书示出的一个示意性的实施例中,上述检测规则为由复数个与待检测数据中包含的数据字段对应的正则表达式,按照预设的逻辑运算方式构成的逻辑运算式;
63.上述正则表达式用于针对待检测数据中对应的数据字段进行正则匹配,以确定上述数据字段是否匹配特定的句法规则,例如,确定上述数据字段的值是否包括特定的字符或字符组合,确定上述数据字段的值包含的字符数等。本说明书不对正则表达式的具体格式进行限定,可以根据实际需要,例如采用编写上述检测规则的编程语言支持的格式。
64.比如,在本说明书示出的一个示意性的实施例中,用于表示字段名为project的数据字段的字段值为由任意8个字符构成的字符串的正则表达式可以写作:project=’********’;其中,单引号中的内容代表字符串,*代表任意字符。
65.正则表达式的执行结果,代表该正则表达是对应的字段是否匹配对应的句法规则,其执行结果为二值结果,分别表示正则匹配和正则不匹配。例如,可以用分别二进制数值1和0表示正则匹配或者正则不匹配的结果;当然,也可以使用其他值表示上述执行结果,本说明书不进行具体限定。
66.在本说明书示出的一种示意性的实施例中,所述大数据计算引擎包括了对所述待检测数据进行数据预处理,以将所述待检测数据中包含的数据字段处理为规范字段的预处理规则。
67.上述数据预处理可以包括对待检测数据中数据字段的提取、合并去重、错误修正、变形转化等各类数据预处理方式,本说明书不对数据预处理的具体方式进行具体限定。
68.上述数据预处理规则可以单独存储在上述大数据计算引擎中,也可以分别存储在预处理后的数据字段对应的检测规则中。
69.上述多个检测规则中,包括大量正则表达式,其中,通常可以存在大量重复的正则表达式。如果在进行安全检测时,分别执行上述多个检测规则,会使这部分正则表达式重复执行多次,造成较大的开销浪费。
70.因此,可以将所有表达式提前抽取出来,只执行一遍,以达到减小开销,加快运算的目的。各表达式的执行结果可以缓存在缓存空间中,当需要执行检测规则时,只需在缓存空间中的查询并调用该检测规则对应的表达式的执行结果,即可进一步得到该检测规则的检测结果。
71.进一步的,由于待检测数据通常包含的数据字段相同,或经过预处理后,包含的字段相同,可以适用同一检测规则库。因此可以预先建立用于缓存所有正则表达式执行结果的通用缓存结构,在每次接受到待检测数据后,可以针对待检测数据,批量执行上述所有正则表达式,并将结果按上述通用缓存结构存入缓存空间。
72.具体的,可以对检测规则库中的检测规则中的所有正则表达式进行分组,根据上述正则表达式对应的数据字段,分别将对应于同一数据字段的正则表达式分为一组,得到多个分别对应不同的数据字段的正则表达式集合。
73.由于将正则表达式的执行结果缓存到缓存空间后,再根据检测规则进行查询调用的实现方式中,需要持续占用这部分缓存空间,因此,对于复用次数不多的正则表达式的结果,可以选择不进行缓存。因此,可以将这部分缓存利用率低的正则表达式集合进行删除。缓存利用率低的判定方式,本说明书不进行具体限定。例如,可以将上述正则表达式集合中,包含的正则表达式的在上述检测规则库中的检测规则中,重复出现次数小于预设的阈值的正则表达式集合进行删除;
74.在本说明书示出的一个示意性的实施例中,通过分别判断所述多个正则表达式集合中正则表达式的数量,将正则表达式的数量小于预设的阈值的正则表达式集合判定为缓存利用率低的正则表达式集合,并将其进行删除。
75.步骤204,响应于接收到来自所述数据源的待检测数据,执行所述多个正则表达式集合中的正则表达式,并将各个正则表达式集合对应的执行结果缓存至缓存空间中;
76.上述正则表达式分组完成,得到上述正则表达式集合后,可以对接收到的待检测数据进行通用处理。
77.每当接收到来自上述数据源的待检测数据,针对该待检测数据,按照上述多个正则表达式集合,执行每个正则表达式集合中的各个正则表达式,得到每个正则表达式集合对应的各个正则表达式的执行结果。
78.在本说明书示出的一种示意性的实施例中,上述执行各个正则表达式,包括:
79.基于预设的加速框架,批量执行所述多个正则表达式集合中的正则表达式。
80.由于对所有正则表达式统一进行执行,需要同时执行大量正则表达式,因此可以使用正则表达式加速框架对正则表达式的执行进行加速。不说明书不对正则表达式加速框架的具体类型进行限定,例如可以使用flashtext框架,hyperscan框架等。
81.在本说明示出的一个示意性的实施例中,上述正则表达式加速框架包括hyperscan框架。hyperscan框架是一款个高性能的适用于多模、流式匹配的正则表达式加
速框架,其特性为同时进行执行的正则表达式的数量越多,其加速效果越好。
82.由于本方案将所有正则表达式统一进行执行,同时执行的正则表达式的数量非常大,因此,使用hyperscan框架对正则表达式执行过程进行加速,可以达到较好的加速效果。
83.上述各正则表达式的执行结果可以用二进制值1和0表示,其中1表示正则匹配,0表示正则不匹配。对于每个正则表达式集合,其执行结果可以用表示其包含的各个正则表达式的执行结果的二进制值,按预设的顺序拼接,得到的二进制字符串来表示。
84.例如,某正则表达式集合包含6个正则表达式,这10个正则表达式针对待检测数据的执行结果分别为:正则不匹配、正则匹配、正则不匹配、正则匹配、正则不匹配、正则不匹配,则该正则表达式集合的执行结果可以记为二进制字符串010100,并将该二进制字符串作为该字符串缓存至缓存空间中。
85.可以使用key-value键值对的方式存储所述正则表达式集合的执行结果,其中,将所述正则表达式集合对应的执行结果的值作为value值,key值可以为与所述表达式集合对应的值,本说明书不对此进行具体限定,例如,可以选用所述表达式集合对应的数据字段的字段名或字段值作为所述key值。
86.在本说明书示出的一个示意性的实施例中,根据所述各个正则表达式集合对应的数据字段,分别以所述数据字段的字段值作为key值,以所述正则表达式集合对应的执行结果的值作为value值,构成key-value键值对,并将所述键值对存入缓存空间。
87.由于检测规则库包含的检测规则数量很多,其包含的正则表达式也很多,因此,将所有正则表达式集合的执行结果,缓存到缓存空间中,也需要占用较大的缓存空间空间。例如,在相关技术中,通常使用java map的结构缓存键值对的集合类型的数据,使用这种结构,需要花费大量的开销在java头部,对象引用,数组长度,填充等额外开销。
88.因此,本说明书的方案将正则表达式集合的执行结果缓存至应用了高压缩缓存空间结构的缓存空间中。
89.在缓存空间中读取上述缓存的键值对时,根据实际要执行的检测规则,只需要根据对应的key值,查询出value的值,也就是检测规则中各个检测表达式所在的各个表达式集合的执行结果,并进一步读取上述各个检测表达式的执行结果,再根据各个检测表达式的执行结果得到检测规则的结果。
90.由于上述key值的长度变化较大,也可能很长,会带来较大的资源开销,因此可以通过对key值进行处理,以减小缓存空间开销。
91.在上述读取缓存空间中缓存的键值对时,key值只用于查找匹配。因此,可以不直接存储上述数据字段的值作为key值,而是将上述数据字段的值对应的索引作为key值进行存储,实际查询时,只要根据数据字段的值计算出对应的索引值,即可在缓存空间中作为key值查找对应的value值。而索引值,可以控制其数据结构和大小,因此可以有效压缩缓存空间的大小。
92.本说明书不对根据数据字段的值计算出对应的索引值的具体算法进行限定。例如,可以采用md5,sha,crc等算法。
93.在本说明书示出的一个示意性的实施中,使用md5算法作为上述索引算法,将数据字段的字段值进行md5运算得到的md5值作为key值,以键值对的形式存入缓存空间。
94.md5算法是一种信息摘要算法,可以根据原始信息生成一个16字节的md5值,常用
于信息校验。由于经md5算法得到的md5值长度固定为16字节,且几乎不会发生不同字符串产生相同md5值的可能,因此,使用数据字段的字段值对应的md5值作为key值,可以有效压缩缓存使用的缓存空间,减小开销。
95.请参考图3,图3是本说明书一实施方式的一种数据安全检测方法的缓存结构的示意图;
96.如图3所示,缓存空间结构包括主缓存空间和附加缓存空间,其中,上述主缓存空间为由若干个主数组元素构成的主数组结构。附加缓存空间由若干各附加缓存空间块构成,上述附加缓存空间块为由若干个附加数组结构构成的列表结构,上述附加数组结构由若干个附加数组元素构成。
97.当键值对存入上述缓存空间结构时,为其分配一个主数组元素,并将该键值对存入该主数组元素。
98.为进一步压缩缓存空间,可以使用哈希散列的方式为键值对分配上述主数组元素。可以设计哈希算法,使得到的哈希值对应上述主数组结构中的主数组元素。
99.例如,可以设计哈希算法,使对所述键值对中key值进行哈希运算,得到的哈希值的最大值设定为与键值对的数量,即对应的正则表达式集合的数量相同;因此,可以对键值对的key值做上述哈希运算,将与得到的哈希值对应的主数组元素分配给所述键值对。
100.使用上述哈希运算,可以直接根据键值对中的key值,计算出其对应的存储位置,而不需要使用额外的缓存空间空间保存寻址信息,可以进一步压缩缓存空间。
101.上述主数组元素的长度可以为固定的预设值,其中,包括可以地址位和存储键值对的数据存储位。
102.以图3中缓存空间结构为例,上述主数组元素的长度为24个字节,其中包括4个字节的地址位,和20个字节的数据存储位。由于键值对中key值为固定长度的md5值,占据16个字节的key位,剩余4个字节为用于存储value值的value位。
103.但是,键值对中的value位的长度由该键值对对应的正则表达式集合中包含的检测表达式的数量决定,为不固定的值,其长度可能超过4个字节。
104.因此,当键值对存入上述主数组元素时,需要先确认value值的长度是否超过4个字节,如果不超过,可以将上述value值正常存入上述主数组元素中的value位;
105.当上述value值的长度超过4个字节时,需要将上述value值存入附加缓存空间,并在上述主数组元素中的value位中存入所述value值存入的附加缓存空间的地址的指针。
106.应当注意的是,上述主数组的长度,和value位的长度仅为一个示例,可以根据实际需要设定为其他合理的长度值,例如可以设定主数组元素的长度为32字节或36字节等。
107.在本说明书示出的一个示意性的实施例中,上述将value值存入附加缓存空间的具体方式为:
108.为上述value值分配一个附加数组元素,附加缓存空间初始包括一个附加缓存空间块,依次确认最后新建的缓存空间块中的附加数组元素是否为空,将第一个空的附加数组元素分配给上述value值;如果该附加缓存空间块中所有附加数组元素都不为空,则新建一个附加缓存空间块,将新建的附加缓存空间块中的第一个附加数组元素分配给上述value值;
109.将上述value值写入上述附加数组元素,如果上述value值的长度超过上述附加数
组元素的长度,则继续写入下一附加数组元素,直到上述value值存入完毕;
110.将上述分配给上述value值的起始附加数组元素的地址的指针存入上述主数组元素中的value位。
111.此时,value位中的4个字节(32位),可以设定其中7位用于指示附加数组元素所在的附加缓存空间块,16位用于指示附加数组元素在其所在的附加缓存空间块中的位置。
112.因此,此时附加缓存空间中最多可以有128个附加缓存空间块。附加缓存空间块可以按需进行添加,当一个附加缓存空间块中所有附加数组元素都被使用后,在需要新建附加数组元素时,新建新的附加缓存空间块。根据实际需要添加附加缓存空间块,可以提升缓存利用率,节省附加缓存空间块使用的缓存空间资源,
113.上述附加缓存空间数组元素的长度也可以按需设定,例如,可以仍设定其为24字节。
114.上述使用哈希散列的方式为键值对分配上述主数组元素的方法,可能会出现哈希冲突的情况,即不同的key值经过哈希算法,得到了相同的哈希值,对应了相同的主数组元素。
115.对于第二个指向该主数组元素的键值对,可以为上述键值对分配一个空的附加缓存空间数组元素,并将上述键值对存入该空的附加缓存空间数组元素,并将指向该附加缓存空间数组元素的地址的指针存入上述主数组元素的地址位。
116.对于第三个指向该主数组元素的键值对,可以为上述键值对分配一个空的附加缓存空间数组元素,并将上述键值对存入该空的附加缓存空间数组元素,并将指向该附加缓存空间数组元素的地址的指针存入上述第二个指向上述主数组元素的键值对所存入的附加数组元素的地址位。
117.对于后续指向该主数组元素的键值对,仍以上述方法进行处理,每个数组元素中的地址位中存入了指向下一键值对所在的附加数组元素,形成了一个链表结构。
118.此方法中,附加数组元素的结构与主数组元素的结构相同,例如,在上述图3对应的实施例中,附加数组元素的长度为24个字节,其中包括4个字节的地址位,16个字节的key位,4个字节的value位。
119.综上,将各个正则表达式集合对应的执行结果缓存至缓存空间中的方法包括了将各表达式集合对应的执行结果用二进制数值字符串,将与各个正则表达式集合对应的数据字段的值用md5算法进行压缩,使用哈希算法进行寻址,key和value值直接以字节形式进行存储等多维度,多步骤的缓存手段,实现了缓存占用的缓存空间值的高度压缩。
120.步骤208,响应于所述待检测数据包含的所有数据字段对应的正则表达式集合中的正则表达式均执行完毕,依次从所述检测规则库中读取待执行的检测规则,从所述缓存空间中读取该检测规则包含的各个正则表达式的执行结果,并基于读取到的执行结果生成与该检测规则对应的检测结果。
121.上述所有正则表达式集合中的正则表达式均执行完毕,并以上述高压缩的形式缓存如缓存空间后,可以一次从检测规则库中读取待检测的各个检测规则。
122.针对上述每个检测规则,确认检测规则中的各个正则表达式,分别根据正则表达式对应的数据字段,读取该数据字段的值,应用上述md5算法得到对应的md5值,以该md5值为key值,在缓存空间中读取该数据字段对应的正则表达式集合的执行结果对应的二进制
字符串,并根据该正则表达式在上述正则表达式集合中的位置从上述二进制字符串中,获取该正则表达式对应的执行结果。获取检测规则中所有正则表达式对应的执行结果后,进一步确定该检测规则的检测结果。
123.在本说明书示出的一个示意性的实施例中,待检测数据中的部分数据字段对应的正则表达式在检测规则库包括的多个检测规则中的重复次数较少,为对其执行结果进行预先缓存,对于上述正则表达式,可以执行述正则表达式,以得到对应的执行结果。
124.其中,可以基于预设的正则表达式加速框架,例如hyperscan框架,对上述正则表达式的执行过程进行加速执行。
125.请参见图4,图4是根据本说明书实施方式的一种数据安全检测方法的示意图;
126.当上述数据安全检测方法应用于rocketmq-streams架构中,检测规则包括在多个安全计算任务中,上述安全计算任务包括数据源任务和多个过滤任务。其中,数据源任务主要针对从数据源获取的待检测数据进行数据预处理,或etl(数据的抽取、转化、加载)处理,由待检测数据得到规范化的,方便进行处理的多个数据字段。
127.上述过滤任务中包括若干正则表达式,过滤任务根据若干表达式的执行结果进一步确定检测结果。
128.首先,从上述多个过滤任务中提取出所有正则表达式,根据上述正则表达式对应的数据字段对表达式进行分组。
129.获取到待处理的数据后,运行上述数据源任务,得到规范化的数据字段,根据上述数据字段,检查各字段对应的各个表达式分组中对应的缓存中是否存在对应的执行结果(表达式指纹)。
130.如果存在,说明存在已经进行过检测的重复数据字段,将这些字段对应的执行结果放入上下文中;
131.如果不存在,基于hyperscan框架,加速各个表达式分组中正则表达式的执行,并将执行结果用二进制数的形式存入高压缩缓存和上下文中。
132.依次检查上下文中是否包含各个过滤规则的结果,对于上下文中不存在结果的过滤规则,从上下文中获取该过滤规则对应的正则表达式的执行结果,再根据这些正则表达式的执行结果,进一步确定该过滤规则的检测结果。
133.在本说明书的示例性实施例中,还提供了一种数据安全检测装置。请参见图5,图5是本说明书实施方式的数据安全检测装置的框图。
134.应用于应用于云服务系统搭载的大数据计算引擎,所述计算引擎用于运行预设的检测规则库中的检测规则,对来自与所述云服务系统对接的数据源的待检测数据进行安全检测;
135.其中所述待检测数据包括若干个数据字段;所述检测规则包括复数个与待检测数据中包含的数据字段对应的正则表达式;所述正则表达式用于针对所述待检测数据中包含的与该正则表达式对应的数据字段进行正则匹配;
136.该装置包括以下单元:
137.分组单元520,用于根据正则表达式对应的数据字段,对所述检测规则库中的检测规则包含的正则表达式进行分组,得到分别对应不同的数据字段的多个正则表达式集合;其中,所述正则表达式集合中的各个正则表达式对应的数据字段相同;
138.缓存单元530,用于响应于接收到来自所述数据源的待检测数据,执行所述多个正则表达式集合中的正则表达式,并将各个正则表达式集合对应的执行结果缓存至缓存空间中;
139.检测单元540,用于响应于所述待检测数据包含的所有数据字段对应的正则表达式集合中的正则表达式均执行完毕,依次从所述检测规则库中读取待执行的检测规则,从所述缓存空间中读取该检测规则包含的各个正则表达式的执行结果,并基于读取到的执行结果生成与该检测规则对应的检测结果。
140.可选的,所述检测规则为由复数个与待检测数据中包含的数据字段对应的正则表达式,按照预设的逻辑运算方式构成的逻辑运算式;
141.所述检测单元540,具体用于基于读取到的执行结果,按照预设的逻辑运算方式进行逻辑运算,以得到与该检测规则对应的检测结果。
142.可选的,所述待检测数据包括在来自同一数据源的流数据中通过滑动窗口动态截取的数据片段。
143.可选的,所述装置还包括:
144.预处理单元510,对所述待检测数据进行数据预处理,以将所述待检测数据中包含的数据字段处理为规范字段。
145.可选的,分组单元520,具体用于根据正则表达式对应的数据字段,对所述检测规则库中的检测规则包含的正则表达式进行分组,得到分别对应不同的数据字段的多个正则表达式集合,并分别判断所述多个正则表达式集合中正则表达式的数量,删除正则表达式的数量小于预设的阈值的正则表达式集合;
146.检测单元540,具体用于分别确定所述缓存空间中是否存在所述检测规则中包含的各个正则表达式的执行结果;如果存在,从所述缓存空间中获取所述正则表达式的执行结果,如果不存在,执行所述正则表达式,得到对应的执行结果。
147.可选的,缓存单元530,具体用于基于预设的正则表达式加速框架,批量执行所述多个正则表达式集合中的正则表达式。
148.可选的,所述正则表达式加速框架包括hypersacn框架。
149.可选的,缓存单元530,具体用于将各个正则表达式集合对应的执行结果缓存至应用了高压缩缓存空间结构的缓存空间中。
150.可选的,缓存单元530,具体用于根据所述各个正则表达式集合对应的数据字段,分别以所述数据字段的字段值作为key值,以所述正则表达式集合对应的执行结果的值作为value值,构成key-value键值对,并将所述键值对存入缓存空间。
151.可选的,所述正则表达式集合对应的执行结果的值,包括:
152.由所述正则表达式集合包含的各个正则表达式的执行结果对应的二进制值拼接成的二进制字符串。
153.可选的,缓存单元530,具体用于对所述数据字段的字段值进行md5运算,得到相应的md5值;将所述md5值作为key值。
154.可选的,所述缓存空间结构包括主缓存空间,所述主缓存空间包括由若干个主数组元素构成的主数组结构;
155.缓存单元530,具体用于为所述键值对分配一个主数组元素,将所述键值对存入所
述主数组元素。
156.可选的,所述主数组元素的数量为所述数据字段的数量;
157.缓存单元530,具体用于对所述键值对的key值做哈希运算,将与得到的哈希值对应的主数组元素分配给所述键值对。
158.可选的,所述缓存空间结构包括由若干各附加缓存空间块构成的附加缓存空间;所述附加缓存空间块包括由若干个附加数组结构构成的列表结构;所述附加数组结构由若干个附加数组元素构成。
159.可选的,缓存单元530,具体用于判断所述value值的长度是否超过预设的阈值,若否,将所述键值对存入所述主数组元素;
160.若是,为所述键值对分配若干个附加数组元素,将所述键值对中的value值存入所述附加数组元素,并将所述键值对中的key值和指向所述附加数组元素的地址的指针存入所述主数组元素。
161.可选的,缓存单元530,具体用于对所述键值对的key值做哈希运算,判断与得到的哈希值对应的主数组元素是否已经存储了键值对;
162.若否,将与所述哈希值对应的主数组元素分配给所述键值对;
163.若是,为所述键值对分配一个附加数组元素,并将指向所述附加数组元素的地址的指针存入所述主地址位。
164.可选的,所述云服务系统包括专有云或者混合云服务系统;所述大数据计算引擎包括轻量级的安全计算引擎。
165.可选的,所述大数据计算引擎包括rocketmq-streams计算引擎。
166.上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
167.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到至少一个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
168.在本说明书的示例性实施例中,还提供了一种装置及其所应用的终端的实施例。
169.本说明书装置的实施例可以应用在计算机设备上,例如服务器或终端设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,图6为本说明书实施方式的一种装置所在计算机设备60的一种硬件结构图,除了图6所示的处理器610、内存630、网络接口620、以及非易失性存储器640之外,实施例中装置所在的服务器或电子设备,通常根据该计算机设备的实际功能,还可以包括其他硬件,对此不再赘述。
170.在本说明书的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本说明书的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,
所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本说明书各种示例性实施例的步骤。
171.根据本说明书的实施例用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本说明书的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
172.所述程序产品可以采用一个或至少一个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或至少一个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
173.计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
174.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
175.可以以一种或多种程序设计语言的任意组合来编写用于执行本说明书操作的程序代码,所述程序设计语言包括面向对象的程序设计语言——诸如java、c++等,还包括常规的过程式程序设计语言——诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
176.虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在至少一个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在至少一个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或至少一个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
177.类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统单元和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成至少一个软件产品。
178.由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
179.以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1