CN116028680B - 基于图数据库的资产图谱的展示方法、装置及电子设备 - Google Patents
基于图数据库的资产图谱的展示方法、装置及电子设备 Download PDFInfo
- Publication number
- CN116028680B CN116028680B CN202310318556.4A CN202310318556A CN116028680B CN 116028680 B CN116028680 B CN 116028680B CN 202310318556 A CN202310318556 A CN 202310318556A CN 116028680 B CN116028680 B CN 116028680B
- Authority
- CN
- China
- Prior art keywords
- node
- map
- nodes
- graph
- tree
- 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.)
- Active
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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及资产管理技术领域,具体涉及一种基于图数据库的资产图谱的展示方法、装置及电子设备。所述图谱的图谱节点包括与待展示资产相关的预设类型的展示数据;所述图谱节点中的统计节点包括以预设统计维度统计的数据;该方法可以包括:获取针对所述图谱中目标图谱节点的展示数据的查询请求;在所述查询请求为首次请求的情形下,所述目标图谱节点为所述图谱的图谱根节点和/或所述图谱根节点的至少一级子节点;所述图谱根节点的至少一级子节点中包括至少一个所述统计节点;响应于所述查询请求,在所述图数据库查询所述目标图谱节点的展示数据;展示查询到的所述展示数据。由此可以实现层级展开,并且输出用户感兴趣维度的信息。
Description
技术领域
本申请涉及资产管理技术领域,具体涉及一种基于图数据库的资产图谱的展示方法、装置及电子设备。
背景技术
随着经济和技术的发展,企业需要管理的资产数量急速增多,而大量的资产数量造成了企业对资产管理和展示上的困难。
资产具备很多维度的资产信息,单一维度的展示已经无法满足企业对资产的概览,企业希望能够清晰直观地的查看资产、风险的等数据。可见,如何对资产信息进行展示是需要解决的问题。
发明内容
有鉴于此,本申请公开一种基于图数据库的资产图谱的展示方法。所述图谱包括具有父子关系的图谱节点;所述图谱节点包括与待展示资产相关的预设类型的展示数据;所述图谱节点包括至少一个统计节点;所述统计节点包括以预设统计维度统计的数据;所述方法可以包括:获取针对所述图谱中目标图谱节点的展示数据的查询请求;在所述查询请求为首次请求的情形下,所述目标图谱节点为所述图谱的图谱根节点和/或所述图谱根节点的至少一级子节点;所述图谱根节点的至少一级子节点中包括至少一个所述统计节点;响应于所述查询请求,在所述图数据库查询所述目标图谱节点的展示数据;展示查询到的所述展示数据。
在一些实施例中,在所述查询请求为非首次请求的情形下,所述目标图谱节点为已展示的图谱节点中被操作的图谱节点的至少一级子节点。
在一些实施例中,所述图谱节点,与预先维护的节点树中的树节点相对应;所述图谱节点之间的父子关系与所述树节点之间的父子关系相对应;所述查询请求包括用于查询目标节点树中与所述目标图谱节点对应的目标树节点的查询信息;所述目标节点树的树根节点包括的节点信息与所述图谱的图谱根节点包括的节点信息相匹配;所述树节点包括用于查询对应的图谱节点中的展示数据的配置信息;所述响应于所述查询请求,在所述图数据库查询所述目标图谱节点的展示数据,包括:响应于所述查询请求,根据所述查询信息,查找所述目标树节点;根据所述目标树节点和所述目标树节点的上游节点包括的所述配置信息生成查询语句;基于所述查询语句在所述图数据库中查询所述目标图谱节点的展示数据。
在一些实施例中,所述图数据库包括用于构建所述图谱的预设节点;所述预设节点包括以下至少一类节点;资产节点;漏洞节点;高危端口节点;弱口令节点;其中,所述资产节点、所述漏洞节点、所述高危端口节点和所述弱口令节点均包括至少一个节点。
在一些实施例中,所述节点树的生成方法包括:响应于用户在窗口选择任意节点并对该节点进行配置,将用户选择的节点作为树根节点,并基于所述图数据库,查询可供选择的节点并展示在所述窗口;所述可供选择的节点是指与所述任意节点具备直接关联关系或间接关联关系的其它任意节点;响应于在所述窗口选择下级节点,并完成下级节点的配置,将所述下级节点挂载于所述节点树,直至用户放弃选择下级节点;所述节点树的修改方法包括:响应于用户在待修改的节点树中处理的目标节点,如果所述处理为删除操作,将所述目标节点以及关联节点进行删除,如果所述处理为添加操作,将所述目标节点的关联节点展示出来,供用户选择添加,直到用户放弃添加子节点,如果所述处理为修改操作,响应于用户输入的内容修改所述目标节点的配置信息。
在一些实施例中,所述方法还包括:预先维护与多种搜索类型分别对应的节点树;在所述查询请求为首次请求的情形下,所述查询请求包括所述图谱根节点的节点信息;所述节点信息指示目标搜索类型;所述响应于所述查询请求,根据所述查询信息,查找所述目标树节点,包括:响应于所述查询请求,根据所述图谱根节点的节点信息,在维护的多个所述节点树中确定与所述目标搜索类型对应的目标节点树;将所述目标节点树的根节点确定为目标树根节点;在所述查询请求为非首次请求的情形下,所述查询请求包括所述被操作的图谱节点和与所述被操作的图谱节点在同一分支路径的上游节点的节点信息;所述分支路径是指具有父子关系的图谱节点组成的路径;所述响应于所述查询请求,根据所述查询信息,查找所述目标树节点,包括:响应于所述查询请求,从所述分支路径中的祖先节点开始到所述被操作的图谱节点结束在每一节点树中进行匹配,直到确定包含所述分支路径的目标节点树,和包含所述被操作的图谱节点的节点信息的第一节点;将所述第一节点的至少一级子节点,确定为所述目标树节点。
在一些实施例中,所述配置信息包括对应的树节点的节点名称、该树节点与其父节点之间的连接关系、该树节点的属性值,返回字段和第一限制数;所述根据所述目标树节点和所述目标树节点的上游节点包括的所述配置信息生成查询语句,包括:根据所述目标树节点和所述目标树节点的上游节点包括的所述节点名称和所述连接关系,生成节点关系,所述节点关系指示所述目标树节点和所述目标树节点的上游节点在所述图数据库中对应的图节点具备的连接关系;根据所述目标树节点和所述目标树节点的上游节点包括的所述属性值,生成查询条件;所述查询条件指示所述图数据库中与所述目标树节点和所述目标树节点的上游节点对应的图节点具备的属性值;根据所述目标树节点包括的所述返回字段,生成返回值;根据所述目标树节点包括的所述第一限制数,生成所述查询限制数;对生成的所述节点关系,所述查询条件,所述返回值和所述查询限制数进行组装,得到所述查询语句。
在一些实施例中,所述展示查询到的所述展示数据,包括:在所述查询请求为首次请求的情形下,展示所述图谱根节点和/或所述图谱根节点的至少一级子节点包括的展示数据;所述图谱根节点包括的展示数据与所述图谱根节点的至少一级子节点包括的展示数据之间具有连接线;在所述查询请求为非首次请求的情形下,展示所述目标图谱节点的展示数据;所述目标图谱节点的展示数据与所述被操作的图谱节点的展示数据之间具有连接线。
在一些实施例中,所述图数据库包括图节点,所述图节点之间具备连接关系;所述图数据库中数据的存储方法包括:采集资产的资产信息;通过数据表的形式将所述资产信息存储至关系型数据库;根据所述数据表,在图数据库中创建与所述资产信息对应的图节点;根据所述数据表指示的所述资产信息之间的对应关系维护创建的图节点之间的连接关系。
本申请还提出一种基于图数据库的资产图谱的展示装置。所述图谱包括具有父子关系的图谱节点;所述图谱节点包括与待展示资产相关的预设类型的展示数据;所述图谱节点包括至少一个统计节点;所述统计节点包括以预设统计维度统计的数据;所述装置包括:获取模块,用于获取针对所述图谱中目标图谱节点的展示数据的查询请求;在所述查询请求为首次请求的情形下,所述目标图谱节点为所述图谱的图谱根节点和/或所述图谱根节点的至少一级子节点;所述图谱根节点的至少一级子节点中包括至少一个所述统计节点;查询模块,用于响应于所述查询请求,在所述图数据库查询所述目标图谱节点的展示数据;展示模块,用于展示查询到的所述展示数据。
本申请还提出一种电子设备。所述电子设备包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器中存储的可执行指令,实现前述任一所述的基于图数据库的资产图谱的展示方法。
前述实施例记载的方案中,可以在首次查询请求的情形下,查询图谱的图谱根节点和/或所述图谱根节点的至少一级子节点的展示数据并进行展示,其中,所述图谱节点包括与待展示资产相关的预设类型的展示数据;所述图谱根节点的至少一级子节点中包括至少一个所述统计节点,所述统计节点包括以预设统计维度统计的数据。
由此第一,可以将用户感兴趣的与资产相关的数据类型作为所述预设类型,从而可以通过图谱节点展示用户感兴趣的资产数据,并且可以不重复设置预设类型,避免重复展示信息。
第二,可以将用户感兴趣的统计维度作为所述预设统计维度,并在首次请求中展示统计节点,从而展示出用户感兴趣的统计数据,向用户提供有效信息,无需用户进行数据统计,便于用户得到有效信息;
第三,首次请求中,不会一次性展示整个图谱,而是展示图谱根节点和/其至少一级子节点,形成层级展示,便于用户观察图谱数据;
第四,可以通过图数据库查找要展示的展示数据,从而可以利用图数据库可以存储图结构的特性,提升展示数据的查找效率。
附图说明
下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍。
图1为本申请示出的一种资产展示示意图。
图2为本申请示出的一种基于图数据库的资产图谱的展示方法的方法流程图。
图3为本申请示意的一种图数据库数据的存储方法流程示意图。
图4为本申请示意的一种图谱展示示意图。
图5为本申请示意的一种图谱展示示意图。
图6为本申请示意的一种图谱展示示意图。
图7为本申请示意的基于节点树进行数据查询的方法流程图。
图8为本申请示意的查询语句生成方法流程示意图。
图9为本申请示出的资产信息存储流程示意图。
图10为本申请示出的一种资产信息展示方法流程图。
图11为本申请示意的一种基于图数据库的资产图谱的展示装置的结构示意图。
图12为本申请实施例示出的一种电子设备的硬件结构示意图。
具体实施方式
下面将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的设备和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在可以包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。还应当理解,本文中所使用的词语“如果”,取决于语境,可以被解释成为“在……时”或“当……时”或“响应于确定”。
以下介绍一些概念。
资产,是指由企业过去的交易或事项形成的、由企业拥有或者控制的、预期会给企业带来经济利益的资源。所述资产包括硬件设备、软件装置、硬件和软件结合的产品。例如所述资产可以包括服务器,PC(personal computer,个人计算机)设备,摄像头,打印机,防火墙、网关、OA系统、杀毒软件等等。
风险是指资产可能产生的不安全事,可以包括,主机漏洞,应用漏洞,弱口令,高危端口等。
所述资产具备一些资产信息。以服务器资产为例,该服务器可以具备设备名称,责任人,IP地址,开放端口,存放机房,系统版本等资产信息。这些资产信息可以分为资产属性信息与资产风险信息。
其中,资产风险信息是指可能导致一些不安全事件的信息。比如漏洞信息,弱口令信息,高危端口信息等。可以根据需求设置资产风险信息的类型。这些资产风险信息可以包括诸如ID,类型,状态等信息。
资产属性信息可以是相对应资产风险信息而言的,资产具备的一些常规属性。比如设备名称,责任人,IP地址,开放端口,存放机房,系统版本等。可以根据需求设置资产属性信息的类型。
属于同一资产的资产信息之间具有对应关系。利用关系型数据表可以存储资产,资产信息以及资产信息之间的对应关系。比如,可以通过数据表存储属于同一资产的设备名称,责任人,IP地址,端口、漏洞,弱口令等信息,从而维护资产,资产信息以及资产信息之间所述对应关系(也可称为血缘关系)。
资产图谱(简称“图谱”),是一种新型的用于展示资产信息的图像。资产图谱中可以包括与要展示的资产信息相对应的图谱节点。通过图谱节点可以展示资产的资产信息。所述资产信息可以包括指资产属性信息和资产风险信息。所述资产风险信息包括漏洞,弱口令,高危端口等信息,从而实现跨“领域”的灵活图谱展示,而非单领域。
相关技术中,在展示资产信息的时候,将根据维护的待展示资产的资产信息之间的血缘关系,将资产信息以散射状进行全部展示。请参见图1,图1为本申请示出的一种资产展示示意图。如图1所示,针对IP为172.168.1.1的资产,会将与IP为172.168.1.1的资产信息相对应的其它资产信息以散射状展示出来。
如此展示至少存在以下技术问题。第一,展示信息太过繁杂,观察起来不直观;第二,对于用户来讲,需要进行再次加工才能得到有效信息,比较繁琐;第三,展示信息会被重复展示,例如,漏洞B和与端口1对应,而端口1与高危端口1连接,则高危端口1和高危端口1连接的待处理状态信息被重复展示。需要说明的是,在实际情形中,展示信息之间的血缘关系比示例更加复杂,前述技术问题会更加明显。
有鉴于此,本申请实施例提出一种基于图数据库的资产图谱的展示方法。该方法可以在首次查询请求的情形下,查询图谱的图谱根节点和/或所述图谱根节点的至少一级子节点的展示数据并进行展示,其中,所述图谱节点包括与待展示资产相关的预设类型的展示数据;所述图谱根节点的至少一级子节点中包括至少一个统计节点,所述统计节点包括以预设统计维度统计的数据。
由此第一,可以将用户感兴趣的与资产相关的数据类型作为所述预设类型,从而可以通过图谱节点展示用户感兴趣的资产数据,并且可以不重复设置预设类型,避免重复展示信息。
第二,可以将用户感兴趣的统计维度作为所述预设统计维度,并在首次请求中展示统计节点,从而展示出用户感兴趣的统计数据,向用户提供有效信息,无需用户进行数据统计,便于用户得到有效信息。
第三,首次请求中,不会一次性展示整个图谱,而是展示图谱根节点和/其至少一级子节点,形成层级展示,便于用户观察图谱数据。
第四,可以通过图数据库查找要展示的展示数据,从而可以利用图数据库可以存储图结构的特性,提升展示数据的查找效率。
以下结合附图进行实施例说明。
请参见图2,图2为本申请示出的一种基于图数据库的资产图谱的展示方法的方法流程图。
所述图数据库是指存储图结构数据的数据库。所述图数据库可以是Galaxybase、Neo4j、 OrientDB等。在一些实施例中可以使用Neo4j。
Neo4j是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下,而不是严格、静态的表中。但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注。
所述图数据库可以包括图节点,所述图节点之间具备连接关系。这些图节点和资产信息相对应,所述连接关系可以指示图节点对应的资产信息之间的对应关系。比如,图节点A对应服务器C的资产属性信息,图节点B对应服务器C的漏洞信息,那么图节点A和图节点B之间具有连接关系可以指示所述资产属性信息和漏洞信息之间具有对应关系。这种对应关系可以被定义为漏洞关系。本申请不限定图节点的数量。
在一些实施例中,所述图数据库包括用于构建所述图谱的预设节点;
所述预设节点包括以下至少一类节点;资产节点;漏洞节点;高危端口节点;弱口令节点;其中,所述资产节点、所述漏洞节点、所述高危端口节点和所述弱口令节点均包括至少一个节点。这些图节点以及所述连接关系是基于所述资产信息和资产信息之间的对应关系被维护在所述图数据库中的。
在一些实施例中,可以通过图3示意的方法存储数据。
请参见图3,图3为本申请示意的一种图数据库数据的存储方法流程示意图。如图3所示,所述方法可以包括S302-S308。
S302,采集资产的资产信息。
本步骤中可以部署一些资产信息的采集工具,通过这些工具来采集资产信息。关于采集工具的介绍可以参照相关技术,在此不做详述。属于同一资产的资产信息具有对应关系。本申请不限定资产信息的数量。
S304,通过数据表的形式将所述资产信息存储至关系型数据库。
关系型数据库可以通过数据表存储一些具有对应关系的数据。本步骤可以预先设计一些数据表,然后将S302采集的数据通过SQL写入这些数据表,并存储至关系型数据库。本申请不限定数据表的数量。
S306,根据所述数据表,在图数据库中创建与所述资产信息对应的图节点。
图数据库中的图节点是根据资产信息创建的。比如每种数据表中都有主键,本步骤可以根据主键字段创建图节点,并作为图节点的名称。然后将与主键字段对应的其它字段存储至创建的图节点中。
S308,根据所述数据表指示的所述资产信息之间的对应关系维护创建的图节点之间的连接关系。
所述数据表通过外键形成对应关系,本步骤中,可以在维护的字段中存在所述对应关系的两个图节点设置连接关系,还可以根据外键字段的类型,确定连接关系的名称。
通过S302-S308,可以将采集的资产信息以图结构存储在图数据库中,为后续数据查询提供基础。
举例来说,在资产管理场景中,资产信息可以包括资产属性信息和资产风险信息。
所述资产属性信息可以包括资产基本属性(包括资产名称,资产IP,资产操作系统等),资产组,责任人,应用系统,端口等信息;所述资产风险信息可以包括漏洞,弱口令,高危端口,处置状态等。
通过采集工具可以采集到资产的资产信息(包括资产属性信息和资产风险信息),然后可以通过数据表,存储在MySQL数据库中。
然后可以根据数据表,生成与资产属性信息(包括资产名称,资产IP,资产操作系统等)对应的图节点,与资产组对应的图节点,与端口对应的图节点,与责任人对应的图节点,与应用系统对应的图节点等等。以及创建与漏洞对应的图节点,与弱口令对应的图节点,与高危端口对应的图节点,与漏洞或者弱口令类型对应的图节点,与风险的处置状态对应的图节点。
再根据数据表指示的这些资产信息之间的对应关系,维护这些图节点之间的连接关系。
比如具备资产属性信息D的资产同时具备漏洞E,即资产属性信息D和漏洞E具有对应概念性,那么图数据库中,与资产属性信息D对应的图节点1,和与漏洞E对应的漏洞节点2之间具有连接关系。响应于资产属性信息D和漏洞E是通过漏洞ID外键字段关联的,那么这个连接关系可以被定义为漏洞关系。
所述图谱包括具有父子关系的图谱节点。所述图谱节点包括与待展示资产相关的预设类型的展示数据。本申请不限定图谱节点的数量。
所述待展示资产是指被搜索的资产。用户可以输入一些搜索条件进行资产搜索。这些被搜索的资产即为待展示资产。本申请支持模糊搜索。
具有父子关系的图谱节点之间具有预设的展示顺序。图谱子节点的展示数据是图谱父节点的展示数据之后展示。所述展示顺序可以根据需求进行设定,先展示的数据放在父节点,后展示的数据放在子节点。
在一些资产关联场景中,需要先展示资产属性信息,再展示资产风险信息。那么可以将资产属性信息放在父节点,将资产风险信息放在子节点。
所述预设类型可以根据业务需求进行设置。比如可以根据用户需求获知用户感兴趣的,与待展示资产相关的数据类型,然后将其作为所述预设类型。在前端需要展示图谱节点的时候,后端可以根据所述预设类型,查询和构建展示数据,并返回给图谱节点,使得图谱节点可以展示这些数据。
所述图谱节点中可以包括至少一个统计节点;所述统计节点包括以预设统计维度统计的数据。
所述预设统计维度可以根据需求进行设定。例如,需要展示漏洞数量。则所述预设统计维度可以是漏洞。
在进行数据统计的时候,可以结合所述图谱的图谱根节点包括的资产信息。
比如在资产管理场景中,所述预设统计维度可以包括,各种风险(弱口令,主机漏洞,应用漏洞,高危端口等)数量,风险等级数量,各等级下的风险数量,责任人数量,应用系统数量,端口数量等等。以预设统计维度为主机漏洞为例,假设图谱根节点展示的是资产IP=172.168.1.1,统计维度为主机漏洞。所述统计节点可以在图数据库中先查询与所述资产IP对应的图节点,然后再统计与该图节点具备漏洞关系的漏洞图节点中,漏洞类型是主机漏洞的节点数量,从而得到统计数据。
如图2所示,本申请示意的基于图数据库的资产图谱的方法可以包括S202-S206。
S202,获取针对所述图谱中目标图谱节点的展示数据的查询请求。
所述目标图谱节点是指当前需要被展示的图谱节点。在所述查询请求为首次请求的情形下,所述目标图谱节点为所述图谱的图谱根节点和/或所述图谱根节点的至少一级子节点;所述图谱根节点的至少一级子节点中包括至少一个所述统计节点。
在首次查询时展示的图谱节点级数可以根据需求设定。比如可以只展示图谱根节点,也可展示图谱根节点和其一级子节点,也可以展示图谱根节点,其一级子节点,所述一级子节点的子节点(二级子节点)。
所述查询请求用于查询所述目标图谱节点的展示数据。
在一些实施例中,针对首次的查询请求可以通过搜索窗口输入。在一些方式中,前端可以通过页面为用户提供选择搜索类型的第一窗口,和输入搜索条件的第二窗口。用户可以通过两个窗口输入搜索类型和搜索条件。前端可以根据搜索类型和搜索条件构建所述查询请求。例如,用户可以选择IP搜索,并输入IP地址,前端可以构建针对该IP地址的资产信息的查询请求。查询到的资产信息将作为展示数据返回目标图谱节点。
本申请中可以预先维护需要展示的图谱节点之间的父子关系。在查询到图谱根节点之后,可以根据所述父子关系确定要其子节点。维护父子关系的方式有多种,比如可以通过数组,链表等维护。在后续实施例中将公开通过节点树的方式维护该父子关系的方法。
S204,响应于所述查询请求,在所述图数据库查询所述目标图谱节点的展示数据。
所述图数据库中存储了具备图结构的一些资产节点数据。本步骤中可以根据所述查询请求中携带的查询信息构建出查询语句,完成对应资产节点的查询,并根据查询到的资产节点包括的资产信息构建返回值,并将这些返回值作为展示数据。
可以理解的是,在需要展示图谱根节点和其子节点的场景中,可以将图谱根节点和其子节点分别作为目标图谱节点,构建查询语句,查询并返回查询结果。
S206,展示查询到的所述展示数据。
本步骤中可以通过渲染技术将查询到的目标图谱节点的展示数据进行展示。
通过S202-S206记载的方案,可以在首次查询请求的情形下,查询图谱的图谱根节点和/或所述图谱根节点的至少一级子节点的展示数据并进行展示,其中,所述图谱节点包括与待展示资产相关的预设类型的展示数据;所述图谱根节点的至少一级子节点中包括至少一个所述统计节点,所述统计节点包括以预设统计维度统计的数据。
由此第一,可以将用户感兴趣的与资产相关的数据类型作为所述预设类型,从而可以通过图谱节点展示用户感兴趣的资产数据,并且可以不重复设置预设类型,避免重复展示信息。
第二,可以将用户感兴趣的统计维度作为所述预设统计维度,并在首次请求中展示统计节点,从而展示出用户感兴趣的统计数据,向用户提供有效信息,无需用户进行数据统计,便于用户得到有效信息;
第三,首次请求中,不会一次性展示整个图谱,而是展示图谱根节点和/其至少一级子节点,形成层级展示,便于用户观察图谱数据;
第四,可以通过图数据库查找要展示的展示数据,从而可以利用图数据库可以存储图结构的特性,提升展示数据的查找效率。
举例来说,假设用户选择IP类型,输入172.168.1.1,首次需要展示两级图谱节点,其子节点包括责任人数量,漏洞数量,弱口令数量,高危漏洞数量。前端将构建针对IP为172.168.1.1的查询请求。后端响应于该查询请求,可以先查询到IP为172.168.1.1的资产节点(图谱根节点),该资产节点包括的172.168.1.1即为图谱根节点的展示数据。然后根据预先维护的父子关系可以确定该资产节点的子节点,然后根据子节点中存储的用于数据查询的配置信息(例如,节点名称和连接关系),构建查询语句,在图数据库中查询到与该子节点对应的图节点,并根据这些图节点存储的资产信息,进行数据统计得到统计数据,这些统计数据可以作为展示数据。之后可以展示查询到的图谱根节点和其子节点的展示数据。
请参见图4,图4为本申请示意的一种图谱展示示意图。如图4所示,展示了IP为172.168.1.1的资产的相关统计信息。图4仅为示意,实际情形中可以有更多维度的统计信息。
由此用户只需输入搜索条件,便可向用户展示一些有效统计信息,并且便于用户观察。
在一些实施例中,还可以根据用户的操作继续展开图谱。
具体地,在所述查询请求为非首次请求的情形下,所述目标图谱节点为已展示的图谱节点中被操作的图谱节点的至少一级子节点。
所述操作可以包括点击,触摸等选择操作。用户可以在已展示的图谱节点中选择要展开的图谱节点(被操作的图谱节点),要展开的图谱节点的至少一级子节点则为所述目标图谱节点。可以根据需求设置一次展开操作需要展开的节点层级。
在确定目标图谱节点之后可以参照前述实施例的数据查询逻辑,完成展示数据的查询。之后可以进行展示数据的展示。
可以理解的是,继续展开的节点同样会被设置一些用户感兴趣的预设类型的展示数据,可以向用户输出一些有效信息,并且为用户提供了一种层级展示的图谱,方便用户观察数据。
以图4示意的图谱为例,假设用户点击了漏洞数量这一图谱节点,则可以针对漏洞数量图谱节点的子节点进行展示数据的查询和展示,最终可以得到如图5示意的图谱。如果继续针对漏洞类型数量图谱节点和其子节点展开还可以得到不同类型的漏洞信息。如图6所示。
在一些实施例中,可以利用节点树完成图谱层级展示。
所述图谱节点,与预先维护的节点树中的树节点相对应;所述图谱节点之间的父子关系与所述树节点之间的父子关系相对应;所述树节点包括用于查询对应的图谱节点中的展示数据的配置信息。
所述配置信息包括以下至少一项:树节点的唯一名称;树节点与其父节点的连接关系;以及在本次搜索过程中被查询到的资产信息。通过配置信息可以在图数据库中找到对应的图节点,从而获取需要的数据。
通过预先维护节点树可以在后端维护前端要展示的图谱结构。例如,如果需要展示如图5示意的图谱,则需要预先维护与该图谱的结构一致的节点树。该节点树的节点可以包括查询数据的配置信息。通过这些配置信息即可构建查询语句在图数据库中查询数据,并返回至图谱节点。所述查询请求包括用于查询目标节点树中与所述目标图谱节点对应的目标树节点的查询信息。所述目标节点树的树根节点包括的节点信息与所述图谱的图谱根节点包括的节点信息相匹配。
请参见图7,图7为本申请示意的基于节点树进行数据查询的方法流程图。图7示意的方法为对S204的说明。如图7所示,所述方法可以包括S702-S706。
S702,响应于所述查询请求,根据所述查询信息,查找所述目标树节点。
在一些实施例中,所述节点树是辅助用户进行灵活生成。具体的可以向用户提供展示窗口。
用户可以在该窗口中选择任意图节点作为根节点,并对该节点进行配置。例如可以通过拖拉拽等方式选择任意节点,并为该节点添加配置信息。
后台可以响应于用户选择操作,然后基于图数据库,查询可供选择的节点并展示在所述窗口,所述可供选择的节点可以为与所述任意节点具备直接关联关系或间接关联关系的其它任意节点。
用户可以在所述窗口选择下级节点,并完成下级节点的配置。
响应于在所述窗口选择下级节点,并完成下级节点的配置,将所述下级节点挂载于所述节点树。
可以重复上面的操作,直到用户完成所有节点的选择(即放弃选择下级节点)。
后台可以基于用户的上面的操作,生成节点树并存储。
通过这些步骤可以辅助用户,基于图数据库中节点的关联关系,建立节点树,可以基于业务创建用户感兴趣的节点树,以用户感兴趣的维度展示图谱。
在一些实施例中,可以通过窗口展示图数据库中全部节点,用户可以基于业务需求,从中选择任意节点作为树根节点,并基于前述步骤构建节点树,从而构建出满足需求的图谱。
在一些实施例中,可以辅助用户建立跨领域的节点树,所属图谱领域包括资产领域,漏洞领域,弱口令领域,高危端口领域等。
在图谱展示中,用户可以选择一个领域的节点创建单领域图谱,也可以选择多个领域的节点创建跨领域图谱。
例如,在一些场景中,可以通过窗口展示与漏洞相关的节点,供用户完成漏洞领域的点树构建,从而展示漏洞领域的图谱。
在一些场景中,可以通过窗口展示与资产相关的节点,供用户完成资产领域的点树构建,从而展示资产领域的图谱。
在一些场景中,可以通过窗口展示与弱口令相关的节点,供用户完成弱口令领域的点树构建,从而展示弱口令领域的图谱。
在一些场景中,可以通过窗口展示与高危端口相关的节点,供用户完成高危端口领域的点树构建,从而展示高危端口领域的图谱。
在一些场景中,可以通过窗口展示全部领域节点,供用户完成跨领域的节点树构建,从而展示跨领域的图谱。
在一些实施例中,还可以辅助用户对已建立的节点树进行灵活修改。
用户可以在待修改的节点树中处理的目标节点,所述处理包括删除、添加、修改等操作。
如果是删除操作,则可以将该目标节点以及关联节点进行删除。
如果是添加操作,可以添加该目标节点,并将该目标节点的关联节点展示出来,供用户选择添加,直到用户放弃添加子节点。
如果是修改操作,可以响应于用户输入的内容修改目标节点的配置信息。
通过上述方法,一方面,可以实现对图谱结构的灵活变动,用户可以选择任意图谱节点和任意下级节点建立一个图谱展示,另一方面,任何节点在节点树中的父子关系并非绝对父子关系,可以通过新增/修改节点树来自由变更节点树中的父子关系。
在一些实施例中,可以预先维护与多种搜索类型分别对应的节点树,如此可以为每种搜索类型配置对应的前端图谱展示结构,以适应不同的用户需求,提升产品适应性。
在这种情形下,S702中,需要先确定目标节点树,然后再确定目标树节点。
在所述查询请求为首次请求的情形下,所述查询请求包括所述图谱根节点的节点信息;所述节点信息指示目标搜索类型。
首次请求中可以包括用户选择的搜索类型,和用户输入的搜索条件。前端可以将这些信息加入首次查询请求作为要查询节点(图谱根节点)的节点信息。
在首次请求的情形下,可以响应于所述查询请求,根据所述图谱根节点的节点信息,在维护的多个所述节点树中确定与所述目标搜索类型对应的目标节点树。然后将所述目标节点树的根节点确定为目标树根节点。
例如,首次请求中包括IP=172.168.1.1。那么根据IP类型可以获取对应的目标节点树,该树的根节点即为目标树根节点。之后可以IP=172.168.1.1构建查询语句,在图数据库中查询到对应图节点存储资产信息,并填充至所述目标树根节点。等到其它目标图谱节点的数据被查询到后,可以将查询到的数据返回前端进行展示。
在所述查询请求为非首次请求的情形下,所述查询请求包括所述被操作的图谱节点和与所述被操作的图谱节点在同一分支路径的上游节点的节点信息。
节点的上游节点包括该节点的父节点,该节点的父节点的父节点,一直到该节点的祖先节点(根节点)。
所述分支路径是指具有父子关系的图谱节点组成的路径。
在非首次请求的情形下,后端可以将当前被操作(例如被点击)的图谱节点和与所述被操作的图谱节点在同一分支路径的上游节点的节点信息打包至所述查询请求中。
后端可以响应于所述查询请求,从所述分支路径中的祖先节点开始到所述被操作的图谱节点结束在每一节点树中进行匹配,直到确定包含所述分支路径的目标节点树,和包含所述被操作的图谱节点的节点信息的第一节点。
将所述第一节点的至少一级子节点,确定为所述目标树节点。
所述匹配操作可以理解为一种顺序匹配,即从所述分支路径中的祖先节点开始,找到包括该祖先节点的目标节点树,再根据所述分支路径中该祖先节点的各级子节点,找到所述目标节点树中的所述分支路径,然后再查找到包含所述被操作的图谱节点的节点信息的第一节点。该第一节点的至少一级子节点即为所述目标树节点。
S704,根据所述目标树节点和所述目标树节点的上游节点包括的所述配置信息生成查询语句。
在确定目标树节点之后,如果目标树节点有至少两个,则可以针对每一目标节点树,分别构建查询语句。
本步骤中可以预先设置一些生成规则,将所述配置信息作为这些生成规则的输入,通过运行这些生成规则,生成查询语句。
在一些实施例中,所述图数据为neo4j数据库。该数据库需要利用Cypher作为查询语句。Cypher包括四部分,分别为节点关系,查询条件,返回值,限制数。例如,以下Cypher语句,match(n:Ledger) where n.ip=‘192.168.12.218’ return n.ip limit 25。其中,match和where之间的(n:Ledger)为节点关系,where和return之间的n.ip=‘192.168.12.218’为查询条件,return和limit之间的n.ip为返回值,limit之后的25为限制数。得到这四部分内容之后再进行拼接即可得到Cypher查询语句。
所述配置信息包括对应的树节点的节点名称、该树节点与其父节点之间的连接关系、该树节点的属性值,返回字段和第一限制数。
请参见图8,图8为本申请示意的查询语句生成方法流程示意图。图8示意的方法为对S704的说明。如图8所示,所述方法可以包括S802-S810。
S802,根据所述目标树节点和所述目标树节点的上游节点包括的所述节点名称和所述连接关系,生成节点关系。
所述节点关系指示所述目标树节点和所述目标树节点的上游节点在所述图数据库中对应的图节点具备的连接关系。
可以理解的是,通过所述节点名称和所述连接关系即可得到所述目标树节点和所述目标树节点的上游节点对应的图节点的路径信息也即所述节点关系。
在一些实施例中为了简化查询语句,S802中可以进行节点去重。例如,目前具有关联关系如下:(Ledger),(Ledger)-[漏洞]-(Vuln),(Vuln)-[漏洞类型]-(VulnType),可以去除掉1个Vuln(漏洞节点),得到(Ledger)-[漏洞]-(Vuln)-[漏洞类型]-(VulnType),从而简化查询语句。
S804,根据所述目标树节点和所述目标树节点的上游节点包括的所述属性值,生成查询条件。
所述查询条件指示所述图数据库中与所述目标树节点和所述目标树节点的上游节点对应的图节点具备的属性值。这些查询条件可能是在历次查询过程中填充起来的。
可以理解的是,只根据节点名称可能无法在图数据库中唯一定位节点,因此,需要结合节点具备的属性值作为查询条件来定位所述目标树节点和所述目标树节点的上游节点对应的图节点。
S806,根据所述目标树节点包括的所述返回字段,生成返回值。
所述返回字段是维护节点树是预先存储在树节点中的。这些返回字段与用户感兴趣的数据类型(前面实施例中的预设类型)相关。例如用户感兴趣的数据类型为漏洞数量,则所述返回字段可以为漏洞ID(漏洞ID可以用来统计漏洞数量)。再比如用户感兴趣的数据类型为漏洞类型,则所述返回字段可以为漏洞类型。
本步骤中针对统计数据(例如漏洞数量)和直接返回的数据(例如漏洞类型,漏洞名称等)预设了构建返回值的的规则,通过这些规则即可等到返回值信息。这些规则可以理解为固定的字符,利用固定的字符和所述返回字段中的数据进行组合,则可以得到返回值信息。
S808,根据所述目标树节点包括的所述第一限制数,生成所述查询限制数。
所述第一限制数可以是预先维护在树节点中的。所述第一限制数指示查询语句查询的最大数据量。
本步骤中可以根据预先设置的查询限制数构建规则,根据第一限制数得到所述查询限制数。构建规则可以理解为固定的字符,利用固定的字符和所述第一限制数进行组合,则可以得到查询限制数。
S810,对生成的所述节点关系,所述查询条件,所述返回值和所述查询限制数进行组装,得到所述查询语句。
得到查询语句的四部分内容之后,则可以完成组ssss装操作得到所述查询语句。
通过S802-S810记载的方案,可以通过先得到查询语句的四部分内容,然后再进行组装得到查询语句。
举例来说。以展开图6中的第一类型漏洞数量图谱节点为例。假设第一类型为WEB漏洞。通过第一类型漏洞数量图谱节点,以及其全部上游节点包括的节点名称和节点间的连接概念性,得到节点关系:(Ledger)-[漏洞]-(Vuln)-[漏洞类型]-(VulnType);
根据第一类型漏洞数量图谱节点,以及其全部上游节点包括的属性值,得到查询条件:Ledger.ledgerId=172.168.1.1 and Vuln.vulnGroup=0 and VulnType.name=WEB漏洞;
根据第一类型漏洞数量图谱节点包括的返回值,得到Vuln.vuId as count,Vuln.type as name,Vuln.vuId as value,VulnTypeCollect as nodeField。
根据第一类型漏洞数量图谱节点包括的第一限制数,假设为5,可以得到限制数5。
供需查询三种节点和两种连接关系。依次将三个节点赋予n1-n3,连接关系依次赋予r1和r2。
对四个部分组装和微调即可得到最终查询语句,match (n1:Ledger)-[r1:漏洞]-(n2:Vuln)-[r2:漏洞类型]-(n3:VulnType) where n1.ledgerId=172.168.1.1 andn2.vulnGroup=0 and n3.name=WEB漏洞 return count(n2.vuId) as count,n2.type asname,n2.vuId as value,VulnTypeCollect as nodeField limit 5。
通过该查询语句即可完成在图数据库中的节点检索,并返回相应的返回值。
S706,基于所述查询语句在所述图数据库中查询所述目标图谱节点的展示数据。
本步骤中在以上数组组装为Cypher之后,会使用多线程异步查询的方式在neo4j数据库中进行查询。
在一些方式中可以使用CompletableFuture。在Java 8中, 新增加了一个包含50个方法左右的类:CompletableFuture,结合了Future的优点,提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,提供了函数式编程的能力,可以通过回调的方式处理计算结果,并且提供了转换和组合CompletableFuture的方法。CompletableFuture被设计在Java中进行异步编程。异步编程意味着在主线程之外创建一个独立的线程,与主线程分隔开,并在上面运行一个非阻塞的任务,然后通知主线程进展,成功或者失败。
该CompletableFuture技术将在并行查询的时候等待其他线程完成数据之后统一返回结果。最终耗时是耗时最长的线程的时长。
通过这种方式,你的主线程不用为了任务的完成而阻塞/等待,你可以用主线程去并行执行其他的任务。 使用这种并行方式,极大地提升了程序的表现。
通过S702-S706记载的方案,可以通过预先维护节点树,在前端需要展示某一图谱节点的时候,可以通过该图谱节点及其上游节点在所述节点树种对应的树节点存储的配置信息从图数据库查询到展示数据并返回给前端进行展示,不受前端展示数据的影响,最小响应数据,来优化性能,减少数据传输消耗。此外,可以预先维护与多种搜索类型分别对应的节点树,如此可以为每种搜索类型配置对应的前端图谱展示结构,以适应不同的用户需求,提升产品适应性。
在一些实施例中,在S206中,在所述查询请求为首次请求的情形下,可以展示所述图谱根节点和/或所述图谱根节点的至少一级子节点包括的展示数据;所述图谱根节点包括的展示数据与所述图谱根节点的至少一级子节点包括的展示数据之间具有连接线。
通过连接线连接图谱节点(展示数据)的展示方式,可以向用户展示数据之间的关联关系,便于用户选择需要继续展开的图谱节点。
在所述查询请求为非首次请求的情形下,展示所述目标图谱节点的展示数据;所述目标图谱节点的展示数据与所述被操作的图谱节点的展示数据之间具有连接线。
由此,在后续展开图谱节点的过程中,可以只返回目标图谱节点的展示数据,将该展示数据挂在被操作的图谱节点的下面进行展示,无需返回全部图谱节点的展示数据,减少前后端交互数据量,提升交互效率,前端也无需获取图谱的整体结构,无需重新进行图谱渲染,减少前端压力。
以下结合资产管理场景进行说明。
资产管理可以包括资产信息的存储和展示两部分内容。以下分别进行说明。
部分一,资产信息存储。
请参见图9,图9为本申请示出的资产信息存储流程示意图。如图9,所述方法可以包括S902-S906。
S902,获取资产信息。
本步骤中可以获取通过采集工具采集的资产信息,所述资产信息可以包括资产属性信息与资产风险信息。所述资产属性信息与资产风险信息包括的具体维度可以根据需求进行设定。以资产属性信息包括IP地址(资产IP),责任人,资产组;资产风险信息包括漏洞,弱口令,高危端口为例。当然漏洞,弱口令和高危端口也可以包括一些子维度的信息,比如,处置状态,类型,等级等。
S904,将所述资产信息以数据表形式存储至关系型数据库。
不同的资产信息可以通过不同的数据表(含关联表)进行存储。所述数据表的形式可以如表1所示。以资产属性信息为例。
表1:
S906,根据所述数据表将所述资产信息转为Neo4j数据库形式存储。
本步骤可以分为两步,具体可以参照S306和S308,在此不详述。
图节点包括的数据可以如表2所示。以资产属性节点为例。资产组节点,责任人节点,漏洞节点,弱口令节点,高危端口节点类似。
表2:
可以使用在后节点的名称或者两个节点的名称的组合作为两个节点的连接关系。例如,资产节点(Ledger)与资产组节点(Group)之间使用资产组关系,资产节点(Ledger)与责任人(ManagerNeo)节点之间使用责任人关系。
资产节点(Ledger)与漏洞节点(Vuln)之间使用漏洞关系。资产节点(Ledger)与弱口令节点(WeakPass)之间使用弱口令关系。
漏洞节点(Vuln)与处置状态节点(RiskStatus)使用漏洞状态关系,漏洞节点(Vuln)与漏洞类型节点(VulnType)之间使用漏洞类型关系,漏洞节点(Vuln)与端口节点(LedgerPort)节点之间使用漏洞端口关系。
弱口令节点(WeakPass)与处置状态节点(RiskStatus)使用弱口令状态关系, 弱口令节点(WeakPass)与弱口令类型节点(WeakPassType)之间使用弱口令类型关系, 弱口令节点(WeakPass)与端口节点(LedgerPort)节点之间使用弱口令端口关系。
高危端口组节点(HighPortGroup)与端口节点(LedgerPort)之间使用高危端口关系。
通过S902-S906即可将资产信息存储在Neo4j图数据库中,便于后续进行资产信息查询与展示。
部分二,资产信息展示。
可以预先在后端维护一下与不同搜索方式对于的节点树,这些节点树包括要展示的图谱结构。具体可以参照前面对节点树的说明。由此支持多种搜索方式,提升产品适应性。这些搜索方式可以根据需求进行设定,比如,可以包括IP地址/资产名称搜索、应用系统搜索、处置状态搜索等等。以下以IP搜索为例。针对IP搜索可以维护如图6所示的节点树。这些节点树的树节点(图谱)要展示的数据类型可以预先设置为用户感兴趣的维度。
需要说明的时,在还未开始搜索时,这些节点树只包括在一些在图数据库查找节点的基础配置信息,在每次搜索之后会将搜索到的用于展示的数据添加到节点树对应的树节点中。当然完成搜索之后这些节点树中新增的数据可以被释放。
树节点包括的字段可以如表3所示。以树根节点为例。
表3:
其中,节点属性,节点查询属性,连接关系可以是基础配置信息,节点唯一表示,name结果,value结果,统计数据字段可以是返回字段,limit为限制数字段。其中节点唯一表示也可以作为后续搜索图节点的新增配置信息。节点唯一表示,name结果,value结果,统计数据字段可以是后续展示在前端的展示数据。
请参见图10,图10为本申请示出的一种资产信息展示方法流程图。如图10所示,所述方法可以S1001-S1011。
S1001,获取前端发起图谱展示请求;
该请求可以包括当前图谱节点的节点信息,以及其全部上游节点的节点信息。在首次请求,中当前图谱节点即为图谱根节点,在非首次请求中,当前图谱节点为被操作的图谱节点。
S1002,判断是否为节点展开,如果不是,执行S1003,如果是,执行S1006;
本步骤中,如果上游节点的节点信息为空,说明不是节点展开,否则为节点展开。不是节点展开即为首次请求,如果是节点展开则为非首次请求。
S1003,是否携带搜索数据,如果否,执行S1004,如果是,执行S1007。
所述搜索数据是指搜索类型和搜索条件。本步骤如果搜索数据是空,则可以未携带搜索数据,否则携带了搜索数据。
S1004,填充默认搜索数据。
S1005,基于搜索数据,确定当前树节点。
本步骤中,可以通过节点信息匹配的方法,将搜索数据与各节点树的根节点进行匹配,确定当前树节点,当前树节点即为树根节点,并继续执行S1008。
S1006,根据当前图谱节点的节点信息,以及其全部上游节点的节点信息,查询对于的当前树节点;
S1007,将所述当前树节点加入上游节点,将当前树节点的子节点作为当前树节点。
S1008,获取当前树节点和其全部上游节点的配置信息。
如果当前树节点为树根节点,则其上游节点信息为空。
S1009,根据所述配置信息,构建与每一当前树节点分别对应的查询语句。
本步骤中可以针对每一当前树节点,根据当前树节点和其全部上游节点的配置信息,参照S802-S808的步骤构建查询语句。在此不做详述。
S1010,并行执行查询语句,查询每一当前树节点的展示数据。
本步骤中可以基于CompletableFuture技术,完成并行查询。
S1011,组装展示数据并返回至前端进行展示。
前端接收到展示数据之后可以参照S206及其相关实施例示意的展示方法进行展示,可以提升展示效率,减轻前端压力。
通过S1001-S1011的层级展示方式,第一,可以将用户感兴趣的与资产相关的数据类型作为所述预设类型,从而可以通过图谱节点展示用户感兴趣的资产数据,并且可以不重复设置预设类型,避免重复展示信息。
第二,可以将用户感兴趣的统计维度作为所述预设统计维度,并在首次请求中展示统计节点,从而展示出用户感兴趣的统计数据,向用户提供有效信息,无需用户进行数据统计,便于用户得到有效信息;
第三,首次请求中,不会一次性展示整个图谱,而是展示图谱根节点和/其至少一级子节点,形成层级展示,便于用户观察图谱数据;
第四,可以通过图数据库查找要展示的展示数据,从而可以利用图数据库可以存储图结构的特性,提升展示数据的查找效率。
与前述任意实施例相对应,本申请还提出一种基于图数据库的资产图谱的展示装置。请参见图11,图11为本申请示意的一种基于图数据库的资产图谱的展示装置的结构示意图。所述图谱包括具有父子关系的图谱节点;所述图谱节点包括与待展示资产相关的预设类型的展示数据;所述图谱节点包括至少一个统计节点;所述统计节点包括以预设统计维度统计的数据。
如图11所示,所述展示装置1100包括:
获取模块1110,用于获取针对所述图谱中目标图谱节点的展示数据的查询请求;在所述查询请求为首次请求的情形下,所述目标图谱节点为所述图谱的图谱根节点和/或所述图谱根节点的至少一级子节点;所述图谱根节点的至少一级子节点中包括至少一个所述统计节点;
查询模块1120,用于响应于所述查询请求,在所述图数据库查询所述目标图谱节点的展示数据;
展示模块1130,用于展示查询到的所述展示数据。
在一些实施例中,在所述查询请求为非首次请求的情形下,所述目标图谱节点为已展示的图谱节点中被操作的图谱节点的至少一级子节点。
在一些实施例中,所述图谱节点,与预先维护的节点树中的树节点相对应;所述图谱节点之间的父子关系与所述树节点之间的父子关系相对应;所述树节点包括用于查询对应的图谱节点中的展示数据的配置信息;所述查询请求包括用于查询目标节点树中与所述目标图谱节点对应的目标树节点的查询信息;所述目标节点树的树根节点包括的节点信息与所述图谱的图谱根节点包括的节点信息相匹配;
所述查询模块1120,进一步用于:
响应于所述查询请求,根据所述查询信息,查找所述目标树节点;
根据所述目标树节点和所述目标树节点的上游节点包括的所述配置信息生成查询语句;
基于所述查询语句在所述图数据库中查询所述目标图谱节点的展示数据。
在一些实施例中,在一些实施例中,所述图数据库包括用于构建所述图谱的预设节点;所述预设节点包括以下至少一类节点;资产节点;漏洞节点;高危端口节点;弱口令节点;其中,所述资产节点、所述漏洞节点、所述高危端口节点和所述弱口令节点均包括至少一个节点。
在一些实施例中,所述装置还包括:
所述节点树的生成模块,用于响应于用户在窗口选择任意节点并对该节点进行配置,将用户选择的节点作为树根节点,并基于所述图数据库,查询可供选择的节点并展示在所述窗口;所述可供选择的节点是指与所述任意节点具备直接关联关系或间接关联关系的其它任意节点;响应于在所述窗口选择下级节点,并完成下级节点的配置,将所述下级节点挂载于所述节点树,直至用户放弃选择下级节点;
所述节点树的修改模块,响应于用户在待修改的节点树中处理的目标节点,如果所述处理为删除操作,将所述目标节点以及关联节点进行删除,如果所述处理为添加操作,将所述目标节点的关联节点展示出来,供用户选择添加,直到用户放弃添加子节点,如果所述处理为修改操作,响应于用户输入的内容修改所述目标节点的配置信息。
在一些实施例中,预先维护与多种搜索类型分别对应的节点树;
在所述查询请求为首次请求的情形下,所述查询请求包括所述图谱根节点的节点信息;所述节点信息指示目标搜索类型;
所述查询模块1120,进一步用于:
响应于所述查询请求,根据所述图谱根节点的节点信息,在维护的多个所述节点树中确定与所述目标搜索类型对应的目标节点树;
将所述目标节点树的根节点确定为目标树根节点;
在所述查询请求为非首次请求的情形下,所述查询请求包括所述被操作的图谱节点和与所述被操作的图谱节点在同一分支路径的上游节点的节点信息;所述分支路径是指具有父子关系的图谱节点组成的路径;
所述查询模块1120,进一步用于:
响应于所述查询请求,从所述分支路径中的祖先节点开始到所述被操作的图谱节点结束在每一节点树中进行匹配,直到确定包含所述分支路径的目标节点树,和包含所述被操作的图谱节点的节点信息的第一节点;
将所述第一节点的至少一级子节点,确定为所述目标树节点。
所述查询模块1120,进一步用于:
所述配置信息包括对应的树节点的节点名称、该树节点与其父节点之间的连接关系、该树节点的属性值,返回字段和第一限制数;
所述查询模块1120,进一步用于:
根据所述目标树节点和所述目标树节点的上游节点包括的所述节点名称和所述连接关系,生成节点关系,所述节点关系指示所述目标树节点和所述目标树节点的上游节点在所述图数据库中对应的图节点具备的连接关系;
根据所述目标树节点和所述目标树节点的上游节点包括的所述属性值,生成查询条件;所述查询条件指示所述图数据库中与所述目标树节点和所述目标树节点的上游节点对应的图节点具备的属性值;
根据所述目标树节点包括的所述返回字段,生成返回值;
根据所述目标树节点包括的所述第一限制数,生成所述查询限制数;
对生成的所述节点关系,所述查询条件,所述返回值和所述查询限制数进行组装,得到所述查询语句。
在一些实施例中,所述展示模块1130,进一步用于:
在所述查询请求为首次请求的情形下,展示所述图谱根节点和/或所述图谱根节点的至少一级子节点包括的展示数据;所述图谱根节点包括的展示数据与所述图谱根节点的至少一级子节点包括的展示数据之间具有连接线;
在所述查询请求为非首次请求的情形下,展示所述目标图谱节点的展示数据;所述目标图谱节点的展示数据与所述被操作的图谱节点的展示数据之间具有连接线。
在一些实施例中,所述图数据库包括图节点,所述图节点之间具备连接关系;所述装置1100还包括存储模块,用于:
采集资产的资产信息;
通过数据表的形式将所述资产信息存储至关系型数据库;
根据所述数据表,在图数据库中创建与所述资产信息对应的图节点;
根据所述数据表指示的所述资产信息之间的对应关系维护创建的图节点之间的连接关系。
前述实施例记载的方案中,第一,可以将用户感兴趣的与资产相关的数据类型作为所述预设类型,从而可以通过图谱节点展示用户感兴趣的资产数据,并且可以不重复设置预设类型,避免重复展示信息。
第二,可以将用户感兴趣的统计维度作为所述预设统计维度,并在首次请求中展示统计节点,从而展示出用户感兴趣的统计数据,向用户提供有效信息,无需用户进行数据统计,便于用户得到有效信息;
第三,首次请求中,不会一次性展示整个图谱,而是展示图谱根节点和/其至少一级子节点,形成层级展示,便于用户观察图谱数据;
第四,可以通过图数据库查找要展示的展示数据,从而可以利用图数据库可以存储图结构的特性,提升展示数据的查找效率。
本申请示出的一种基于图数据库的资产图谱的展示装置的实施例可以应用于电子设备上。相应地,本申请公开了一种电子设备,该设备可以包括:处理器。
用于存储处理器可执行指令的存储器。
其中,所述处理器被配置为调用所述存储器中存储的可执行指令,实现前述任一实施例示出的基于图数据库的资产图谱的展示方法。
请参见图12,图12为本申请实施例示出的一种电子设备的硬件结构示意图。
如图12所示,该电子设备可以包括用于执行指令的处理器,用于进行网络连接的网络接口,用于为处理器存储运行数据的内存,以及用于存储基于图数据库的资产图谱的展示装置对应指令的非易失性存储器。
其中,所述装置的实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图12所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
可以理解的是,为了提升处理速度,所述基于图数据库的资产图谱的展示装置对应指令也可以直接存储于内存中,在此不作限定。
本申请提出一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序可以用于使处理器执行前述任一实施例示出的基于图数据库的资产图谱的展示方法。
本领域技术人员应明白,本申请一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本申请一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(可以包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请中的“和/或”表示至少具有两者中的其中一个。本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
虽然本申请包含许多具体实施细节,但是这些不应被解释为限制任何公开的范围或所要求保护的范围,而是主要用于描述特定公开的具体实施例的特征。本申请内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,所述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
以上仅为本申请一个或多个实施例的较佳实施例而已,并不用以限制本申请一个或多个实施例,凡在本申请一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请一个或多个实施例保护的范围之内。
Claims (8)
1.一种基于图数据库的资产图谱的展示方法,其特征在于,所述图谱包括具有父子关系的图谱节点;所述图谱节点包括与待展示资产相关的预设类型的展示数据;所述图谱节点包括至少一个统计节点;所述统计节点包括以预设统计维度统计的数据;所述资产包括硬件设备、软件装置、硬件和软件结合的产品;
所述方法包括:
获取针对所述图谱中目标图谱节点的展示数据的查询请求;在所述查询请求为首次请求的情形下,所述目标图谱节点为所述图谱的图谱根节点和/或所述图谱根节点的至少一级子节点;所述图谱根节点的至少一级子节点中包括至少一个所述统计节点;在所述查询请求为非首次请求的情形下,所述目标图谱节点为已展示的图谱节点中被操作的图谱节点的至少一级子节点;所述图谱节点,与预先维护的节点树中的树节点相对应;所述图谱节点之间的父子关系与所述树节点之间的父子关系相对应;所述查询请求包括用于查询目标节点树中与所述目标图谱节点对应的目标树节点的查询信息;所述目标节点树的树根节点包括的节点信息与所述图谱的图谱根节点包括的节点信息相匹配;所述树节点包括用于查询对应的图谱节点中的展示数据的配置信息;
响应于所述查询请求,根据所述查询信息,查找所述目标树节点;
根据所述目标树节点和所述目标树节点的上游节点包括的所述配置信息生成查询语句;
基于所述查询语句在所述图数据库中查询所述目标图谱节点的展示数据;
展示查询到的所述展示数据。
2.根据权利要求1所述的基于图数据库的资产图谱的展示方法,其特征在于,所述图数据库包括用于构建所述图谱的预设节点;
所述预设节点包括以下至少一类节点;
资产节点;
漏洞节点;
高危端口节点;
弱口令节点;
其中,所述资产节点、所述漏洞节点、所述高危端口节点和所述弱口令节点均包括至少一个点。
3.根据权利要求1所述的基于图数据库的资产图谱的展示方法,其特征在于,所述节点树的生成方法包括:
响应于用户在窗口选择任意节点并对该节点进行配置,将用户选择的节点作为树根节点,并基于所述图数据库,查询可供选择的节点并展示在所述窗口;所述可供选择的节点是指与所述任意节点具备直接关联关系或间接关联关系的其它任意节点;
响应于在所述窗口选择下级节点,并完成下级节点的配置,将所述下级节点挂载于所述节点树,直至用户放弃选择下级节点;
所述节点树的修改方法包括:
响应于用户在待修改的节点树中处理的目标节点,
如果所述处理为删除操作,将所述目标节点以及关联节点进行删除,
如果所述处理为添加操作,将所述目标节点的关联节点展示出来,供用户选择添加,直到用户放弃添加子节点,
如果所述处理为修改操作,响应于用户输入的内容修改所述目标节点的配置信息。
4.根据权利要求1所述的基于图数据库的资产图谱的展示方法,其特征在于,所述方法还包括:
预先维护与多种搜索类型分别对应的节点树;
在所述查询请求为首次请求的情形下,所述查询请求包括所述图谱根节点的节点信息;所述节点信息指示目标搜索类型;
所述响应于所述查询请求,根据所述查询信息,查找所述目标树节点,包括:
响应于所述查询请求,根据所述图谱根节点的节点信息,在维护的多个所述节点树中确定与所述目标搜索类型对应的目标节点树;
将所述目标节点树的根节点确定为目标树根节点;
在所述查询请求为非首次请求的情形下,所述查询请求包括所述被操作的图谱节点和与所述被操作的图谱节点在同一分支路径的上游节点的节点信息;所述分支路径是指具有父子关系的图谱节点组成的路径;
所述响应于所述查询请求,根据所述查询信息,查找所述目标树节点,包括:
响应于所述查询请求,从所述分支路径中的祖先节点开始到所述被操作的图谱节点结束在每一节点树中进行匹配,直到确定包含所述分支路径的目标节点树,和包含所述被操作的图谱节点的节点信息的第一节点;
将所述第一节点的至少一级子节点,确定为所述目标树节点。
5.根据权利要求1所述的基于图数据库的资产图谱的展示方法,其特征在于,所述配置信息包括对应的树节点的节点名称、该树节点与其父节点之间的连接关系、该树节点的属性值,返回字段和第一限制数;
所述根据所述目标树节点和所述目标树节点的上游节点包括的所述配置信息生成查询语句,包括:
根据所述目标树节点和所述目标树节点的上游节点包括的所述节点名称和所述连接关系,生成节点关系,所述节点关系指示所述目标树节点和所述目标树节点的上游节点在所述图数据库中对应的图节点具备的连接关系;
根据所述目标树节点和所述目标树节点的上游节点包括的所述属性值,生成查询条件;所述查询条件指示所述图数据库中与所述目标树节点和所述目标树节点的上游节点对应的图节点具备的属性值;
根据所述目标树节点包括的所述返回字段,生成返回值;
根据所述目标树节点包括的所述第一限制数,生成所述查询限制数;
对生成的所述节点关系,所述查询条件,所述返回值和所述查询限制数进行组装,得到所述查询语句。
6.根据权利要求1所述的基于图数据库的资产图谱的展示方法,其特征在于,所述展示查询到的所述展示数据,包括:
在所述查询请求为首次请求的情形下,展示所述图谱根节点和/或所述图谱根节点的至少一级子节点包括的展示数据;所述图谱根节点包括的展示数据与所述图谱根节点的至少一级子节点包括的展示数据之间具有连接线;
在所述查询请求为非首次请求的情形下,展示所述目标图谱节点的展示数据;所述目标图谱节点的展示数据与所述被操作的图谱节点的展示数据之间具有连接线。
7.根据权利要求1所述的基于图数据库的资产图谱的展示方法,其特征在于,所述图数据库包括图节点,所述图节点之间具备连接关系;所述图数据库中数据的存储方法包括:
采集资产的资产信息;
通过数据表的形式将所述资产信息存储至关系型数据库;
根据所述数据表,在图数据库中创建与所述资产信息对应的图节点;
根据所述数据表指示的所述资产信息之间的对应关系维护创建的图节点之间的连接关系。
8.一种基于图数据库的资产图谱的展示装置,其特征在于,所述图谱包括具有父子关系的图谱节点;所述图谱节点包括与待展示资产相关的预设类型的展示数据;所述图谱节点包括至少一个统计节点;所述统计节点包括以预设统计维度统计的数据;所述资产包括硬件设备、软件装置、硬件和软件结合的产品;
所述装置包括:
获取模块,用于获取针对所述图谱中目标图谱节点的展示数据的查询请求;在所述查询请求为首次请求的情形下,所述目标图谱节点为所述图谱的图谱根节点和/或所述图谱根节点的至少一级子节点;所述图谱根节点的至少一级子节点中包括至少一个所述统计节点;在所述查询请求为非首次请求的情形下,所述目标图谱节点为已展示的图谱节点中被操作的图谱节点的至少一级子节点;所述图谱节点,与预先维护的节点树中的树节点相对应;所述图谱节点之间的父子关系与所述树节点之间的父子关系相对应;所述查询请求包括用于查询目标节点树中与所述目标图谱节点对应的目标树节点的查询信息;所述目标节点树的树根节点包括的节点信息与所述图谱的图谱根节点包括的节点信息相匹配;所述树节点包括用于查询对应的图谱节点中的展示数据的配置信息;
查询模块,用于响应于所述查询请求,根据所述查询信息,查找所述目标树节点;根据所述目标树节点和所述目标树节点的上游节点包括的所述配置信息生成查询语句;基于所述查询语句在所述图数据库中查询所述目标图谱节点的展示数据;
展示模块,用于展示查询到的所述展示数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310318556.4A CN116028680B (zh) | 2023-03-29 | 2023-03-29 | 基于图数据库的资产图谱的展示方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310318556.4A CN116028680B (zh) | 2023-03-29 | 2023-03-29 | 基于图数据库的资产图谱的展示方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116028680A CN116028680A (zh) | 2023-04-28 |
CN116028680B true CN116028680B (zh) | 2023-06-20 |
Family
ID=86091275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310318556.4A Active CN116028680B (zh) | 2023-03-29 | 2023-03-29 | 基于图数据库的资产图谱的展示方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116028680B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116821155A (zh) * | 2023-06-27 | 2023-09-29 | 上海螣龙科技有限公司 | 一种网络资产数据存储和查询方法、装置及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102016012597A1 (de) * | 2015-12-01 | 2017-06-01 | Suunto Oy | Vorherbestimmung einer Betätigung auf der Grundlage einer thematischen Karte |
CN105893421A (zh) * | 2015-12-02 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | Uv计算方法、装置 |
CN113239111B (zh) * | 2021-06-17 | 2024-06-21 | 上海海洋大学 | 一种基于知识图谱的网络舆情可视化分析方法及系统 |
CN114443742A (zh) * | 2022-02-28 | 2022-05-06 | 中国农业银行股份有限公司 | 一种k线图的展示方法、装置和设备 |
-
2023
- 2023-03-29 CN CN202310318556.4A patent/CN116028680B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN116028680A (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11720631B2 (en) | Tool to build and store a data model and queries for a graph database | |
US7039647B2 (en) | Drag and drop technique for building queries | |
US9753960B1 (en) | System, method, and computer program for dynamically generating a visual representation of a subset of a graph for display, based on search criteria | |
US8010530B2 (en) | Presentation of multilingual metadata | |
KR101213798B1 (ko) | 복합 데이터 액세스 | |
JP2006012173A (ja) | データ抽象化モデルにおける関係管理 | |
JP2005302029A (ja) | パラメータ化照会を提示するための方法、システム及びコンピュータ可読媒体 | |
CN113312392A (zh) | 轻量级的规则引擎处理方法及装置 | |
US8185562B2 (en) | Business object browser for business query language | |
CN116028680B (zh) | 基于图数据库的资产图谱的展示方法、装置及电子设备 | |
JP2011523750A (ja) | X500データモデルをリレーショナル・データベースにマッピングするための方法 | |
US9916360B2 (en) | Joining operations in document oriented databases | |
EP3721354A1 (en) | Systems and methods for querying databases using interactive search paths | |
EP1909170B1 (en) | Method and system for automatically generating a communication interface | |
CN116150436B (zh) | 一种基于节点树的数据展示方法与系统 | |
US8869030B2 (en) | Hierarchical representation of contextual information | |
CN115329753B (zh) | 一种基于自然语言处理的智能数据分析方法和系统 | |
US7269592B2 (en) | Computer system | |
US8706751B2 (en) | Method for providing a user interface driven by database tables | |
CN115617774A (zh) | 基于配置管理系统的数据处理方法、装置和计算机设备 | |
CA3194059A1 (en) | Data extraction in industrial automation systems | |
CN111309704B (zh) | 数据库操作方法和数据库操作系统 | |
CN109885542A (zh) | 项目文件管理方法、装置及存储介质 | |
CN116010679A (zh) | 数据处理方法和电子设备 | |
CN117312307A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |