CN115952191A - 一种资产检索方法及系统 - Google Patents
一种资产检索方法及系统 Download PDFInfo
- Publication number
- CN115952191A CN115952191A CN202310198880.7A CN202310198880A CN115952191A CN 115952191 A CN115952191 A CN 115952191A CN 202310198880 A CN202310198880 A CN 202310198880A CN 115952191 A CN115952191 A CN 115952191A
- Authority
- CN
- China
- Prior art keywords
- retrieval
- asset
- information
- statement
- target
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请涉及计算机技术领域,具体涉及一种资产检索方法及系统。所述方法可以包括:获取检索请求;所述检索请求包括用于检索资产的检索信息;所述检索信息为自定义语句;所述自定义语句包含设置的若干检索条件;基于所述检索请求,判断预设的检索类型中与所述检索请求对应的目标检索类型;在所述目标检索类型为自定义检索的情形下,对所述自定义语句进行转换,得到检索语句;所述检索语句用于检索满足所述若干检索条件的资产;基于所述检索语句,在数据库中进行资产检索。由此可以大大降低了检索难度。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种资产检索方法及系统。
背景技术
随着经济和技术的发展,企业等机构规模越来越大,拥有的资产越来越多,资产的属性页越来越多,资产管理的难度日益增大,客户的搜索习惯也发生变化,不再简单通过单个属性(例如IP地址)来查询资产,而是通过多种属性的组合快速定位到资产。所述资产包括硬件设备、软件装置、硬件和软件结合的产品。例如所述资产可以包括服务器,PC(personal computer,个人计算机)设备,摄像头,打印机,防火墙、网关、OA系统、杀毒软件等等。
机构在梳理这些资产时所消耗的人工成本越来越大,迫切的需要一种方式来管理资产,以及通过资产的某些属性的组合来快速定位到资产。
发明内容
有鉴于此,本申请公开一种资产检索方法。所述方法可以包括:获取检索请求;所述检索请求包括用于检索资产的检索信息;所述检索信息为自定义语句;所述自定义语句包含设置的若干检索条件;基于所述检索请求,判断预设的检索类型中与所述检索请求对应的目标检索类型;在所述目标检索类型为自定义检索的情形下,对所述自定义语句进行转换,得到检索语句;所述检索语句用于检索满足所述若干检索条件的资产;基于所述检索语句,在数据库中进行资产检索。
在一些实施例中,所述数据库存储了若干资产信息以及所述资产信息关联的描述信息;所述描述信息对应于若干检索范围;所述自定义语句包含针对至少一个检索范围对应的若干第二描述信息所设置的若干第二检索条件;所述对所述自定义语句进行转换,得到检索语句,包括:根据与所述目标检索类型对应的语句生成规则,解析所述自定义语句,得到具有逻辑关系的若干所述第二检索条件; 生成与每一所述第二检索条件对应的第二初始检索语句;针对所述若干检索范围中每一检索范围,基于所述逻辑关系,组合所述第二初始检索语句,得到与每一检索范围对应的第二最终检索语句。
在一些实施例中,所述解析所述自定义语句,得到具有逻辑关系的若干所述第二检索条件,包括:在所述自定义语句包含第二预设字符的情形下,按照第二预设字符,对所述自定义语句进行拆分,得到具有第一逻辑关系的若干第一语句片段;针对每一第一语句片段,在所述第一语句片段包含逻辑符的情形下,基于所述逻辑符对所述第一语句片段进行拆分,得到若干第二语句片段,针对每一第二语句片段执行与第一语句片段相同的操作,直至拆分后得到的语句片段不包括所述逻辑符;将拆分得到的每一语句片段,确定为若干所述第二检索条件。
在一些实施例中,所述预设的检索类型包括全文检索、自定义检索、高级检索;所述基于所述检索请求,判断预设的检索类型中与所述检索信息对应的目标检索类型,包括:在所述检索请求包括的标识位为预设标识的情形下,将所述目标检索类型确定为高级检索;在所述检索请求包括的标识位不是所述预设标识且所述检索信息包括运算符的情形下,将所述目标检索类型确定为自定义检索;在所述检索请求包括的标识位不是所述预设标识且所述检索信息未包括运算符的情形下,将所述目标检索类型确定为全文检索。
在一些实施例中,所述数据库存储了若干资产信息以及所述资产信息关联的描述信息;所述描述信息对应于若干检索范围;所述检索信息为所述目标资产信息关联的描述信息所包括的关键词;所述方法还包括:在所述目标检索类型为全文检索的情形下,根据与所述全文检索对应的语句生成规则,生成与每一检索范围对应的检索语句;所述检索语句用于检索对应检索范围下的目标资产信息;所述目标资产信息关联的描述信息包含所述关键词。
在一些实施例中,述描述信息包含IP和/或MAC地址;针对所述IP和/或MAC地址的分词方法包括:从左到有遍历所述IP和/或MAC地址的每一位字符,并将首个第一预设字符之前的若干字符组成第一分词,相邻两个第一预设字符之间若干字符组成第二分词和第三分词,末尾第一预设字符之后的若干字符组成第四分词;将所述第一分词和所述首个第一预设字符组成第五分词;将所述第五分词和第二分词组成第六分词;将所述第六分词和中间第一预设字符组成第七分词;将所述第七分词和所述第三分词组成第八分词;将所述第八分词和所述末尾第一预设字符组成第九分词;将所述第九分词和所述第四分词组成第十分词。
在一些实施例中,所述数据库存储了若干资产信息以及所述资产信息关联的描述信息;所述描述信息对应于若干检索范围;所述检索信息为针对第一检索范围下的若干第一描述信息所设置的若干第一检索条件;所述若干第一检索条件之间具备逻辑关系; 所述方法还包括:
在所述目标检索类型为高级检索的情形下,根据与所述高级检索对应的语句生成规则,生成与每一所述第一检索条件对应的第一初始检索语句;基于所述逻辑关系,组合所述第一初始检索语句,得到第一最终检索语句;所述第一最终检索语句用于检索所述第一检索范围下的目标资产信息,所述目标资产信息包含的所述第一描述信息满足所述若干第一检索条件。
在一些实施例中,所述基于所述检索语句,在数据库中进行资产检索,包括:在存在多条所述检索语句的情形下,并行处理多条所述检索语句以在所述数据库中完成检索;将针对每一检索语句检索到的目标资产信息存储在预设高速存储介质;所述预设高速存储介质中存储了不同检索范围下检索到的目标资产信息;从所述预设高速存储介质获取所述目标资产信息进行展示。
在一些实施例中,所述数据库为图结构数据库;所述图结构数据库以图结构存储所述资产信息以及关联的描述信息;响应于只在一个检索范围下检索到满足检索信息的目标资产信息,所述方法还包括:基于所述图结构,关联查询所述目标资产信息在除所述一个检索范围以外的其它检索范围是否存在描述信息;响应于查询到的其它检索范围的描述信息,确定在所述其它检索范围查询到所述目标资产信息;将在其它检索范围查询到所述目标资产信息的检索结果,存储到所述预设高速存储介质。
在一些实施例中,对所述自定义语句进行转换之前,所述方法还包括:对所述自定义语句进行校验;所述校验的校验维度包括语法校验和/或内容校验;所述语法校验是指校验自定义语句中是否包括预设违法字符,并在不包括任意所述预设违法字符的情形下确定语法校验通过;所述内容校验是指判断自定义语句内容是否缺失,并在内容不缺失的情形下确定内容校验通过。
在一些实施例中,所述资产的资产信息存储方法包括:获取待维护资产的资产信息;所述资产信息包括以下至少一种类型的信息,资产属性信息,漏洞信息,端口信息,弱口令信息;针对每一种类型的资产信息,确定其主键信息;将每一种类型的资产信息包括的描述信息作为neo4j图结构中的节点,并基于所述主键信息将属于所述待维护资产的资产信息关联起来,以完成针对所述待维护资产的资产信息的存储。
在一些实施例中,所述方法还包括:响应于完成针对所述待维护资产的资产信息的存储,针对每一种类型的资产信息建立对应的索引;所述索引包括所述资产信息的至少部分描述信息。
在一些实施例中,所述检索信息为待检索的目标资产具备的目标资产信息和/或目标描述信息所包括的关键词;在所述目标检索类型为全文检索的情形下,基于所述索引进行全文检索的方法包括:基于所述关键词,构建针对每一种类型的资产信息的检索语句;所述检索语句以基于所述检索语句,在数据库中进行资产检索,包括:基于所述检索语句,检索包括所述关键词的第一目标节点,以及与所述第一目标节点为预设步幅的第二目标节点;所述第一目标节点与所述第二目标节点为所述目标资产信息和所述目标描述信息对应的节点;基于所述第一目标节点与所述第二目标节点,统计每一种类型的节点数量,并作为查询结果进行返回。
前述实施例记载的方案中,可以支持自定义检索方式,可以由用户自定义检索条件形成自定义语句,后台可以对自定义语句进行转换生成检索满足所述若干检索条件的资产的检索语句,完成自定义检索,与相关技术相比,用户无需知晓具体的表名,字段名即可完成检索,大大降低了检索难度,并且检索条件可以自定义,从而实现通过多种属性的组合来快速定位到资产。
附图说明
下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍。
图1为本申请实施例示出的一种资产检索方法的流程示意图;
图2为本申请实施例示出的一种资产检索方法的流程示意图;
图3为本申请示出的判断检索类型的方法流程示意图;
图4为本申请示出的高级检索类型生成检索语句的方法流程示意图;
图5为本申请示出的语法结构示意图;
图6为本申请示出的一种基于Antlr4的自定义检索类型生成检索语句的方法流程示意图;
图7为本申请示出的解析自定义语句的方法流程示意图;
图8为本申请示出的一种数据库检索流程示意图;
图9为本申请示出的关联检索方法流程示意图;
图10为本申请示出的一种资产检索系统的结构示意;
图11为本申请示出的判断检索类型的方法流程示意图;
图12本申请示出的为全文检索流程示意图;
图13为本申请示出的页面单元向用户展示检索结果的示意图;
图14为本申请示出的高级检索流程示意图;
图15为本申请示意的高级检索窗口示意图;
图16为本申请示出的一种自定义检索流程示意图。
具体实施方式
下面将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的设备和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在可以包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。还应当理解,本文中所使用的词语“如果”,取决于语境,可以被解释成为“在……时”或“当……时”或“响应于确定”。
在一些相关技术中,将资产存入传统的关系型数据库,如mysql中,前端给出固定的检索条件模板供用户输入查询。
对于前面的方案,检索条件比较固定,用户需要依据提供的检索条件模板构建检索信息。例如,用户需要知道具体的表名,字段名,才可以构建检索信息,并且编写后的检索信息难以阅读。因此,对用户要求比较高,一般的用户可能无法正常进行资产检索,大大增加了检索难度。
有鉴于此,本申请提出一种资产检索方法。所述方法支持自定义检索方式,可以由用户自定义若干检索条件形成自定义语句,后台可以对自定义语句进行转换生成用于检索满足所述若干检索条件的资产的检索语句,完成自定义检索,与相关技术相比,用户无需知晓具体的表名,字段名即可完成检索,大大降低了检索难度,并且检索条件可以自定义,从而实现通过多种属性的组合来快速定位到资产。
以下结合附图进行实施例说明。请参见图1,图1为本申请实施例示出的一种资产检索方法的流程示意图。
图1示出的资产检索方法可以应用于电子设备中。其中,所述电子设备可以通过搭载与资产检索方法对应的软件逻辑执行该方法。所述电子设备的类型可以是笔记本电脑,计算机,服务器,手机,掌上电脑(Personal Digital Assistant,PDA)等。在本申请中不特别限定所述电子设备的类型。所述电子设备也可以是客户端设备或服务端设备。
如图1所示,所述方法可以包括S102-S108。除特别说明外,本申请不特别限定这些步骤的执行顺序。
S102,获取检索请求;所述检索请求包括用于检索资产的检索信息。
所述检索信息为自定义语句;所述自定义语句包含设置的若干检索条件。
用户可以根据需求在展示页面中输入所述自定义语句。
S104,基于所述检索请求,判断预设的检索类型中与所述检索请求对应的目标检索类型。
本申请中可以为用户提供多种检索类型。所述预设的检索类型可以根据需求进行设定。
在一些实施例中,所述预设的检索类型包括全文检索、自定义检索、高级检索。
其中,全文检索是指在数据库中检索包含关键词的目标资产。
高级检索中,可以为用户提供一些系统支持的检索条件模板,供用户选择并填写,等等检索信息,然后再将检索信息翻译成检索语句,完成目标资产的检索。
自定义检索可以不对用户输入的内容进行限制,从用户自定义输入的自定义语句中解析出若干检索条件,完成目标资产的检索。
判断目标检索类型的方式有很多。例如,可以为每种检索类型预设对应的标识。用户可以在前端选择相应的检索类型使得检索请求可以携带相应的标识。后端通过识别检索请求携带的标识即可识别检索类型。在后续实施例中还会提出判断检索类型的方式,该方式可以减少用户选择减少检索类型的操作,降低用户对检索工具的掌握程度,进一步降低检索难度。
S106,在所述目标检索类型为自定义检索的情形下,对所述自定义语句进行转换,得到检索语句。所述检索语句用于检索满足所述若干检索条件的资产。
所述转换对应的转换规则可以预先存储在检索引擎中,通过所述转换规则可以完成自定义语句的转换,得到检索语句。
S108,基于所述检索语句,在数据库中进行资产检索。
本步骤中把生成的检索语句输入数据库,即可完成目标资产的检索。
通过S102-S108记载的方案,可以支持自定义检索方式,可以由用户自定义检索条件形成自定义语句,后台可以对自定义语句进行转换生成检索满足所述若干检索条件的资产的检索语句,完成自定义检索,与相关技术相比,用户无需知晓具体的表名,字段名即可完成检索,大大降低了检索难度,并且检索条件可以自定义,从而实现通过多种属性的组合来快速定位到资产。
有鉴于此,本申请还提出一种资产检索方法。所述方法可以在获取检索请求之后,判断预设多种检索类型中与本次检索请求对应的目标检索类型,然后可以基于目标检索类型对应的语句生成规则生成与检索信息对应的检索语句完成检索。由此可以支持多种检索方式,并可以根据用户输入的检索信息自动进行检索方式的适配,简化用户对检索工具的操作,降低对用户的要求,使得一般的用户也可以完成资产检索,大大降低了检索难度。
以下结合附图进行实施例说明。请参见图2,图2为本申请实施例示出的一种资产检索方法的流程示意图。
图2示出的资产检索方法可以应用于电子设备中。其中,所述电子设备可以通过搭载与资产检索方法对应的软件逻辑执行该方法。所述电子设备的类型可以是笔记本电脑,计算机,服务器,手机,掌上电脑(Personal Digital Assistant,PDA)等。在本申请中不特别限定所述电子设备的类型。所述电子设备也可以是客户端设备或服务端设备。
如图2所示,所述方法可以包括S202-S208。除特别说明外,本申请不特别限定这些步骤的执行顺序。
S202,获取检索请求。
所述检索请求包括用于检索资产的检索信息。
本申请可以提供与用户进行交互的前端。例如检索前端可以是Web页面。该前端可以提供用户输入检索信息的窗口。用户可以基于该窗口输入针对待检索的目标资产构建检索信息,使得数据库可以基于该检索信息检索到满足要求的目标资产。
用户完成检索信息输入之后可以点击前端提供的诸如“检索”按钮,发起检索请求。负责资产检索的电子设备(例如服务端)即可获取所述检索请求。
S204,基于所述检索请求,判断预设的检索类型中与所述检索信息对应的目标检索类型。
关于S204的说明可以参照S104,在此不做详述。
在一些实施例中,所述预设的检索类型包括全文检索、自定义检索、高级检索。
其中,全文检索是指在数据库中检索包含关键词的目标资产。
高级检索中,可以为用户提供一些系统支持的检索条件模板,供用户选择并填写,等等检索信息,然后再将检索信息翻译成检索语句,完成目标资产的检索。
自定义检索可以不对用户输入的内容进行限制,从用户自定义输入的自定义语句中解析出若干检索条件,完成目标资产的检索。
判断目标检索类型的方式有很多。例如,可以为每种检索类型预设对应的标识。用户可以在前端选择相应的检索类型使得检索请求可以携带相应的标识。后端通过识别检索请求携带的标识即可识别检索类型。在后续实施例中还会提出判断检索类型的方式,该方式可以减少用户选择减少检索类型的操作,降低用户对检索工具的掌握程度,进一步降低检索难度。
S206,根据与所述目标检索类型对应的语句生成规则,生成与所述检索信息对应的检索语句。
本步骤中可以预先配置针对每种检索类型对应的语句生成规则。在通过S204识别出本次检索请求对应的目标检索类型后,可以获取对应的语句生成规则,生成相应的检索语句。
S208,基于所述检索语句,在数据库中进行资产检索。
本步骤中把生成的检索语句输入数据库,即可完成目标资产的检索。
通过S202-S208记载的方案,可以在获取检索请求之后,判断预设多种检索类型中与本次检索请求对应的目标检索类型,然后可以基于目标检索类型对应的语句生成规则生成与检索信息对应的检索语句完成检索。由此可以支持多种检索方式,并可以根据用户输入的检索信息自动进行检索方式的适配,简化用户对检索工具的操作,降低对用户的要求,使得一般的用户也可以完成资产检索,大大降低了检索难度。
在一些实施例中,在S204中,可以通过识别检索信息的内容判断检索类型的方案,从而可以减少用户选择减少检索类型的操作,降低用户对检索工具的掌握程度,进一步降低检索难度。
请参见图3,图3为本申请示出的判断检索类型的方法流程示意图。图3示意的步骤为对S204的详细说明。如图3所示,所述方法可以包括S302-S306。
S302,在所述检索请求包括的标识位为预设标识的情形下,将所述目标检索类型确定为高级检索。
所述预设标识可以根据需求进行设定。
本步骤中,可以在前端为用户设置高级检索选项,响应于用户选择高级检索选项,可以在检索请求中携带所述第一标识。后端通过解析检索请求是否携带第一标识即可判断本次检索请求是否为高级检索。
S304,在所述检索请求包括的标识位不是所述预设标识且所述检索信息包括运算符的情形下,将所述目标检索类型确定为自定义检索。
如果检索请求携带的标识不是所述第一标识,说明此次不是高级检索。然后可以判断检索信息是否包括运算符。所述运算符是指等于、大于、小于、包含、被包含等可以表示运算关系的一些符号。
如果用户输入的检索信息包括运算符,说明用户输入的是可能是一些检索条件,用户可能了解资产的准确信息,可以将所述目标检索类型确定为自定义检索,以基于检索条件精确查询目标资产。
S306,在所述检索请求包括的标识位不是所述预设标识且所述检索信息未包括运算符的情形下,将所述目标检索类型确定为全文检索。
如果用户输入的检索信息不包括运算符,说明用户输入的是一些关键词,用户可能并不了解资产的准确信息,可以将所述目标检索类型确定为全文检索,以在全部数据范围内检索用户想要检索的目标资产,以检索时间换取用户的简易操作。
通过S302-S306可以减少用户针对自定义检索和全文检索的选择操作,通过用户输入的检索信息可以自动完成检索类型判断,降低用户对检索工具的掌握程度,进一步降低检索难度。
以下介绍三种检索方式对应的构建检索语句的方式。
本申请中数据库存储了若干资产信息以及所述资产信息关联的描述信息。这些资产可以是用户自行上传,通过资产探测模块探测或者转发得到的。数据库存储了关于资产的很多描述信息。所述资产信息可以包括资产的名称,IP地址等属性信息,所述描述信息可以包括资产的漏洞信息,开放端口信息,弱口令信息,责任人信息,设备类型等等。
所述描述信息对应于若干检索范围。
所述若干检索范围可以根据需求进行设定。检索范围与描述信息的对应关系也可以根据需求进行设定。
在一些实施例中,所述若干检索范围可以包括资产,漏洞,端口,弱口令。
资产可以对应资产的名称,IP地址等属性信息;漏洞可以对应资产的漏洞名称,资产名称,IP地址等信息;端口可以对应资产的端口,资产名称,IP地址等信息;弱口令可以对应资产的弱口令,资产名称,IP地址等信息。
在一些实施例中,在检索范围内检索出的资产信息可以被渲染在前端展示,供用户查看。
本申请通过三种检索方式构建的检索语句,可以用来从数据库检索出检索范围内满足条件的目标资产信息。例如,需要检索漏洞检索范围下资产,通过检索语句可以返回漏洞名称,拥有漏洞的资产的名称,IP地址等信息。需要检索弱口令检索范围下的资产,通过检索语句可以返回弱口令,拥有弱口令的资产的名称,IP地址等信息。
一、全文检索。
全文检索场景下,所述检索信息为目标资产信息关联的描述信息所包括的关键词。例如,检索信息可以是80。80可以理解为目标资产的端口为80,IP地址包括80,名称包括80,弱口令包括80,漏洞包括80等等。
在S206中,可以根据与所述全文检索对应的语句生成规则,生成与所述若干检索范围中每一检索范围对应的检索语句。
所述检索语句用于检索对应检索范围下的目标资产信息;所述目标资产信息关联的描述信息包含所述关键词。
全文检索场景下,并不知道用户输入的检索关键词是哪个描述信息所包括的,因此需要对数据库中全部的资产描述信息进行遍历,找到包含关键词的描述信息,以找到目标资产。
在一些方式中,在存储资产描述信息时针对资产描述信息所包括的部分信息建立了倒排索引,通过遍历所述倒排索引即可完成针对资产描述信息的遍历,有助于提升搜索资产效率。
在全文检索场景中,需要收集预设的若干检索范围中每一检索范围检索到的目标资产。因此可以构建与每一检索范围对应的检索语句,从而通过检索数据库得到每一检索范围下的目标资产信息。例如,若干检索范围包括资产,漏洞,端口,弱口令,可以构建与每一检索范围对应的检索语句,共4条检索语句。其中,每一检索范围的检索语句都可以所述关键词作为检索条件。关于检索语句的构建方式可以参照相关技术。比如,针对图结构数据库可以构建Cypher语句。Cypher是Neo4j(图结构数据库)进行图查询的语言,类似与SQL,也是声明式的查询语言。由此可以基于提供更全面的检索结果,在一次检索过程中返回多种检索维度的检索结果,用户不必再逐项检索,提升检索准确性。
在一些实施例中,所述资产的资产信息存储方法包括:
获取待维护资产的资产信息;所述资产信息包括以下至少一种类型的信息,资产属性信息,漏洞信息,端口信息,弱口令信息;
针对每一种类型的资产信息,确定其主键信息;
将每一种类型的资产信息包括的描述信息作为neo4j图结构中的节点,并基于所述主键信息将属于所述待维护资产的资产信息关联起来,以完成针对所述待维护资产的资产信息的存储。响应于完成针对所述待维护资产的资产信息的存储,针对每一种类型的资产信息建立对应的倒排索引;所述索引包括所述资产信息的至少部分描述信息。
其中,资产属性信息可以包括,
(1)资产(Ledger)的基本属性。表1为资产的基本属性的具备的描述信息的示例。
字段 | 含义 | 举例 |
Ip | 资产的ip地址 | 192.168.12.222 |
ips | ip地址的分词 | 192 168 12 222192.192.168192.168.192.168.12192.168.12. |
ledgerId | 资产的编号 自动生成 | 19612 |
level | 资产的重要性 | 1 |
levelName | 资产的重要性(中文) | 资产 |
longIp | Ip地址的数字形式 | 3232238814 |
name | 资产的名称 | 惠普PC |
os | 操作系统 | Linux |
osVendor | 操作系统厂商 | Linux |
safeStatus | 安全状态 | 1 |
safeStatusName | 安全状态中文表示 | 高危资产 |
source | 资产来源 | 锐服信(192.168.12.12)扫描器 |
status | 在线状态 | 2 |
statusName | 在线状态中文 | 在线 |
upTime | 上线时间 | 2022年12月19日15时53分45秒 |
epLevel | 等保等级 | 1 |
epLevel | 等保等级中文 | 等保一级 |
表1
(2)硬件类型(Type)的基本属性。表2为硬件类型(Type)的基本属性的具备的描述信息的示例。
字段 | 含义 | 举例 |
cn | 中文名 | PC设备 |
name | 英文名 | Pc |
typeId | 硬件类型ID | 27 |
parent | 硬件类型父类型ID | 17 |
表2
(3)责任人(ManagerNeo)的基本属性.。表3为责任人的基本属性的具备的描述信息的示例。
字段 | 含义 | 举例 |
name | 名称 | 曹XX |
sid | 责任人ID | 11 |
number | 责任人联系方式 | 138xxxxxxxx |
责任人邮箱 | Xx@xxx.com |
表3
(4)其它基本信息。例如,资产组(Group),机房(MachineRoom),机柜(EquipmentCabinet),区域位置(Address),安全域(SafeZone),资产标签(Label),端口标签(PortLabel),应用系统(OperatingSystem)基本属性(上述表结构相同)。表4为机房的基本属性具备的描述信息的实例。
字段 | 含义 | 举例 |
name | 名称 | 北京机房 |
sid | 编号 | 1 |
表4
针对资产属性信息的存储,包括以下步骤:
根据接收到的数据组织资产数据;将资产存入mysql数据库中,利用mysql主键自增的属性生成ledgerId;将数据组织成neo4j中节点的形式,存入neo4j;根据资产的ledgerId和端口节点的sid匹配资产节点和端口节点的关系;根据资产的ledgerId和硬件类型的typeId 匹配资产节点和硬件类型节点的关系;根据资产的ledgerId和责任人的sid匹配资产节点和责任人节点的关系;根据资产的ledgerId和资产组,机房,机柜,区域位置,安全域,资产标签的sid匹配资产节点和责任人节点的关系;系统检测到本次资产数据录入完成后(可能是一次扫描任务,可能是 文件上传等形式)开始向neo4j下命令建立倒排索引。
通过以上步骤可以将资产的属性信息存储至neo4j数据库,并且可以建立倒排索引,便于后续进行资产检索。
端口信息可以包括:
(1)端口(LedgerPort)节点的基本属性。表5为端口(LedgerPort)节点的基本属性具备的描述信息的示例。
字段 | 含义 | 举例 | 备注 |
port | 端口 | 80 | |
portString | 端口的字符串形式 | 80 | 该字段以字符串形式存储数字类型的端口号,以此来解决neo4j中不能为数字类型的字段创建索引的问题 |
product | 组件 | PostgreSQL DB | |
protocol | 协议 | Tcp | |
serviceName | 服务名 | PostgreSQL | |
sid | 端口的编号 | 13734 | |
version | 组件的版本 | 9.6.0 or later |
表5
(2)软件(Software)节点的基本属性。表6为软件节点的基本属性具备的描述信息的示例。
字段 | 含义 | 举例 |
category | 分类 | Service |
company | 厂商 | Microsoft HTTPAPI |
level | 层级 | 5 |
product | 组件 | Microsoft HTTPAPI |
version | 版本 | 2.0 |
表6
针对端口属性信息的存储,包括以下步骤:
组织端口数据封装成mysql中的存储形式进行存储,利用mysql主键自增的功能生成sid;
获取到sid后组织成neo4j中的存储形式进行存储,根据端口节点的sid和资产节点的ledgerId 进行匹配,建立资产和端口的关系;
根据端口节点的product和软件节点的product进行匹配并建立端口和软件的关系。
通过以上步骤可以将端口信息存储至neo4j数据库,并且可以建立倒排索引,便于后续进行资产检索。
漏洞信息可以包括:
(1)漏洞(Vuln)节点的基本属性。表7为漏洞节点的基本属性具备的描述信息的示例。
字段 | 含义 | 举例 |
createBy | 创建人ID | 1 |
cve | Cve编号 | CVE-2017-15906 |
cvss | Cvss | 5.0 |
ip | Ip地址 | 192.168.12.222 |
ips | ip地址分词 | 192 168 12 222192.192.168192.168.192.168.12192.168.12. |
level | 漏洞等级数字形式 | 1 |
levelName | 漏洞等级汉字形式 | 中危 |
longIp | Ip地址数字形式 | 3232238771 |
name | 漏洞名称 | OpenSSH'sftp-server'安全绕过漏洞 |
port | 端口 | 22 |
cncve | cncve | CNCVE-201715906 |
cnnvd | cnnvd | CNNVD-201710-1230 |
cnvd | cnvd | CNVD-2017-36017 |
vuId | 漏洞ID | 4052 |
vulnGroup | 漏洞组 | 0 |
Remark | 漏洞命中点 | 开放高危端口 |
表7
(2)漏洞类型节点(VulnType)的基本属性。表8为漏洞类型节点的基本属性具备的描述信息的示例。
字段 | 含义 | 举例 |
name | 漏洞类型名称 | 其它类系统漏洞 |
表8
(3)处置状态节点(RiskStatus)的基本属性。表9为处置状态节点的基本属性具备的描述信息的示例。
字段 | 含义 | 举例 |
name | 处置状态 | 待处置 |
value | 处置状态数字表示 | 1 |
表9
针对漏洞属性信息的存储,包括以下步骤:
组织数据存入mysql中并利用其主键自增的功能获得vuId;
将数据组织成了neo4J的存储形式存入neo4j中;
根据漏洞节点的vuId和漏洞类型节点的name进行匹配并建立联系;
根据漏洞节点的vuId和处置状态节点的name进行匹配并建立联系;
根据漏洞节点的Ip和资产节点的IP进行弱口令的关系匹配并建立关系;
根据漏洞节点的port和端口节点的port进行匹配并建立关系;
当本次漏洞信息全部存储完毕后(一次扫描任务,或文件上传等)为漏洞信息建立倒排索引。
通过以上步骤可以将漏洞信息存储至neo4j数据库,并且可以建立倒排索引,便于后续进行资产检索。
弱口令信息可以包括:
(1)弱口令(weakPass)节点的基本属性。表10为弱口令节点的基本属性具备的描述信息的示例。
字段 | 含义 | 举例 |
createBy | 创建人ID | 1 |
ip | 弱口令IP | 192.168.12.222 |
level | 弱口令等级 | 1 |
levelName | 弱口令等级中文 | 低危 |
password | 弱口令密码 | 4e0b5d95f92e3f2dec9ebc650bf73b16 |
port | 弱口令端口 | 22 |
serviceName | 服务名 | Ssh |
username | 弱口令用户名 | Root |
weakId | 弱口令编号 | 2 |
Ips | ip地址的分词 | 192 168 12 222192.192.168192.168.192.168.12192.168.12. |
表10
(2)弱口令类型(weakPassType)节点的基本属性。表11为弱口令类型节点的基本属性具备的描述信息的示例。
字段 | 含义 | 举例 |
name | 类型名称 | Ssh |
表11
(3)处置状态节点(RiskStatus)的基本属性。表12为处置状态节点的基本属性具备的描述信息的示例。
字段 | 含义 | 举例 |
name | 处置状态 | 待处置 |
value | 处置状态数字表示 | 1 |
表12
针对弱口令属性信息的存储,包括以下步骤:
组织数据存入mysql并获得weakId;
组织成neo4j的存储形式存入neo4j中;
根据弱口令节点的weakId和弱口令类型节点name进行匹配并建立关系;
根据弱口令节点的weakId和处置状态节点name进行匹配并建立关系;
根据弱口令节点的Ip和资产节点的IP进行弱口令的关系匹配并建立关系;
根据弱口令节点的port和端口节点的port进行匹配并建立关系;
当本次弱口令全部存储完毕后(一次扫描任务,或文件上传等)为弱口令建立倒排索引。
通过以上步骤可以将弱口令信息存储至neo4j数据库,并且可以建立倒排索引,便于后续进行资产检索。
当资产信息存储任务完成后可以建立索引。其中建立索引的步骤可以为响应于完成针对所述待维护资产的资产信息的存储,针对每一种类型的资产信息建立对应的倒排索引;所述索引包括所述资产信息的至少部分描述信息。
可以针对每种类型的资产信息(包括漏洞,弱口令,基本属性与端口信息),通过语句将至少部分描述信息加入对应的索引,并采用cjk分词器为其建立倒排索引。
在所述目标检索类型为全文检索的情形下,所述检索信息为待检索的目标资产具备的目标资产信息和/或目标描述信息所包括的关键词;基于所述索引进行全文检索的方法包括:
基于所述关键词,构建针对每一种类型的资产信息的检索语句;
所述检索语句以基于所述检索语句,在数据库中进行资产检索,包括:
基于所述检索语句,检索包括所述关键词的第一目标节点,以及与所述第一目标节点为预设步幅的第二目标节点;所述第一目标节点与所述第二目标节点为所述目标资产信息和所述目标描述信息对应的节点;
基于所述第一目标节点与所述第二目标节点,统计每一种类型的节点数量,并作为查询结果进行返回。
所述预设步幅可以根据需求进行设定。由此可以将与目标资产关联的第一目标节点和第二目标节点全部检索到,完成资产检索并完成资产信息的统计。
为了便于针对IP和/或MAC地址的关键词匹配,需要将IP和/或MAC地址进行分词处理。针对所述IP和/或MAC地址的分词方法可以包括:
从左到有遍历所述IP和/或MAC地址的每一位字符,并将首个第一预设字符之前的若干字符组成第一分词,相邻两个第一预设字符之间若干字符组成第二分词和第三分词,末尾第一预设字符之后的若干字符组成第四分词;
将所述第一分词和所述首个第一预设字符组成第五分词;
将所述第五分词和第二分词组成第六分词;
将所述第六分词和中间第一预设字符组成第七分词;
将所述第七分词和所述第三分词组成第八分词;
将所述第八分词和所述末尾第一预设字符组成第九分词;
将所述第九分词和所述第四分词组成第十分词。
所述第一分词至所述第十分词则为针对IP和/或MAC的分词结果。
例如,针对“192.168.12.21”,会分为“192”,“168”,“12”,“21”,“192.”,“192.168”,“192.168.”,“192.168.12”,“192.168.12.”,“192.168.12.12”十个分词。用户直接检索ip段中的任意部分均可命中该资产。
在一些实施例中,会在第一分词至第四分词中进行去重处理,减少了索引的匹配次数也减低了用户的使用难度,例如“192.168.12.12”就会被分词为“192”,“168”,“12”,“192.”,“192.168”,“192.168.”,“192.168.12”,“192.168.12.”,“192.168.12.12”9个分词。用户直接检索ip端中的任意部分均可命中该资产。
二、高级检索。
高级检索场景下,所述检索信息为针对第一检索范围下的若干第一描述信息所设置的若干第一检索条件。所述若干第一检索条件之间具备逻辑关系。
高级检索场景下,前端可以为用户提供与若干检索范围分别对应的检索条件构建窗口。所述第一检索范围是用户在所述若干检索范围中选择的任一检索范围。例如,若干检索范围包括资产,漏洞,端口,弱口令。用户选择了资产检索范围,那么前端可以提供针对资产检索范围的检索条件构建窗口。用户可以在窗口中选择资产检索范围对应的若干描述信息,然后构建相应的第一检索条件。这些第一检索条件直接具备逻辑关系。所述逻辑关系是指and(与)、or(或)等。
高级检索场景下,用户清楚的知道需要检索的目标资产的信息,因此可以实现精确检索。
请参见图4,图4为本申请示出的高级检索类型生成检索语句的方法流程示意图。图4示意的步骤为对S206的补充说明。如图4所示,所述方法可以包括S402-S404。
S402,根据与所述高级检索对应的语句生成规则,生成与每一所述第一检索条件对应的第一初始检索语句。
第一检索条件可以包含若干字符,这些字符之间包含运算符。通过转义模块,可以将第一检索条件中的字符和运算符转换成检索语句可识别的字符和运算符,从而得到初始检索语句。转义模块中包含了字符的映射关系,即便第一检索条件是中文,通过转义模块,也可以映射出相应的字符。
S404,基于所述逻辑关系,组合所述第一初始检索语句,得到第一最终检索语句;所述第一最终检索语句用于检索所述第一检索范围下的目标资产信息,所述目标资产信息包含的所述第一描述信息满足所述若干第一检索条件。
所述逻辑关系可以指示若干第一检索条件之间的与或关系。基于该逻辑关系可以对所述第一初始检索语句进行组合,使得得到的第一最终检索语句可以体现所述逻辑关系。
通过S402-S404,即可构建出针对第一检索范围进行检索的语句,得到第一检索范围下的目标资产信息。
三、自定义检索。
不难发现,高级检索中的检索条件只能针对一个检索范围构建,限制了检索场景。为了解决这一问题,提出了自定义检索,可以解析用户输入的自定义语句。自定义语句可以针对不同检索范围构建检索条件,从而扩大了检索场景,便于进行资产检索。
自定义检索场景下,所述检索信息为自定义语句。所述自定义语句符合一定的语法。
请参见图5,图5为本申请示出的语法结构示意图。
如图5所示,所述语法可以包括检索范围、分隔符、描述字段、运算符、查询目标、逻辑符六个单元。
其中,检索范围:这里指本系统中可以检索的不同类型的对象,分别为:资产、端口、漏洞、弱口令。
分隔符:这里用来区分范围和字段。
描述字段:为待检索的目标资产的属性信息,如资产的ip,端口,名称,责任人等等。
运算符:可用运算符包括等于:“=”,不等于:“!=,<>”,模糊查询:“like”,大于:“>”,大于等于:“>=”,小于:“<”,小于等于:“<=”,开头为:“STARTS WITH”,结束为:“ENDSWITH”,包含:“CONTAINS”,括号“()”。
查询目标:用户想要检索的目标资产具备的信息。这些信息可以包括资产属性信息、端口信息、漏洞信息、弱口令等。
其中,资产属性可以包括重要性,安全性,ip地址,资产名称,在线状态,操作系统,系统厂商,系统版本,等保等级,上线时间,离线时间,过期时间,来源,端口,责任人,资产组,硬件类型,区域位置,机房,机柜,安全域,应用系统,资产标签,硬件类型,有效期等。
端口信息可以包括重要性,安全性,ip地址,资产名称,在线状态,操作系统,系统厂商,系统版本,等保等级,上线时间,离线时间,过期时间,来源,端口,责任人,资产组,硬件类型,区域位置,机房,机柜,安全域,应用系统,资产标签,硬件类型,有效期,协议,服务,组件,版本等。
漏洞信息可以包括漏洞ip,漏洞端口,协议,漏洞名称,漏洞来源,漏洞等级,cve,cnvd,cncve,cvss,cwe,cnnvd,漏洞状态等。
弱口令可以包括ip地址,端口,服务,用户名,密码,弱口令等级,弱口令状态。
逻辑符:and,or。指不同检索条件之间的与或关系。
用户可以输入符合该语法的自定义语句。
所述自定义语句包含针对至少一个检索范围对应的若干第二描述信息所设置的若干第二检索条件。即用户编辑的语句可以涵盖多个检索范围的检索条件。例如,若干检索范围包括资产,漏洞,端口,弱口令,自定义语句中可以为资产.IP=192.168.1.1 and 漏洞.端口=80,该语句中包括资产检索范围和漏洞检索范围分别对应的两个第二检索条件,第一个第二检索条件为限制IP为192.168.1.1,第二个检索条件为限制端口为80,两个第二检索条件之间为and关系。
自定义检索场景下,用户清楚的知道需要检索的目标资产的信息,因此可以实现精确检索。该场景下还需要收集预设的若干检索范围中每一检索范围检索到的目标资产。因此可以构建与每一检索范围对应的检索语句,从而通过检索数据库得到每一检索范围下的目标资产信息。
请参见图6,图6为本申请示出的一种基于Antlr4的自定义检索类型生成检索语句的方法流程示意图。图6示意的步骤为对S106和/或S206的补充说明。如图6所示,所述方法可以包括S602-S606。
所述Antlr4,Another Tool for Language Recognition(另一种语言识别工具),是基于LL(*)算法实现的语法解析器生成器(parser generator),用Java语言编写,使用自上而下(top-down)的递归下降LL剖析器方法。
本申请中,基于Antlr4框架,可以设置分节模块(VisitBarRelation模块),第一转义模块(EqRelation模块),逻辑关系处理模块(AndRelation模块),第二转义模块(FieldRelation)。
VisitBarRelation()方法,在该方法中获得括号中的条件,而后对获得的条件进行递归操作。
EqRelation()方法,在该方法中对所有的运算符进行转义处理将用户填写的运算符转义为cypher语言支持的运算符,这时获取到值是“范围.字段+运算符+查询值”分别对运算符左侧进行递归处理。
AndRelation()方法 在该方法中处理谓词关系 将条件处理成“(条件1 and 条件2)”的形式,以保证cypher能够正确的解析。
FieldRelation()方法 在该方法中负责解析字段,首先我们判断获取到的数据是否为“范围.字段”的格式,如果格式正确借助dic模块获取该范围内字段的信息,转义成cypher语法。
通过四种模块的配合可以完成自定义语句的精准解析。
S602,根据与所述目标检索类型对应的语句生成规则,解析所述自定义语句,得到具有逻辑关系的若干所述第二检索条件。
自定义语句可能包括很多第二检索条件,这些检索条件之间的逻辑关系影响检索条件的执行顺序,从而影响检索结果,因此需要精准解析出第二检索条件,以及其中的逻辑关系,才不会导致检索出错。
请参见图7,图7为本申请示出的解析自定义语句的方法流程示意图。图7为对S602的详细说明。如图7所示,所述方法可以包括S702-S706。除特别说明外,本申请不限定这些步骤的执行顺序。
S702,在所述自定义语句包含第二预设字符的情形下,按照第二预设字符,对所述自定义语句进行拆分,得到具有第一逻辑关系的若干第一语句片段。
所述第二预设字符内的检索条件的运算优先级最高。例如所述第二预设字符为“括号”。本步骤可以通过分节模块遍历自定义语句,识别出第二预设字符内外的语句片段,即所述第一语句片段。这些第一语句片段之间具有所述第一逻辑关系。
S704,针对每一第一语句片段,在所述第一语句片段包含逻辑符的情形下,基于所述逻辑符对所述第一语句片段进行拆分,得到若干第二语句片段,针对每一第二语句片段执行与第一语句片段相同的操作,直至拆分后得到的语句片段不包括所述逻辑符。
本步骤可以通过分节模块,针对每一第一语句片段,进行递归拆分,直至拆分后得到的语句片段不包括所述逻辑符。S702-S704中可以通过逻辑关系处理模块记录各语句片段之间的逻辑关系,便于后续组装检索语句。
S706,拆分得到的每一语句片段,确定为若干所述第二检索条件。
这些第二检索条件之间具备逻辑关系。
通过S702-S706利用精确解析出各第二检索条件以及其中的逻辑关系,从而确保检索结果的正确性。
S604,生成与每一所述第二检索条件对应的第二初始检索语句。
本步骤中,可以利用第一转义模块对每一不包含逻辑符的语句片段中的运算符(例如,等号,大于小于号等)进行转义,得到数据库可识别的运算符,利用第二转义模块,对检索条件中的字符进行转换,得到数据库可识别的字符。
S606,针对所述若干检索范围中每一检索范围,基于所述逻辑关系,组合所述第二初始检索语句,得到与每一检索范围对应的第二最终检索语句。
本步骤中,可以针对每一检索范围,基于逻辑关系处理模块记录的逻辑关系,组合所述第二初始检索语句,得到与每一检索范围对应的第二最终检索语句。
通过S602-S606可以精确解析自定义语句得到相应的检索语句,得到每一检索范围下的目标资产信息,从而提供更全面的检索结果,在一次检索过程中返回多种检索维度的检索结果,用户不必再逐项检索,提升检索准确性。
本申请提出的构建检索语句的语法还具有以下优点:在相关技术中需要使用 ‘英文表名+“.”+英文字段名+运算符+目标值’ 或者 ‘英文字段名+运算符+目标值的形式’。这样的检索条件需要专业人员才能使用,对应普通的用户难度较大。在资产信息往往涉及到几十张甚至上百张表,而且使用英文命名,用户学习成本较高,生成的查询条件难以阅读。英文字段名+运算符+目标值的形式虽然不用指定表名但是字段较多的情况下容易产生歧义,英文字段用户也难以记忆每个字段的含义。而本申请提出的语法将表名融入到对应检索范围之内,用户只需要输入“检索范围.描述字段”(例如,“资产.ip”)即可进行检索,不必了解在底层到底是那张表,同时因为指定了检索范围所以也避免了歧义的产生,又因为该语法采用的是汉字范围以及字段,极大的降低了用户的学习成本,只需稍微了解语法支持的字段以及运算符即可编写检索信息,极大的方便了用户的理解,降低检索难度。
在一些实施例中可以对自定义语句进行校验,以验证用户输入的检索信息的合法性,并在检索信息合法的情形下进行解析处理,以保证可以得到正确的检索结果。
校验维度可以包括语法校验和/或内容校验。
所述语法校验是指校验自定义语句中是否包括预设违法字符,并在不包括任意所述预设违法字符的情形下确定语法校验通过。
所述预设违法字符可以根据需求进行维护。例如自定义语句中包括remove、delete、set、update等预设违法字符,说明是SQL注入。SQL注入是一种带有攻击性的行为,通过语法校验可以拦截该行为,避免对数据造成破坏。
所述内容校验是指判断自定义语句内容是否缺失,并在内容不缺失的情形下确定内容校验通过。
例如,所述内容校验可以判断括号是否成对出现,逻辑符左右是否都包括检索条件,运算符左右是否都包括字符等等,在不缺失内容的情形下确定校验通过。
完成检索语句的构建之后可以输入数据库进行检索。
在一些实施例中,可以启动多线程并行处理检索语句,并通过高速存储介质存储检索结果,提高了检索速度,以及获取检索结果的速度。
请参见图8,图8为本申请示出的一种数据库检索流程示意图。图8示意的步骤为对S108和/或S208的详细说明。如图8所示,所述方法可以包括S802-S806。
S802,在存在多条所述检索语句的情形下,并行处理多条所述检索语句以在所述数据库中完成检索。
在全文检索和自定义检索场景中,会生成针对每一检索范围的检索语句,即存在多条检索语句。可以启动多线程并行执行检索语句,以并行完成检索。
在每次检索的时候,可以先通过检索语句确定各检索范围内存在的满足条件的资产数量。并在不为0的检索范围内将目标资产的资产信息查询出来。
S804,将针对每一检索语句检索到的目标资产信息存储在预设高速存储介质。
所述预设高速存储介质可以包括内存,缓存等。例如所述预设高速存储介质可以是redis。所述预设高速存储介质中存储了不同检索范围下检索到的目标资产信息。
S806,从所述预设高速存储介质获取所述目标资产信息进行展示。
通过S802-S806.可以启动多线程并行处理检索语句,并通过高速存储介质存储检索结果,提高了检索速度,以及获取和展示检索结果的速度。
在一些实施例中,若干检索范围按照预设顺序排列。例如,若干检索范围包括资产,漏洞,端口,弱口令,所述预设顺序为资产,漏洞,端口,弱口令。在S806中,可以基于所述预设顺序,从所述预设高速存储介质获取顺序在先的检索范围下所查询到的目标资产信息并进行展示。
例如在资产、漏洞、端口、弱口令检索范围均检索到了目标资产,则优先获取资产检索范围检索出的目标资产进行展示。
响应于针对其它检索范围的选择操作,从所述预设高速存储介质获取所述其它检索范围查询到的目标资产信息并进行展示。
例如,用户选择了漏洞,则可以从预设高速存储介质中获取漏洞范围检索出的目标资产进行展示。
在一些实施例中,所述数据库为图结构数据库。例如所述图结构数据库为Neo4j。
Neo4j是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下,而不是严格、静态的表中。但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注。
所述图结构数据库以图结构存储所述资产信息以及关联的描述信息。
这些实施例中,资产检索还具有关联检索功能。
请参见图9,图9为本申请示出的关联检索方法流程示意图。图9示意的方法为响应于只在一个检索范围下检索到满足检索信息的目标资产信息的情形下的补充。如图9所示,所述方法可以包括S902-S906。
S902,基于所述图结构,关联查询所述目标资产信息在除所述一个检索范围以外的其它检索范围是否存在描述信息。
本步骤中,可以通过图结构,遍历查询与目标资产信息存在连接边的其它节点存储的描述信息,并判断其它节点存储的描述信息是否与其它检索范围有关。
例如,在资产范围检索出资产A。然后可以遍历与资产A连接的其它节点的描述信息是否与漏洞、弱口令、端口中的至少一项有关。
S904,响应于查询到的其它检索范围的描述信息,确定在所述其它检索范围查询到所述目标资产信息。
本步骤中,如果其它节点存储的描述信息是否与其它检索范围有关,确定在所述其它检索范围查询到所述目标资产信息。
例如,如果与资产A连接的其它节点的描述信息与漏洞、弱口令、端口都有关,可以确定在漏洞、弱口令、端口维度下均检索到资产A。
S906,将在其它检索范围查询到所述目标资产信息的检索结果,存储到所述预设高速存储介质。
例如,可以将在漏洞、弱口令、端口维度下均检索到资产A的检索结构存储在所述预设高速存储介质。
通过S902-S906可以完成关联检索,通过图结构提供更全面的检索结果,在一次检索过程中返回多种检索维度的检索结果,用户不必再逐项检索,提升检索准确性。
本申请还提出一种资产检索系统。所述系统第一,可以低检索难度;第二,可以降低资产检索时上手难度,支持全文检索,不必了解资产具体的属性即可检索;第三,编写检索条件时可以以中文的形式编写填写表名,字段名,不必了解底层的表名,字段名,降低学习成本;第四,检索结果增加不同维度的聚合,方便用户对资产进行统计;第五,提供一种支持中文的检索语法,供用户自己组织检索条件;第六,提供更全面的检索结果,再一次检索时同事返回资产,端口,弱口令,漏洞等信息用户不必再逐项检索。
请参见图10,图10为本申请示出的一种资产检索系统的结构示意图。如图10所示,所述系统包括资产源(Source)、资产源处理(source handle)、数据库(data)、网页端(Web)、网页处理(Web handle)五个单元。
其中,资产源包括三种资产源子单元。第一种为资产扫描子单元(Scanner)。该单元可以提供资产探测功能,向系统输入探测结果。第二种为上传子单元(Upload)。通过该单元,用户可以将资产上传到系统中。第三种为系统日志子单元(Syslog),可以通过第三方服务从 syslog 或者消息队列中获取资产。
前面三种资产源子单元获取的资产信息会统一的流入到资产源处理单元进行处理,经过该单元加工后的资产信息将流入到数据库进行存储。所述数据库为Neo4j。该数据库中包括若干节点,节点之间通过边存储节点之间的关联关系。不同节点可以存储不同信息。例如有些节点可以存储资产信息,有些节点可以存储漏洞信息,有些节点可以存储弱口令信息。
页面单元主要于用户进行检索的交互,帮助用户构件检索条件,产生的条件经过页面处理单元处理后,生成对应的cypher语法。然后将cypher交给数据库进行数据的查询操作,数据库查询将结果返回给页面处理单元进行封装,返回给前端页面。
以下介绍利用所述系统完成资产检索的过程。
所述页面单元向用户提供输入检索信息的检索窗口。所述检索窗口包括高级检索和检索两个选项。
用户可以在检索窗口输出检索信息,并选择高级检索或检索。其中,用户选择高级检索会在检索请求中携带预设标识。
页面处理单元收到检索请求后,可以通过搜查(search)子单元用来判断检索请求的检索类型。请参见图11,图11为本申请示出的判断检索类型的方法流程示意图。如图11所示,所述方法可以包括S1101-S1108。
S1101, 获取检索请求。所述检索请求包括用户输入的检索信息。
S1102,检验合法性。合法性校验可以包括条件是否为恶意攻击语句,如果不是则通过校验,执行S1104。如果是则执行S1103。
S1103,异常内容直接返回到前端,提示用户检索语句存在问题。
S1104,判断是否为高级检索。如果是,执行S1105。如果不是,执行S1106。
S1104中可以通过判断检索请求是否携带预设标识来判断检索请求是否为高级检索。具体方法可以参照前述S204的相关说明。
S1105,进入高级检索子单元(advance)处理。
S1106,判断是否为全文检索?如果是,执行S1107,如果不是,执行S1108。
S1106中可以通过判断检索信息是否包括运算符来判断是否为全文检索。具体方法可以参照前述S204的相关说明。
S1107,通过全文检索子单元(full)进行处理。
S1108,进入自定义检索子单元(analyzer)进行处理。
通过S1101-S1108可以支持多种检索方式,并可以根据用户输入的检索信息自动进行检索方式的适配,简化用户对检索工具的操作,降低对用户的要求,使得一般的用户也可以完成资产检索,大大降低了检索难度。
以下分别介绍全文检索子单元,高级检索子单元,自定义检索子单元的工作逻辑。
一、全文检索子单元。
请参见图12,图12本申请示出的为全文检索流程示意图。如图12所示,所述方法可以包括S1201-S1207。
S1201,获取检索信息。
S1202,判断检索信息是否合规。若不合规,结束检索。若合规,执行S1203。
S1203,生成与所述若干检索范围中每一检索范围对应的检索语句。
S1204,并行查询目标资产。
S1205,判断是否查询到目标资产;若不是,结束检索。若是,执行S1206。
S1206,按照预设维度统计目标资产。所述预设维度可以根据需求设定。例如所述预设维度可以包括责任人,设备类型等等。
S1207,封装统计结果。统计结果可以存储在redis中。本步骤中,可以通过结果输出(result)模块处理三种检索方式返回的检索结果,将三种检索返回的不同的内容封装为统一的形式,使的前端不必根据不同的检索,做不同的处理。
通过S1201-S1207可以完成全文检索。
以预设资产、端口、漏洞、弱口令四种检索范围为例。比如用户输入了“80”,在系统中“80”可能是一个端口号,也可能是某IP的一部分,也有可能是某台设备的弱口令。全文检索子单元会将“80”放入到组织好的检索语句中,分别在资产,端口,漏洞,弱口令四个范围内查询目标资产,如果四个范围内的结果都未检索到目标资产,那么将会返回给前端告知用户系统内不存在相关资产。如果检索到目标资产,则会在第一个检索多目标资产的检索范围内构造数据,同时利用统计子单元(count)在该范围内进行硬件类型,责任人等维度的统计,同时存储四种范围各自的数量,用户可以自由切换显示的内容。请参见图13,图13为本申请示出的页面单元向用户展示检索结果的示意图。如图13,可以优先展示资产范围内的目标资产。如果用点击漏洞范围,则可以再向用户展示漏洞范围内的目标资产。
二、高级检索子单元。
请参见图14,图14为本申请示出的高级检索流程示意图。如图14所示,所述方法可以包括S1401-S1407。
S1401,获取检索信息。
S1402,对检索信息进行转义,得到转义结果。
S1403,根据转义后的结果生成cypher检索语句。
S1404,将检索条件交给数据库查询。
S1405,封装统计结果。统计结果可以存储在redis中。本步骤中,可以通过结果封装子单元(result)处理三种检索方式返回的检索结果,将三种检索返回的不同的内容封装为统一的形式,使的前端不必根据不同的检索,做不同的处理。
S1406,记录检索信息。方便用户下次查询。
通过S1401-S1406可以完成高级检索。
以预设资产、端口、漏洞、弱口令四种检索范围为例。请参见图15,图15为本申请示意的高级检索窗口示意图。如图15所示,用户选择了资产范围内的登报等级和机柜描述字段构建检索条件。用户构建检索条件之后,高级检索子单元可以将这些检索条件转义为对应的cypher检索语句,以检索出资产检索范围内满足条件的目标资产。由于高级检索只需要在用户选择的检索范围内进行检索,检索速度比较快。
三、自定义检索子单元。
用户可以基于图5示意的语句构建自定义语句完成检索信息的输入。
请参见图16,图16为本申请示出的一种自定义检索流程示意图。如图16所示,所述方法可以包括S1601-S1610。
S1601,获取自定义语句。
S1602,判断合法性。判断合法性的方法可以参照前面实施例,在此不做详述。
S1603,利用语法解析子单元(anltr)对自定义语句进行解析,得到检索条件。所述检索条件包括检索范围、描述字段、描述目标,运算符、逻辑符等信息。
语法解析子单元基于Antlr4框架,可以设置分节模块(VisitBarRelation模块),第一转义模块(EqRelation模块),逻辑关系处理模块(AndRelation模块),第二转义模块(FieldRelation)。通过四种模块的配合可以完成自定义语句的精准解析。
在解析自定义语句过程中,还可以利用字典子单元(dic)来将检索范围和描述字段映射为Neo4j中节点。所述字典子单元包括检索范围和描述字段中文与Neo4j节点英文名称的映射关系。通过该字段子单元即可完成映射,将用户输入的字符转换为数据库可识别的字符。
S1604,构造每一检索范围对应的检索语句。
关于S1603和S1604的说明可以参照S602-S606和S702-S706的相关说明。
S1605,并行查询四种检索范围内符合条件的目标资产数量。
S1606,获取所述目标资产数量不为0的目标检索范围。
S1607,在所述目标检索范围内查询所述目标资产的资产信息。
S1608通过预设维度进行统计,得到统计结果,缓存到redis。
S1609,针对发起资产检索的用户进行权限判断,将检索到的目标资产的资产信息中,允许对用户可见的描述字段保留,没有权限可见的描述字段置空或隐藏。
S1610,将最终结果返回给前端。
通过S1601-S1610可以完成自定义检索。
前述系统中,第一,可以低检索难度;第二,可以降低资产检索时上手难度,支持全文检索,不必了解资产具体的属性即可检索;第三,编写检索条件时可以以中文的形式编写填写表名,字段名,不必了解底层的表名,字段名,降低学习成本;第四,检索结果增加不同维度的聚合,方便用户对资产进行统计;第五,提供一种支持中文的检索语法,供用户自己组织检索条件;第六,提供更全面的检索结果,再一次检索时同事返回资产,端口,弱口令,漏洞等信息用户不必再逐项检索。
本领域技术人员应明白,本申请一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本申请一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(可以包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请中的“和/或”表示至少具有两者中的其中一个。本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
虽然本申请包含许多具体实施细节,但是这些不应被解释为限制任何公开的范围或所要求保护的范围,而是主要用于描述特定公开的具体实施例的特征。本申请内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,所述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
以上仅为本申请一个或多个实施例的较佳实施例而已,并不用以限制本申请一个或多个实施例,凡在本申请一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请一个或多个实施例保护的范围之内。
Claims (13)
1.一种资产检索方法,其特征在于,所述方法包括:
获取检索请求;所述检索请求包括用于检索资产的检索信息;所述检索信息为自定义语句;所述自定义语句包含设置的若干检索条件;
基于所述检索请求,判断预设的检索类型中与所述检索请求对应的目标检索类型;
在所述目标检索类型为自定义检索的情形下,对所述自定义语句进行转换,得到检索语句;所述检索语句用于检索满足所述若干检索条件的资产;
基于所述检索语句,在数据库中进行资产检索。
2.根据权利要求1所述的资产检索方法,其特征在于,所述数据库存储了若干资产信息以及所述资产信息关联的描述信息;所述描述信息对应于若干检索范围;
所述自定义语句包含针对至少一个检索范围对应的若干第二描述信息所设置的若干第二检索条件;
所述对所述自定义语句进行转换,得到检索语句,包括:
根据与所述目标检索类型对应的语句生成规则,解析所述自定义语句,得到具有逻辑关系的若干所述第二检索条件;
生成与每一所述第二检索条件对应的第二初始检索语句;
针对所述若干检索范围中每一检索范围,基于所述逻辑关系,组合所述第二初始检索语句,得到与每一检索范围对应的第二最终检索语句。
3.根据权利要求2所述的资产检索方法,其特征在于,所述解析所述自定义语句,得到具有逻辑关系的若干所述第二检索条件,包括:
在所述自定义语句包含第二预设字符的情形下,按照第二预设字符,对所述自定义语句进行拆分,得到具有第一逻辑关系的若干第一语句片段;
针对每一第一语句片段,在所述第一语句片段包含逻辑符的情形下,基于所述逻辑符对所述第一语句片段进行拆分,得到若干第二语句片段,针对每一第二语句片段执行与第一语句片段相同的操作,直至拆分后得到的语句片段不包括所述逻辑符;
将拆分得到的每一语句片段,确定为若干所述第二检索条件。
4.根据权利要求1所述的资产检索方法,其特征在于,所述预设的检索类型包括全文检索、自定义检索、高级检索;
所述基于所述检索请求,判断预设的检索类型中与所述检索信息对应的目标检索类型,包括:
在所述检索请求包括的标识位为预设标识的情形下,将所述目标检索类型确定为高级检索;
在所述检索请求包括的标识位不是所述预设标识且所述检索信息包括运算符的情形下,将所述目标检索类型确定为自定义检索;
在所述检索请求包括的标识位不是所述预设标识且所述检索信息未包括运算符的情形下,将所述目标检索类型确定为全文检索。
5.根据权利要求1所述的资产检索方法,其特征在于,所述数据库存储了若干资产信息以及所述资产信息关联的描述信息;所述描述信息对应于若干检索范围;
所述检索信息为目标资产信息关联的描述信息所包括的关键词;
所述方法还包括:
在所述目标检索类型为全文检索的情形下,根据与所述全文检索对应的语句生成规则,生成与每一检索范围对应的检索语句;所述检索语句用于检索对应检索范围下的目标资产信息;所述目标资产信息关联的描述信息包含所述关键词。
6.根据权利要求5所述的资产检索方法,其特征在于,所述描述信息包含IP和/或MAC地址;针对所述IP和/或MAC地址的分词方法包括:
从左到有遍历所述IP和/或MAC地址的每一位字符,并将首个第一预设字符之前的若干字符组成第一分词,相邻两个第一预设字符之间若干字符组成第二分词和第三分词,末尾第一预设字符之后的若干字符组成第四分词;
将所述第一分词和所述首个第一预设字符组成第五分词;
将所述第五分词和第二分词组成第六分词;
将所述第六分词和中间第一预设字符组成第七分词;
将所述第七分词和所述第三分词组成第八分词;
将所述第八分词和所述末尾第一预设字符组成第九分词;
将所述第九分词和所述第四分词组成第十分词。
7.根据权利要求1所述的资产检索方法,其特征在于,所述数据库存储了若干资产信息以及所述资产信息关联的描述信息;所述描述信息对应于若干检索范围;
所述检索信息为针对第一检索范围下的若干第一描述信息所设置的若干第一检索条件;所述若干第一检索条件之间具备逻辑关系;
所述方法还包括:
在所述目标检索类型为高级检索的情形下,
根据与所述高级检索对应的语句生成规则,生成与每一所述第一检索条件对应的第一初始检索语句;
基于所述逻辑关系,组合所述第一初始检索语句,得到第一最终检索语句;所述第一最终检索语句用于检索所述第一检索范围下的目标资产信息,所述目标资产信息包含的所述第一描述信息满足所述若干第一检索条件。
8.根据权利要求1至7任一所述的资产检索方法,其特征在于,所述基于所述检索语句,在数据库中进行资产检索,包括:
在存在多条所述检索语句的情形下,并行处理多条所述检索语句以在所述数据库中完成检索;
将针对每一检索语句检索到的目标资产信息存储在预设高速存储介质;所述预设高速存储介质中存储了不同检索范围下检索到的目标资产信息;
从所述预设高速存储介质获取所述目标资产信息进行展示。
9.根据权利要求8所述的资产检索方法,其特征在于,所述数据库为图结构数据库;
所述图结构数据库以图结构存储所述资产信息以及关联的描述信息;响应于只在一个检索范围下检索到满足检索信息的目标资产信息,所述方法还包括:
基于所述图结构,关联查询所述目标资产信息在除所述一个检索范围以外的其它检索范围是否存在描述信息;
响应于查询到的其它检索范围的描述信息,确定在所述其它检索范围查询到所述目标资产信息;
将在其它检索范围查询到所述目标资产信息的检索结果,存储到所述预设高速存储介质。
10.根据权利要求1至3任一所述的资产检索方法,其特征在于,对所述自定义语句进行转换之前,所述方法还包括:
对所述自定义语句进行校验;所述校验的校验维度包括语法校验和/或内容校验;
所述语法校验是指校验自定义语句中是否包括预设违法字符,并在不包括任意所述预设违法字符的情形下确定语法校验通过;
所述内容校验是指判断自定义语句内容是否缺失,并在内容不缺失的情形下确定内容校验通过。
11.根据权利要求1所述的资产检索方法,其特征在于,所述资产的资产信息存储方法包括:
获取待维护资产的资产信息;所述资产信息包括以下至少一种类型的信息,资产属性信息,漏洞信息,端口信息,弱口令信息;
针对每一种类型的资产信息,确定其主键信息;
将每一种类型的资产信息包括的描述信息作为neo4j图结构中的节点,并基于所述主键信息将属于所述待维护资产的资产信息关联起来,以完成针对所述待维护资产的资产信息的存储。
12.根据权利要求11所述的资产检索方法,其特征在于,所述方法还包括:
响应于完成针对所述待维护资产的资产信息的存储,针对每一种类型的资产信息建立对应的索引;所述索引包括所述资产信息的至少部分描述信息。
13.根据权利要求12所述的资产检索方法,其特征在于,所述检索信息为待检索的目标资产具备的目标资产信息和/或目标描述信息所包括的关键词;在所述目标检索类型为全文检索的情形下,基于所述索引进行全文检索的方法包括:
基于所述关键词,构建针对每一种类型的资产信息的检索语句;
所述检索语句以基于所述检索语句,在数据库中进行资产检索,包括:
基于所述检索语句,检索包括所述关键词的第一目标节点,以及与所述第一目标节点为预设步幅的第二目标节点;所述第一目标节点与所述第二目标节点为所述目标资产信息和所述目标描述信息对应的节点;
基于所述第一目标节点与所述第二目标节点,统计每一种类型的节点数量,并作为查询结果进行返回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310198880.7A CN115952191A (zh) | 2023-03-03 | 2023-03-03 | 一种资产检索方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310198880.7A CN115952191A (zh) | 2023-03-03 | 2023-03-03 | 一种资产检索方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115952191A true CN115952191A (zh) | 2023-04-11 |
Family
ID=87286322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310198880.7A Pending CN115952191A (zh) | 2023-03-03 | 2023-03-03 | 一种资产检索方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115952191A (zh) |
-
2023
- 2023-03-03 CN CN202310198880.7A patent/CN115952191A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857917B (zh) | 面向威胁情报的安全知识图谱构建方法及系统 | |
US10169471B2 (en) | Generating and executing query language statements from natural language | |
US8949166B2 (en) | Creating and processing a data rule for data quality | |
US7328211B2 (en) | System and methods for improved linguistic pattern matching | |
US11361008B2 (en) | Complex query handling | |
US20210150060A1 (en) | Automated data anonymization | |
US11366840B2 (en) | Log-aided automatic query expansion approach based on topic modeling | |
EP2282449A2 (en) | Message descriptions | |
US20180293302A1 (en) | Natural question generation from query data using natural language processing system | |
WO2019169858A1 (zh) | 一种基于搜索引擎技术的数据分析方法及系统 | |
US10657181B2 (en) | Query suggestions using ontology partitions | |
CN109933803B (zh) | 一种成语信息展示方法、展示装置、电子设备及存储介质 | |
CN111263943B (zh) | 文档数字化中的语义规范化 | |
US20210294969A1 (en) | Generation and population of new application document utilizing historical application documents | |
US10324949B2 (en) | Method and system for consolidating data retrieved from different sources | |
US8041556B2 (en) | Chinese to english translation tool | |
CN114676231A (zh) | 一种目标信息检测方法、设备和介质 | |
US8793271B2 (en) | Searching documents using a dynamically defined ignore string | |
CN115952191A (zh) | 一种资产检索方法及系统 | |
CN115329753A (zh) | 一种基于自然语言处理的智能数据分析方法和系统 | |
CN113868375A (zh) | 基于结构化查询语言的数据查询方法、装置、设备及存储介质 | |
KR100659370B1 (ko) | 시소러스 매칭에 의한 문서 db 형성 방법 및 정보검색방법 | |
EP3617899A1 (en) | Method and system for retrieving data from different sources that relates to a single entity | |
CN112988781A (zh) | 数据查询方法、装置、电子设备及计算机可读存储介质 | |
CN107220249A (zh) | 基于分类的全文搜索 |
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 |