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

异常检测方法、计算机存储介质及程序产品与流程

2022-02-20 20:18:23 来源:中国专利 TAG:

1.本技术实施例涉及数据安全
技术领域
,尤其涉及一种异常检测方法、计算机存储介质及程序产品。
背景技术
:2.在数据安全场景中,较为常用的方法是特征匹配,例如将正则表达式与特征库匹配、字符串匹配等操作。然而上述方法十分消耗处理资源,例如,一次匹配可能涉及几百个正则表达式,导致占用的cpu资源突增。3.另外,随着用于判断数据安全的规则不断增加,需要匹配的内容不断增加,例如,匹配过程涉及的正则表达式的数量不断增加,导致检测数据安全所需的资源不断上涨。有鉴于此,现有技术亟需解决的技术问题为如何提供一种消耗资源较小的检测方法。技术实现要素:4.有鉴于此,本技术实施例提供一种异常检测方案,以至少部分解决上述问题。5.根据本技术实施例的第一方面,提供了一种异常检测方法,包括:从待检测日志中获取待检测的目标字段的字段值,并提取所述字段值的关键信息,得到所述待检测日志的指纹;根据预设的指纹与异常操作的对应关系,查询所述待检测日志的指纹是否对应异常操作,其中,所述对应关系根据对历史日志中的字段进行异常操作检测获得的结果,以及所述历史日志的指纹获得;根据所述查询结果,确定是否对所述待检测日志进行异常操作检测。6.根据本技术实施例的第二方面,提供了一种异常检测方法,包括:响应于用户的选择操作,确定并展示待检测日志;响应于用户针对待检测日志的检测操作,从所述待检测日志中获取待检测的目标字段的字段值,并提取所述字段值的关键信息,得到所述待检测日志的指纹;根据预设的指纹与异常操作的对应关系,查询所述待检测日志的指纹是否对应异常操作,其中,所述对应关系根据对历史日志中的字段进行异常操作检测获得的结果,以及所述历史日志的指纹获得;展示根据所述查询结果确定的待检测日志的检测结果,所述检测结果包括:待检测日志为正常日志、待检测日志为异常日志或者待检测日志为需要进行异常操作检测的候选异常日志。7.根据本技术实施例的第三方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的异常检测方法。8.根据本技术实施例的第四方面,提供了一种计算机程序产品,包括计算机指令,所述计算机指令指示计算设备执行如上所述的异常检测方法对应的操作。9.根据本技术实施例提供的异常检测方案,通过根据对历史日志中的字段进行异常操作检测获得的结果,以及所述历史日志的指纹,获得预设的指纹与异常操作的对应关系,在进行检测时,可以从待检测日志中获取待检测的目标字段的字段值,并提取所述字段值的关键信息;根据预设的指纹与异常操作的对应关系,查询所述待检测日志的指纹是否对应异常操作;由此,可以根据所述查询结果,确定所述待检测日志是否为正常日志或异常日志,在确定是否对其进行异常操作检测,通过关键信息提取操作以及查询操作,可以实现待检测日志的初步检测,因为两个操作的复杂度为o(1),因此检测过程所耗费的资源较少,无论异常操作检测依据的异常检测规则增加至多少条,初步检测过程都不会耗费过多的资源,且如果存在足够多的历史日志,可以极大地提高查询操作的命中率,减少需要进行异常操作检测的日志数量,进而极大地减小了整个异常操作检测过程耗费的资源。附图说明10.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。11.图1a为本技术实施例的一种异常检测方法的步骤流程图;图1b为图1a所示实施例中的一种日志中包括的字段的示意图;图2a示出了本实施例提供的一种预设的指纹与异常操作的对应关系的存储方式示意图;图2b为一种javamap的存储结构示意图;图2c为图2a所示实施例中的一种元素的存储结构示意图;图2d为图2a所示实施例中的一种通过附加内存存储数据的示意图;图2e为图2a所示实施例中的一种具有主内存和附加内块存的内存结构示意图;图3为本技术实施例提供的另一种异常检测方法的步骤流程图;图4为本技术实施例提供的又一种异常检测方法的步骤流程图;图5为本技术实施例提供的一种电子设备的结构示意图。具体实施方式12.为了使本领域的人员更好地理解本技术实施例中的技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术实施例一部分实施例,而不是全部的实施例。基于本技术实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本技术实施例保护的范围。13.下面结合本技术实施例附图进一步说明本技术实施例具体实现。14.需要说明的是,本实施例提供的方案适合作为初步检测过程,可以在其他的异常操作检测之前执行,若通过本实施例提供的方案无法确定检测结果,则可以继续执行其他的异常操作检测,若通过本实施例提供的方案可以确定检测结果,则可以直接跳过其他异常操作检测。15.图1a示出了本实施例提供的一种异常检测方法的流程示意图。如图所示,其包括:s101、从待检测日志中获取待检测的目标字段的字段值,并提取所述字段值的关键信息,得到所述待检测日志的指纹。16.本实施例中,在任意具有数据处理功能的电子设备进行数据处理时,会生成数据处理过程对应的日志文件,日志文件中可以记录有操作事件、被处理的文件等。根据日志文件可以复现数据处理过程。17.日志文件可以分为多类,例如网络日志、进程日志等。网络日志中可以记录有网络会话过程的时间、类型、会话对象的ip地址、会话过程调用的接口等。进程日志中可以记录有数据处理过程中运行的进程、进程之间的调用关系、发起数据处理进程的用户等。18.针对不同的日志文件,需要获得的目标字段可能存在差异,异常操作检测可能依据的异常检测规则不同,需要确定的目标字段也不同。参见图1b,示例性地示出了进程日志和网络日志中依据的n个规则,以及各个规则对应的目标字段,进程日志中的目标字段可以包括cmdline、filepath、uid、parent_cmdline、parent_file等;网络日志中的目标字段可以包括dst_ip、file_md5、proc_name等。19.本实施例中,可以依据日志的类型、日志对应的数据源等信息,确定待检测日志的目标字段。确定目标字段后,可以确定待检测日志中目标字段的字段值,并提取目标字段的关键信息,得到待检测日志的指纹。待检测日志的指纹可以为多个目标字段的关键信息或者多个目标字段的关键信息的组合。20.示例地,确定的目标字段可以为uid,则uid对应的字段值可以为发起数据处理进程的用户id,根据用户id可以进行关键信息提取,得到待检测日志的指纹。21.本实施例中,参见图1b,异常操作检测依赖的异常检测规则包括多个,则可以根据每个异常检测规则对应的目标字段,分别提取字段值的关键信息;或者,可以同时提取多个异常检测规则对应的目标字段的字段值关键信息。本实施例对此不进行限定。22.另外,具体提取关键信息得到指纹的方法可参考相关技术,例如通过信息摘要算法提取关键信息等,本实施例对此不进行限定。23.s102、根据预设的指纹与异常操作的对应关系,查询所述待检测日志的指纹是否对应异常操作。24.其中,所述对应关系根据对历史日志中的字段进行异常操作检测获得的结果,以及所述历史日志的指纹获得。25.需要说明的是,本实施例中的历史日志是指在待检测日志之前进行异常操作检测的日志。26.另外,在对历史日志进行异常操作检测后,可以不对历史日志及其异常操作检测结果进行存储,直接根据检测结果更新预设的指纹与异常操作的对应关系,由此,可以保证预设的指纹与异常操作的对应关系可以及时更新,并节省了用于存储历史日志及其检测结果的存储空间。当然,也可以将历史日志及其异常操作检测结果进行存储,并按照定时或者定量的更新规则,根据存储的历史日志及其异常检测规则更新预设的指纹与异常操作的对应关系,这也在本技术的保护范围内。27.本实施例中,若对历史日志中的字段进行异常操作检测后,确定历史日志对应有异常操作,则提取历史日志中目标字段的字段值的关键信息作为预设的指纹,并建立预设的指纹对应有异常操作的对应关系;或者,若对历史日志中的字段进行异常操作检测后,确定历史日志并未对应有异常操作,则提取历史日志中目标字段的字段值的关键信息作为预设的指纹,并建立预设的指纹不对应有异常操作的对应关系。28.具体可以采用键值(key-value)方式存储建立的对应关系,例如,可以将预设的指纹存储为key,其对应的value值可以为“0”或者“1”,value值为“0”标识key不对应有异常操作,value值为“1”标识key对应有异常操作。29.在通过步骤s101得到待检测日志的指纹后,可以基于指纹进行查询操作,从而根据预设的指纹与异常操作的对应关系,查询待检测日志的指纹是否对应异常操作。示例地,若通过key-value存储预设的指纹和异常操作的对应关系,则查询结果可以为value=0,或者,value=1,或者查询结果为null(即未查询到预设的指纹)。30.s103、根据所述查询结果,确定是否对所述待检测日志进行异常操作检测。31.本实施例中,可以直接通过查询结果确定待检测日志的关键信息是否对应异常操作,若根据查询结果确定待检测日志对应有异常操作,则可以将待检测日志确定为异常日志,并不在再对其进行异常操作检测;或者,若根据查询结果确定待检测日志未对应异常操作,则可以将待检测日志确定为正常日志,并不在再对其进行异常操作检测;若未查询到预设的指纹,根据查询结果无法确定待检测日志是否为正常日志或异常日志,则可以将待检测日志确定为候选异常日志,并对其执行异常操作检测。异常操作检测可以例如提取待检测日志中的字段值得到正则表达式,并将正则表达式与特征库比对,根据比对结果确定待检测日志是否为异常日志。32.本技术实施例中,若并未获得查询结果,或者根据查询结果无法确定待检测日志是否为正常日志或异常日志,则在对待检测日志进行异常操作检测后,可以提取待检测日志的关键信息得到预设的指纹,并根据待检测日志的检测结果得到预设的指纹与异常操作的对应关系,以供后续检测其他日志时使用。33.下面通过一种具体场景对本技术实施例的方案进行示例性说明。34.获得待检测日志,待检测日志可以为进程日志。则根据预先配置的进程日志对应的目标字段,从待检测日志中获取目标字段的字段值,获取的可以包括cmdline、uid、parent_file字段的字段值。35.之后可以提取字段值的关键信息得到待检测日志的指纹,例如,计算三个字段值的md5值得到待检测日志的指纹。36.根据预设的指纹与异常操作的对应关系,查询待检测日志的指纹是否对应异常操作,根据查询结果确定待检测日志是否为正常日志或异常日志;若确定待检测日志为正常日志或异常日志,则不对待检测日志进行异常操作检测;或者,若不确定待检测日志为正常日志或异常日志,则可以对待检测日志进行异常操作检测。例如,可以根据计算得到的md5值,在预先存储的key中进行查询,获得与md5匹配的key对应的value值。在进行查询后,若并未获得查询结果,即,查询key值返回的为null,则可以采用正则匹配等方式对待检测日志进行异常操作检测;若查询结果为value=0,则可以确定待检测日志不是异常日志;若查询结果为value=1,则可以确定待检测日志是异常日志。另外,为了保证检测结果的准确定,可以继续对待检测日志进行异常操作检测。37.另外需要说明的是,针对预设的指纹和异常操作的对应关系,如果在查询过程中一预设的指纹的命中率较低,可以将该“预设的指纹和异常操作的对应关系”删除,以节省存储资源。38.本实施例提供的方案,通过根据对历史日志中的字段进行异常操作检测获得的结果,以及所述历史日志的指纹,获得预设的指纹与异常操作的对应关系,在进行检测时,可以从待检测日志中获取待检测的目标字段的字段值,并提取所述字段值的关键信息;根据预设的指纹与异常操作的对应关系,查询所述待检测日志的指纹是否对应异常操作;由此,可以根据所述查询结果,确定是否对所述待检测日志进行所述异常操作检测,通过关键信息提取操作以及查询操作,可以实现待检测日志的初步检测,因为两个操作的复杂度为o(1),因此检测过程所耗费的资源较少,无论异常操作检测依据的异常检测规则增加至多少条,初步检测过程都不会耗费过多的资源,且如果存在足够多的历史日志,可以极大地提高查询操作的命中率,从而极大减少需要进行异常操作检测的待检测日志的数量,进而极大地减小了整个异常操作检测过程耗费的资源。39.另外需要说明的是,本实施例提供的方案尤其适用于专有云场景中。40.在专有云场景下,用户需要部署自身的异常检测规则,专有云的服务端可以根据用户部署的异常检测规则对专有云使用过程中产生的日志进行异常操作检测。但是,进行异常操作检测所耗费的资源为用户自身的专有云资源,若异常操作检测过程耗费的资源过多,会导致用户使用专有云的成本增加,且增加的部分无法对用户产生使用价值。而采用本实施例提供的方案进行异常操作检测,可以保证异常操作检测所耗费的资源较少,且保证了异常操作检测的准确性,提高了用户的使用专有云的使用体验。41.本实施例的异常检测方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如手机、pad等)和pc机等。42.图2a示出了本实施例提供的一种预设的指纹与异常操作的对应关系的存储方式示意图。43.本实施例提供的方案可以用于云引擎中,为了保证云引擎的性能,优选将对应关系存储在内存中。本实施例中,可以在内存中存储具有预设结构的元素,所述元素中至少包括地址位部分以及指纹部分。44.根据上述实施例中的内容可知,预设的指纹为提取字段值的关键信息获得,预设的指纹与异常操作的对应关系可以包括“对应”、“不对应”两种。45.若直接存储目标字段的字段值,一般在存储这类数据时,会选择使用javamap的方式进行存储。然而,一个javamap的开销较大,例如,参见图2b,一个javamap至少包括:map对象头部、table、entry、key的字节。46.若存储一千万(1000w)个对应关系,则内存开销可以包括:map对象头部:头部一般为hashmap类,会占用48个字节。47.具体地,48个字节一般包括:头部(8) int(4*4) float(4) table数组引用(4) entryset引用(4) keyset引用(4) values引用(4) padding(4)=48字节。48.table:一般为object类,会占用16个字节。49.具体地,16个字节一般包括:头部(8 4) 长度(4) entry(4*1000w)=38m。50.entry:具体为entry类,会占用24个字节。51.具体地,24个字节一般包括:头部(8 4) k(4) value(4) next(4) int(4) padding(4)=32字节*1000w=300mkey的字节:(40 2*50)*1000w=1335m,因为有java头部,对象引用,数组长度,填充等开销,具体开销内容可参考相关技术。52.上述为存储目标字段的字段值的开销,此外,还需增加存储“对应”或“不对应”的对应关系开销等,共消耗内存2g。若继续考虑hash冲突的next指针等,消耗的内存可能不止2g。然而,内存开销大部分为头部、指针等,存储真实的1000w对应关系所消耗的内存可能只包括上述的1/3。53.有鉴于此,本实施例中,在内存中存储具有预设结构的元素,所述元素中至少包括地址位部分以及指纹部分。与直接存储目标字段的字段值相比,存储提取字段值获得的关键信息所消耗的内存极少,另外,通过上述结构存储对应关系,无需考虑头部等开销,与采用javamap存储的方案相比,所耗费的内存极少。54.具体地,本实施例中,地址位部分可以包括4个字节,指纹部分可以包括16个字节,每个元素可以占用20个字节的内存。55.另外,为了存储预设的指纹和异常操作之间的“对应”、“不对应”的关系,元素还可以包括查询结果部分,查询结果部分可以包括4个字节,则每个元素可以占用24个字节的内存。56.当然,上述的字节数量仅用于举例说明,本领域的技术人员可根据需求设置,本实施例对此不进行限定。57.可选地,本实施例中,若查询结果包括多位数据,所述查询结果的位数与所述异常操作检测依据的异常检测规则一一对应,所述查询结果中的一位数据用于表征所述待检测日志与该位数据对应的异常检测规则是否匹配,则所述元素中还包括查询结果部分。58.示例地,元素还可以包括查询结果部分,查询结果部分可以包括4个字节共计32位数据,则可以对应32个异常检测规则。59.在获取到待检测日志后,可以根据待检测日志对应的关键信息进行一次查询,获得包括32位数据的查询结果,每位查询结果可以表征待检测日志与该位数据对应的异常检测规则的匹配结果。一位数据具体可以为“0”、“1”,则“0”可以标识匹配,“1”可以标识不匹配。需要说明的是,待检测日志与异常检测规则不匹配,指示待检测日志并未通过依据异常检测规则进行的异常操作检测,即待检测日志对应有异常操作。60.本实施例中,通过设置查询结果部分可以存储多位数据,由此,可以将多个异常检测规则装配到一起,并通过一次查询操作确定待检测日志与多个异常检测规则的匹配情况,极大地减小了存储对应关系所耗费的内存资源,同时也减少了进行检测时需要执行的查询操作的次数。61.可选地,本实施例中,为了保证元素占用的内存不变,查询结果部分为大小固定的存储空间,若所述查询结果的位数小于或等于所述存储空间可存储的位数,则将所述查询结果存储至所述元素中的查询结果部分。具体可以参见上述例子,查询结果部分可以包括4个字节共计32位数据,其可以存储长度小于或等于32的比特数组,则可以对应小于或等于32个异常检测规则。62.若实际使用时,配置的异常检测规则的数量小于查询结果部分的位数,则可以将查询结果部分中不与异常检测规则对应的位数配置为默认值,默认值为与“匹配”对应的值。63.或者,若所述查询结果的位数大于于所述存储空间可存储的位数,则将所述查询结果存储至所述元素的附加内存,并在所述元素的查询结果部分存储所述查询结果所在附加内存的存储地址。64.示例地,参见图2c,元素kvelement中可以包括4个字节的地址位部分、16个字节的指纹部分md5(key),以及4个字节的查询结果部分,查询结果部分用于存储查询结果value或者查询结果所在附加内存的存储地址value引用。65.若元素的查询结果部分为长度为32的比特数组,则而真实的查询结果的长度大于32位,则可以创建元素对应的附加内存结构,将真实的查询结果存储至附加内存,并可以在元素的查询结果部分存储真实查询结果的存储地址。66.具体地,参见图2c,查询结果部分可以包括4个字节共计32位,第一个bit位可以用于标识查询结果部分的存储内容。67.第一个bit位为“0”可以标识查询结果部分存储的为真实的查询结果,即主地址标识,则后面的31个bit位可以为真实的查询结果。68.第一个bit位为“1”可以标识查询结果部分存储的为存储地址,即扩展存储标识,则后面的31个bit位中,前7位可以用于标识附加内存的列表索引,用于定位附加内存,剩余部分可以用于确定真实查询结果在附加内存中的偏移量,用于确定真实的查询结果在附加内存中的存储位置。69.在实际使用时,可以根据查询结果部分存储的存储地址,定位并返回真实的查询结果。70.通过设置附加内存,使得在保证元素占用内存不变的情况下,且在通过一次查询确定待检测日志与多个异常检测规则的匹配情况时,减少了对异常检测规则数量上限的限制,使得本实施例提供的方案使用时更加灵活。71.另外需要说明的是,若在存储过程中出现了hash冲突的情况,也可通过附加内存存储出现hash冲突的元素,无需为了考虑hash增加额外的内存开销,进一步减小了所耗费的内存资源。72.参见图2d,示出了一种通过附加内存存储数据的示意图。如图所示,具有预设结构的元素可以存储在主内存中,主内存可以对应有两类附加内存,一类附加内存用于存储元素引用的真实查询结果,另一类附加内存用于存储hash冲突的元素;真实查询结果也可以被hash冲突的元素引用。73.参见图2e,示出了一种具有主内存和附加内块存的内存结构示意图。如图所示,主内存中可以存储有多个主元素,主元素具体可以为kv(key-value)元素,指纹部分对应key,查询结果部分对应value。74.附加内存块可以包括多个,每个附加内存块中可以包括多个包括n个字节的元素(即附加内存),元素具体用于存储真实的查询结果,或者用于存储发生hash冲突的元素。每次可以创建一个附加内存块,附加内存块具体可以为一个byte[]数组,并可以将附加内存块增加至附加内存list中。发生hash冲突的数据或者查询结果会作为元素按照顺序写入附加内存块byte[]数组中。[0075]当一个附加内存块用尽(即byte[]数组达到设定条数上限、附加内存块已满)时,可以创建新的附加内存块,并将新的附加内存块放入list中。list中可以包括多个下标,每个下标对应附加内存块的一级索引,由此,可以通过list定位到对应的附加内存块。[0076]下面评估上述存储方式占用的内存:针对主内存,每个kv元素占用24个字节的内存,存储1000w数据需要24*1000w字节的内存。由于会发生hash冲突,24*1000w字节的内存中会有部分空余,根据经验,填充的内存占总内存的75%。[0077]针对附加内存块,在上一附加内存块用尽后会建立新的附加内存块,即内存最大的浪费是一个新的附加内存块,假设每个附加内存块的大小为10wbyte。[0078]则存储1000w个对应关系需要的内存最大是:24*1000w/0.75 10w=306m。[0079]下面通过几种具体实现方式,对本实施例提供的方案进行说明。[0080]1)bitsetcache,通过这个类,可以存储任意长度的关键信息,以及定长的查询结果,查询结果的长度需要在初始化时指定。与通过int方式存储定长的查询结果相比,通过bitset方式存储定长的查询结果所占用的字节数较少,降低了耗费的内存资源。[0081]2)intvaluekv,通过这个类,可以存储任意长度的关键信息,以及定长的查询结果,查询结果存储为int值(整型值)。[0082]3)stringvaluekv/listvaluekv,通过这个类,可以将查询结果存储为string或list。[0083]针对查询结果为一位(0或1)的情况:4)keyset,将多个关键信息存储为元素集,元素集中的各个元素为具有预设结构的元素,元素中不包括查询结果部分。在根据待检测日志的关键信息进行查询时,直接在元素集中进行查询,获得到“存在”、“不存在”两种查询结果。[0084]当对应关系包括“对应”、“不对应”时,可以建立与两个元素集,两个元素集中的一个存储对应有异常操作的预设的指纹,另一个元素集中存储有不对应异常操作的预设的指纹。具体进行查询时,可以在两个元素集中分别进行查询,根据获得的两个查询结果确定待检测日志是否为异常日志,若两个查询结果均为未得到查询结果,则不确定待检测日志为正常日志或者异常日志,则将待检测日志确定为候选检测日志,并对其进行异常操作检测。[0085]当然,上述仅为举例说明,在具体实现时,可以存储与异常操作“对应”的预设的指纹,则若根据查询结果确定待检测日志为异常日志,则不再对其进行异常操作检测;若根据查询结果不确定待检测日志为异常日志,则可以将其作为候选异常日志,并对其进行异常操作检测。或者,可以存储与异常操作“不对应”的预设的指纹,则若根据查询结果确定待检测日志为正常日志,则不再对其进行异常操作检测;若根据查询结果不确定待检测日志为正常日志,则可以将其作为候选异常日志,并对其进行异常操作检测。[0086]图3示出了本实施例提供的一种异常检测方法的流程示意图。本实施例中,为了更加准确地选择目标字段,以在保证目标字段数量尽量少的基础上,提高查询操作的命中率,本实施例中可以按照上述实施例的检测思路设置三层异常操作检测逻辑,这三层异常操作检测逻辑之后可以再设置其他异常操作检测对应的异常操作检测逻辑。[0087]三层检测逻辑分别依据三种不同类型的字段进行检测。则目标字段的类型可以包括:与所述待检测日志的数据源对应的目标字段、与所述待检测日志的拓扑结构对应的目标字段、与所述待检测日志的过滤节点对应的目标字段。[0088]当然,本实施例仅进行示例性说明,在本技术的其他实现方式中,也可以设置任意两层或一层或三层以上的检测逻辑,这也在本技术的保护范围内。[0089]如图3所示,其包括:s301、确定待检测日志。[0090]s302、确定待检测日志确定日志对应的数据源,根据数据源确定与所述待检测日志的数据源对应的第一目标字段,获取第一目标字段对应的第一字段值,提取第一字段值的关键信息。[0091]本步骤中,待检测日志对应的数据源可以包括网络、程序等。待检测日志具体可以为程序启动日志、程序运行日志、网络日志等。[0092]数据源对应的目标字段适用于字段重复程度较高的日志,例如程序启动日志中,程序启动过程所需的参数字段较为固定、调用的系统程序较为固定,即使选取日志中的多个字段作为目标字段,也可以保证通过指纹进行查询时的命中效果。[0093]s303、根据所述预设的指纹与异常操作的对应关系,查询所述待检测日志的指纹,获得查询结果,其中,所述查询结果包括多位数据,所述查询结果的位数与所述异常检测规则一一对应。[0094]所述查询结果中的一位数据用于表征所述待检测日志与该位数据对应的异常检测规则是否匹配。[0095]具体通过查询结果中的多位数据分别表征所述待检测日志与该位数据对应的异常检测规则是否匹配的方案可参考上述实施例,在此不再赘述。[0096]可选地,本实施例中,为了保证确定结果的准确性,可以根据所述查询结果确定所述待检测日志不匹配的异常检测规则,再依据不匹配的异常检测规则,对所述待检测日志进行异常操作检测,根据检测结果确定所述待检测日志是否为异常日志。其中,所述不匹配指示所述待检测日志与所述异常检测规则对应的异常操作对应。由此,可以尽量降低将待检测日志误判为异常日志的可能性。[0097]具体依据不匹配的异常检测规则,对所述待检测日志进行异常操作检测的实现方法可参考相关技术,在此不再赘述。[0098]若根据查询结果不确定待检测日志为异常日志,则继续执行步骤s304,否则确定待检测日志为异常日志,结束本次流程。[0099]s304、确定与所述待检测日志的拓扑结构对应的第二目标字段,从待检测日志中获取第二目标字段的字段值,提取字段值的关键信息。[0100]日志解析的拓扑结构中包括多个数据处理节点,每个数据处理节点可以对数据源中部分字段的字段值进行处理。[0101]以sql文件为例,sql文件可以被解析为pipeline,pipeline中可以包括多个stage,每个stage对应一个或多个数据处理节点。按照数据处理节点的类型,可以解析为不同的stage。示例地,进行数据抽取、转换、加载的预处理节点,在sql文件中主要对应select部分,会被解析为scriptchainstage;过滤节点,在sql文件中主要对应where部分,会被解析成filterchainstage。当然,数据处理节点还可以包括join节点等,在此不再进行说明。[0102]不同的数据处理节点依赖的字段可能相同也可能不同,在拓扑关系对应的上下游节点中,上游节点的输出字段也可作为下游节点的依赖字段,在数据处理节点进行数据处理的过程中,还会根据依赖字段产生中间字段。但所有字段均可以通过回溯对应至数据源中的字段。[0103]本步骤中,可以选择数据源中被节点依赖的字段作为第二目标字段。[0104]可选地,本技术实施例中,针对与所述待检测日志的拓扑结构对应的目标字段,其对应的预设的指纹和异常操作的对应关系可以通过下述步骤确定:将所述历史日志解析为拓扑结构数据,所述拓扑结构数据中包括进行数据抽取、转换、加载的预处理节点,以及进行数据过滤的过滤节点;基于所述预处理节点进行数据抽取、转换、加载过程中产生的中间字段与依赖字段的映射关系,获取所述中间字段对应的数据源字段,提取确定的所述数据源字段的字段值的关键信息作为预设的指纹,并根据历史日志的异常操作检测的结果建立预设的指纹与异常操作的对应关系;或者,确定所述过滤节点进行数据过滤依赖的过滤字段,将过滤字段向上回溯确定对应的数据源字段,提取确定的所述数据源字段的字段值的关键信息得到预设的指纹,并根据历史日志的异常操作检测的结果建立预设的指纹与异常操作的对应关系。[0105]由此,可以选择预处理节点和过滤节点依赖的字段作为目标字段,并基于确定的目标字段抽取关键信息,使得基于与所述待检测日志的拓扑结构对应的目标字段进行过滤的过滤方案适用于:数据源存在随机字段,但多数规则并未用到随机性的字段的情况。[0106]可选地,本实施例中,还可以按照多个所述过滤节点的由先到后的执行顺序,依次对多个所述过滤节点依赖的过滤字段进行溯源,并将所述过滤节点中新增的过滤字段对应的所述数据源字段作为目标字段,直至满足预设中止条件,其中,所述预设中止条件包括:过滤节点中的新增的依赖字段增加数量大于第一阈值且该过滤节点中依赖的过滤字段的总数量小于第二阈值。由此,可以抽取前n个靠近数据源的过滤节点依赖的字段作为目标字段,以在保证目标字段的数量尽量少的基础上,进行查询时的命中率更高。[0107]另外需要说明的是,由于第二目标字段与数据源直接相关,则与第二目标字段对应的“预设的指纹和异常操作的对应关系”在存储时,可以建立有预设的指纹与数据源的关联关系。获取到待检测日志后,可以根据对应的数据源确定是否需要进行基于第二目标字段的查询。如果需要,再执行上述步骤,如果不需要,则执行步骤s306。[0108]s305、根据所述预设的指纹与异常操作的对应关系,查询所述待检测日志的指纹获得查询结果,根据查询结果确定待检测日志是否为异常日志。[0109]若不确定待检测日志为异常日志,则继续执行步骤s306,否则确定待检测日志为异常日志,结束本次流程。[0110]s306、对所述待检测日志进行解析,确定所述待检测日志中与过滤节点对应的部分日志数据。[0111]具体地,解析过程可参考上述将sql文件解析为pipeline的过程,在此不再赘述。[0112]在解析过程中,可确定多个过滤节点,则针对任一过滤节点,均可执行本方案。[0113]s307、根据与过滤节点对应的部分日志数据,确定所述过滤节点依据的过滤条件,所述过滤条件中包括过滤变量。[0114]示例地,过滤节点依据的过滤条件可以包括:x》1,y《100,x*10《300等,其中的x、y为过滤变量。[0115]s308、按照过滤变量将所述过滤条件进行分组,获得与所述过滤变量对应的过滤条件组。[0116]具体地,过滤节点依据的过滤条件可能会存在多个,则可以按照过滤变量进行分组,即将具有相同过滤变量的过滤条件划分至一组。[0117]s309、将所述过滤条件组作为字段值,提取所述过滤条件组的关键信息。[0118]若存在多个过滤条件组,则可以提取多个过滤条件组分别对应的关键信息。[0119]s310、根据所述预设的指纹与异常操作的对应关系,查询所述待检测日志的指纹,获得查询结果,根据查询结果,确定待检测日志是否为异常日志。[0120]若不确定待检测日志为异常日志,则继续执行步骤s311,否则确定待检测日志为异常日志,结束本次流程。[0121]s311、确定所述过滤条件组对应的正则表达式,将正则表达式与预设异常特征库进行匹配,根据匹配结果确定待检测日志是否为异常日志。[0122]具体地,本实施例中,可以将正则表达式注册至hyperscan,通过hyperscan优化正则编译,以加速与预设异常特征库进行匹配的匹配过程。[0123]本实施例提供的方案,采用通过关键信息提取操作以及查询操作实现异常日志的检测,两个操作是复杂度为o(1)的操作,所耗费的cpu资源极小,另外,通过包括地址位部分以及指纹部分的元素实现对应关系的存储,极大地减小了所需的内存资源,此外,还可以针对不同的字段类型设置不同的异常操作检测逻辑,应用范围较为广泛,通过设置三层初步过滤逻辑,可以简化80%的异常操作检测过程,这样可以省出cpu资源提供给剩余20%的异常操作检测过程,达到整体性能的提升,且实现了资源可控的目标。[0124]另外需要说明的是,本实施例中,仅以记录对应有异常操作的预设的指纹为例进行说明,记录不对应异常操作的预设的指纹,或者同时记录有对应有异常操作及不对应有异常操作的预设的指纹的方案也在本技术的保护范围内。[0125]本实施例的异常检测方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如手机、pad等)和pc机等。[0126]图4为本技术实施例提供的一种异常检测方法的流程示意图,如图所示,其包括:s401、响应于用户的选择操作,确定并展示待检测日志。[0127]本实施例中,用户可以选择需要进行检测的日志,需要进行检测的可以为部分或全部日志。[0128]用户通过选择操作选择日志后,可以通过界面向用户展示被选择的待检测日志,进行展示时,具体可以展示:待检测日志所在的存储位置、待检测日志的类别等内容。[0129]s402、响应于用户针对待检测日志的检测操作,从所述待检测日志中获取待检测的目标字段的字段值,并提取所述字段值的关键信息,得到所述待检测日志的指纹。[0130]本实施例中,在展示待检测日志的界面中还可以包括开始检测按钮,用户确定待检测日志无误后,可以触发检测按钮,之后开始确定待检测日志中目标字段的字段值,并确定待检测日志的指纹。[0131]具体确定指纹的方法可参考上述实施例,在此不再赘述。[0132]s403、根据预设的指纹与异常操作的对应关系,查询所述待检测日志的指纹是否对应异常操作。[0133]其中,所述对应关系根据对历史日志中的字段进行异常操作检测获得的结果,以及所述历史日志的指纹获得。[0134]本步骤的具体实现可参考上述实施例,在此不再赘述。[0135]s404、展示根据所述查询结果确定的待检测日志的检测结果,所述检测结果包括:待检测日志为正常日志、待检测日志为异常日志或者待检测日志为需要进行异常操作检测的候选异常日志。[0136]本实施例中,若预设的指纹与异常操作的对应关系包括“对应”,即预设的指纹对应有异常操作,则若根据查询结果确定查询到指纹,则可以确定待检测日志为异常日志;或者,若预设的指纹与异常操作的对应关系包括“不对应”,即预设的指纹不对应有异常操作,则若根据查询结果查询到指纹,则可以确定待检测日志为正常日志;或者,若根据查询结果并未查询到指纹,或者,根据查询结果无法确定待检测日志为正常日志或者异常日志,则可以将待检测日志确定为候选异常日志,以对其进行异常操作检测。[0137]可选地,本实施例中,展示查询结果的界面包括继续检测按钮,用户触发继续检测按钮后,可以对候选异常日志进行异常检测操作。例如,通过正则匹配等方式对其进行异常操作检测等,并可以根据异常检测操作的结果,更新界面中展示的待检测日志的检测结果。[0138]另外,在检测结果的展示界面中,还可以展示根据指纹进行查询的检测过程所耗费的资源量、对异常候选日志进行异常操作检测所耗费的资源量等信息,以使得用户对异常操作检测过程占用的资源有直观的了解。[0139]在对候选异常日志进行异常操作检测之后,可以根据候选异常日志的检测结果更新预设的指纹与异常操作的对应关系,以提高预设的指纹的数量。则在进行异常操作检测过程中,可以展示与异常操作具有对应关系的指纹的数量,并可以通过这些数量的预设指纹进行异常操作检测时可以减少的资源量等信息。[0140]参照图5,示出了本技术实施例的一种电子设备的结构示意图,本技术具体实施例并不对电子设备的具体实现做限定。[0141]如图5所示,该电子设备可以包括:处理器(processor)502、通信接口(communicationsinterface)504、存储器(memory)506、以及通信总线508。[0142]其中:处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。[0143]通信接口504,用于与其它电子设备或服务器进行通信。[0144]处理器502,用于执行程序510,具体可以执行上述异常检测方法实施例中的相关步骤。[0145]具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。[0146]处理器502可能是处理器cpu,或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本技术实施例的一个或多个集成电路。智能设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。[0147]存储器506,用于存放程序510。存储器506可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。[0148]程序510具体可以用于使得处理器502执行上述方法实施例中的操作,程序510中各步骤的具体实现可以参见上述异常检测方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。[0149]本技术实施例还提供了一种计算机程序产品,包括计算机指令,该计算机指令指示计算设备执行上述多个方法实施例中的任一异常检测方法对应的操作。[0150]需要指出,根据实施的需要,可将本技术实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本技术实施例的目的。[0151]上述根据本技术实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如cdrom、ram、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如asic或fpga)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,ram、rom、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的异常检测方法。此外,当通用计算机访问用于实现在此示出的异常检测方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的异常检测方法的专用计算机。[0152]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术实施例的范围。[0153]以上实施方式仅用于说明本技术实施例,而并非对本技术实施例的限制,有关
技术领域
的普通技术人员,在不脱离本技术实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本技术实施例的范畴,本技术实施例的专利保护范围应由权利要求限定。当前第1页12
再多了解一些

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

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

相关文献