CN112528291B - 一种基于知识图谱的代码审计方法及装置 - Google Patents
一种基于知识图谱的代码审计方法及装置 Download PDFInfo
- Publication number
- CN112528291B CN112528291B CN202011482658.2A CN202011482658A CN112528291B CN 112528291 B CN112528291 B CN 112528291B CN 202011482658 A CN202011482658 A CN 202011482658A CN 112528291 B CN112528291 B CN 112528291B
- Authority
- CN
- China
- Prior art keywords
- code
- knowledge
- knowledge graph
- audit
- code segments
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/36—Creation of semantic tools, e.g. ontology or thesauri
- G06F16/367—Ontology
Abstract
本申请公开了一种基于知识图谱的代码审计方法及装置,用以满足分布式系统的代码审计需求,适用于多层次多粒度的代码审计场景。方法包括:从分布式系统的源代码库中获取待审计的第一代码段;从源代码库对应的第一知识图谱中提取与第一代码段对应的第一实体存在逻辑关系的第一知识,第一知识包括与第一实体存在逻辑关系的第二实体,以及第一实体与第二实体的逻辑关系;其中,第一知识图谱用于描述源代码库中包括的不同代码段对应的实体之间的逻辑关系;生成第一审计报告,第一审计报告用于描述第一知识。
Description
技术领域
本申请涉及计算机安全技术领域,特别涉及一种基于知识图谱的代码审计方法及装置。
背景技术
近些年,随着电子商务、移动支付、人工智能等创新应用的不断发展,分布式架构逐渐被各个主流大型系统采用,其匹配代码的审计方法已经跟不上架构的发展。目前所采用的代码审计产品主要针对单独的程序主体,只对代码中的安全漏洞进行审计,无法支持复杂的分布式架构的代码审计需求。
发明内容
本申请实施例提供了一种基于知识图谱的代码审计方法,用以满足分布式架构的代码审计需求。
第一方面,本申请实施例提供了一种基于知识图谱的代码审计方法,包括从分布式系统的源代码库中获取待审计的第一代码段;
从所述源代码库对应的第一知识图谱中提取与所述第一代码段对应的第一实体存在逻辑关系的第一知识,所述第一知识包括与所述第一实体存在逻辑关系的第二实体,以及所述第一实体与所述第二实体的逻辑关系;
其中,所述第一知识图谱用于描述所述源代码库中包括的不同代码段对应的实体之间的逻辑关系;
生成第一审计报告,所述第一审计报告用于描述所述第一知识。
本申请提供的方案中将知识图谱技术应用在代码审计中,相比于现有技术中仅可以实现对代码底层的漏洞进行审计,本申请生成的审计报告包括多段代码对应的实体之间的逻辑关系,可以实现更高层次的代码审计,满足当前快速发展的分布式系统的代码审计需求。
在一种可能的实现方式中,生成所述第一知识图谱,包括:
读取分布式系统的源代码库包括的N个代码段,N为正整数;
对所述N个代码段进行清洗;
根据所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体,不同的代码段的类别对应不同的实体,其中,M为小于或者等于N的正整数;
根据所述N个代码段之间的逻辑关系确定所述M个实体之间的逻辑关系,以生成所述第一知识图谱。
基于上述方案,由于分布式系统包含的源代码类型、编程方式多种多样,本申请包含对源代码进行清洗,简化了审计的流程,节约计算资源。并且上述方案还包括识别分布式系统源代码库中的代码对应的实体,利用各实体之间的逻辑关系生成知识图谱用于代码审计,不再简单地针对源代码底层的漏洞进行审计,实现分布式系统需求的更高层次的代码审计。
在一种可能的实现方式中,所述N个代码段所属的类别包括前端、微服务、配置、第三方库、类、对象、属性、数据库表、字段或者中间件。
上述方案中,不同于现有技术中固定的审计工具针对单一的类别进行审计,本申请可以根据需求较全面地实现对分布式系统中多种类别的代码段进行审计,使得审计结果更具全面性。
在一种可能的实现方式中,在生成所述第一知识图谱之前,还包括:
确定所需构建的第一知识图谱的审计模式为第一审计模式,不同的审计模式对应不同的类别配置信息,不同的类别配置信息中支持识别的类别数不同;
根据所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体,包括:
根据所述第一审计模式对应的类别配置信息,识别所述N个代码段分别所属的类别,并根据识别的所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体。
基于上述方案,本申请在生成知识图谱之前,可以首先根据不同的用户需求构建不同的审计模式,支持用户对于不同的召回率、准确率的需求,能够支撑多粒度的代码审计场景。
在一种可能实现的方式中,本申请提供的方法还可以包括:
监控到所述分布式系统的源代码库发生更新时,获取分布式系统的源代码库中更新的K个代码段,K为正整数;
将所述K个代码段的知识更新到所述第一知识图谱中得到第二知识图谱;
从所述第二知识图谱中提取与所述K个代码段对应的实体存在逻辑关系的第二知识;
生成第二审计报告,所述第二审计报告用于描述所述第二知识。
基于上述设计,获取分布式系统的源代码库中更新的代码,将更新的代码对应的知识更新到原有的知识图谱中,实现了动态审计,并且对该分布式系统进行了更高层级的代码审计。
第二方面,基于与第一方面同样的发明构思,本申请实施例提供了一种基于知识图谱的代码审计装置,所述基于知识图谱的代码审计装置可以包括用于实现上述第一方面任一种可能实现的方式,有益效果可以参见第一方面,此处不再赘述。基于知识图谱的代码审计装置包括:
获取模块,用于从分布式系统的源代码库中获取待审计的第一代码段;
处理模块,用于从所述源代码库对应的第一知识图谱中提取与所述第一代码段对应的第一实体存在逻辑关系的第一知识,所述第一知识包括与所述第一实体存在逻辑关系的第二实体,以及所述第一实体与所述第二实体的逻辑关系;
其中,所述第一知识图谱用于描述所述源代码库中包括的不同代码段对应的实体之间的逻辑关系;
所述处理模块,还用于生成第一审计报告,所述第一审计报告用于描述所述第一知识。
在一种示例性地的实现方式中,所述获取模块,还用于读取分布式系统的源代码库包括的N个代码段,N为正整数;
所述处理模块,还用于对所述N个代码段进行清洗;根据所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体,不同的代码段的类别对应不同的实体,其中,M为小于或者等于N的正整数;根据所述N个代码段之间的逻辑关系确定所述M个实体之间的逻辑关系,以生成所述第一知识图谱。
在一种示例性地的实现方式中,所述N个代码段所属的类别包括前端、微服务、配置、第三方库、类、对象、属性、数据库表、字段或者中间件。
在一种示例性地的实现方式中,所述处理模块,在生成所述第一知识图谱之前,还用于:
确定所需构建的第一知识图谱的审计模式为第一审计模式,不同的审计模式对应不同的类别配置信息,不同的类别配置信息中支持识别的类别数不同;
所述处理模块,在根据所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体时,具体用于:
根据所述第一审计模式对应的类别配置信息,识别所述N个代码段分别所属的类别,并根据识别的所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体。
在一种示例性地的实现方式中,所述装置还包括:
监控模块,用于监控到所述分布式系统的源代码库发生更新;
所述获取模块,还用于获取分布式系统的源代码库中更新的K个代码段,K为正整数;
所述处理模块,还用于将所述K个代码段的知识更新到所述第一知识图谱中得到第二知识图谱。
在一种示例性地的实现方式中,所述处理模块还用于:
从所述第二知识图谱中提取与所述K个代码段对应的实体存在逻辑关系的第二知识;
生成第二审计报告,所述第二审计报告用于描述所述第二知识。
第三方面,提供了一种基于知识图谱的代码审计装置,所述装置包括处理器和存储器。存储器用于存储计算机执行指令,处理器执行存储器中的计算机执行指令以利用控制器中的硬件资源执行第一方面或第一方面任一种可能实现方式中方法的操作步骤。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
另外,第二方面至第四方面的有益效果可以参见如第一方面所述的有益效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。
图1为本申请实施例提供的审计架构示意图;
图2为本申请实施例提供的一种生成知识图谱的方法流程图;
图3为本申请实施例提供的一种可能的实现方式的流程图;
图4为本申请实施例提供的另一种可能的实现方式的流程图;
图5为本申请实施例提供的一种具有代码审计功能的装置示意图;
图6为本申请实施例提供的另一种具有代码审计功能的装置示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前所使用的各类代码审计产品用于对源代码底层的漏洞、指令、危险操作进行审计,功效简单,无法实现针对目前日益发展完善的架构规范的分布式系统进行更高层次的审计。基于此,本申请实施例提供了一种基于知识图谱的代码审计的方法。具体的,根据分布式系统中的各段源代码所属的类别及各类别之间的关系生成知识图谱,可以更加直观、全面的展示分布式系统中各段代码之间的逻辑关系,实现对分布式系统更高层次的代码审计需求。
本申请实施例提出的基于知识图谱的代码审计方法可以应用于不同的审计场景,例如,安全扫描、架构分析、方案评估、绩效监控、审计值守等场景。
为了便于理解本申请实施例,首先以图1示出的审计架构图为例进行具体说明。
在图1所示的审计架构图中,具体包括分布式系统的源代码库101,代码审计系统102。需要说明的是,审计架构中分布式系统的源代码库101可以包括一个或多个分布式系统的源代码。需要说明的是,图1仅作为一种示例,并不对审计架构包括的源代码库101的数量进行限定。
本申请涉及的分布式系统的源代码库101用于存储开发人员编写的分布式系统的多个源代码段。例如,分布式系统的源代码库101可以是开放源代码的版本控制系统(subversion,SVN),分布式版本控制系统(Git),软件配置管理系统(Softwareconfiguration management,SCM)等。为了便于描述,以下将分布式系统的源代码库简称为源代码库。
本申请涉及的代码审计系统102是一种可以用于实现代码审计功能的系统,用于提取源代码库101中的代码并监控源代码库101中的源代码是否有更新。代码审计系统的功能可以由一个或多个服务器来实现。代码审计系统具体实现的功能包括:提取代码、定义实体、定义关系、知识抽取、检测漏洞、生成并发送审计报告等。
下面结合图1所示的代码审计架构对本申请实施例提供的代码审计方法流程进行详细说明。为了便于理解本申请实施例,首先对知识图谱的概念进行解释。知识图谱,是通过将应用数学、图形学、信息可视化技术、信息科学等学科的理论与方法与计量学引文分析、共现分析等方法结合,并利用可视化的图谱形象地展示学科的核心结构、发展历史、前沿领域以及整体知识架构达到多学科融合目的的现代理论。知识图谱是由多条知识构成的,每一条知识包含两个实体及实体之间的逻辑关系。
本申请实施例将知识图谱技术应用于代码审计,提出一种基于知识图谱的代码审计方法。
下面在描述本申请提供的基于知识图谱的代码审计方法过程之前,对生成知识图谱的过程进行详细介绍。为了便于描述,将对分布式系统生成的知识图谱称为第一知识图谱。
参见图2所示,为一种应用于分布式系统的知识图谱的生成方法流程示意图。
201,读取分布式系统的源代码库包括的N个代码段,N为正整数。
202,对所述N个代码段进行清洗。
在完成代码段的清洗后,执行构建知识图谱的流程。从构建逻辑上可以将构建知识图谱的流程划分为:实体定义、关系定义和知识抽取。
如下对实体定义、关系定义和知识抽取具体实现过程进行详细说明。
203,实体定义,根据所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体,不同的代码段的类别对应不同的实体,其中,M为小于或者等于N的正整数。
其中,所述N个代码段所属的类别包括但仅不限于前端、微服务、配置、第三方库、类、对象、属性、数据库表、字段或者中间件。
204,关系定义,根据所述N个代码段之间的逻辑关系确定所述M个实体之间的逻辑关系。
205,知识抽取,根据M个实体和M个实体之间的逻辑关系获得用于构建第一知识图谱的知识,得到第一知识图谱。
可选地,所述M个实体之间的逻辑关系包括但不限于包含、依赖、引用、关联等。最后,根据M个实体及M个实体之间的逻辑关系生成第一知识图谱。
在本申请实施例中,生成第一知识图谱时,首先需要对所述N个代码段进行清洗,具体可以包括对N个代码段中的无效代码进行清洗。其中,无效的代码包括N个代码段中包括的注释代码或者配置代码等等。在一种可能的情况下,可以使用清洗逻辑对无效的代码进行清洗,所述清洗逻辑可以是提前配置在代码审计系统中的。在另一种可能的情况下,清洗无效代码之前,首先确定需要清洗的N个代码段中所述无效代码与有效代码的关联关系。在确定无效代码与有效代码是关联的情况下,可以使用关系转换逻辑规则将所述无效代码数据与有效代码数据的关联关系进行更新,使无效代码与有效代码解除关联,然后再对无效代码进行清洗。所述关系转换逻辑规则可以是预先配置在代码审计系统中。
本申请实施例中,在构建分布式系统的第一知识图谱时,还可以根据用户的不同需求来构建知识图谱。比如,审计人员可以在代码审计系统中配置审计模式,不同的审计模式对应不同的类别配置信息,不同的类别配置信息中支持识别的类别数不同。
具体以审计人员配置的审计模式为第一审计模式为例,在构建第一知识图谱之前,代码审计系统确定所需构建的第一知识图谱的审计模式为第一审计模式,然后在执行根据所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体时,可以通过如下方式实现:
根据所述第一审计模式对应的类别配置信息,识别所述N个代码段分别所属的类别,并根据识别的所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体。
可选地,审计模式可以包括但不仅限于:不同召回率对应的模式、不同识别率对应的模式,iso端与表的关系、微服务与数据字段之间的关系等。
应理解的是,召回率越高,类别的数量越多。准确率越高,类别的数量越少。
例如,当用户主要关注高准确率时,审计人员可以在代码审计系统中配置的第一审计模式为高识别率对应的模式。在第一审计模式配置成功后,代码审计系统服务器会根据高准确率对应的模式来进行代码审计。具体需要确定相对较少的实体来保证识别的准确率。采用不同的审计模式对应不同的需求,支持不同的审计模式,能够支撑多粒度的代码审计场景。
参见图3所示,为一种基于知识图谱的代码审计方法流程示意图。该代码审计方法可以由代码审计系统来实现。该方法包括:
301,从分布式系统的源代码库中获取待审计的第一代码段。
在一种可能实现的方式中,代码审计系统可以根据审计需求从源代码库中获取待审计的代码段。审计需求可以是审计人员配置在代码审计系统的。本申请实施例中一个代码段为例,为了便于描述,将待审计的代码段称为第一代码段。
示例性地,源代码库中包括的代码段包括但不限于前后端代码脚本程序等。代码段的源码类型可以包括python、java、C++、go或者js等等,在此不做具体限定。
302,从所述源代码库对应的第一知识图谱中提取与所述第一代码段对应的第一实体存在逻辑关系的第一知识,所述第一知识包括与所述第一实体存在逻辑关系的第二实体,以及所述第一实体与所述第二实体的逻辑关系;其中,所述第一知识图谱用于描述所述源代码库中包括的不同代码段对应的实体之间的逻辑关系。
例如,逻辑关系包括但不限于包含、依赖、引用、关联等。
作为一种举例,所述第一代码段对应的第一实体为微服务,与所述第一实体存在逻辑关系的第二实体为第三方库,作为一种举例,微服务引用第三方库中的代码。因此,第一知识图谱的知识中包括微服务与第三方库的逻辑关系。该第一实体(微服务)、第二实体(第三方库)以及微服务与第三方库的逻辑关系可以包含在第一知识中。
303,生成第一审计报告,所述第一审计报告用于描述所述第一知识。
可选地,所述第一审计报告的形式包括但不限于文档、表格、图片等等。代码审计系统生成审计报告后,可以通过邮件、短信等多种方式通知开发人员。
接着,第一知识包括第一实体(微服务)、第二实体(第三方库)以及微服务与第三方库的逻辑关系的举例,进一步的举例来说,当生成第一知识后,会触发代码审计系统生成邮件,通过邮件将微服务与第三方库构成的第一知识通知给开发人员。或者,当代码审计系统检测到微服务的代码中存在漏洞时,也会触发代码审计系统生成邮件,通过邮件将所述第一知识通知给开发人员。
作为另一种举例,代理审计系统中包括显示设备,代码审计系统在确定微服务的代码中存在漏洞时,生成表格或者图片等,并通过显示设备显示。
以图4为例,进一步说明在源代码库存在更新的情况下,实现基于知识图谱的代码审计方法。该代码审计方法可以由代码审计系统来实现,该方法包括:
401,监控到所述分布式系统的源代码库发生更新时,获取分布式系统的源代码库中更新的K个代码段,K为正整数。
在一种可能的方式中,代码审计系统与源代码库是相连接的,代码审计系统可以根据审计需求实时地或者周期性地监控源代码库。下面,结合不同的监控方式进行具体说明。
一种监控方式:代码审计系统可以根据审计需求实时地监控源代码库。代码审计系统与源代码库是相连接的,当源代码库中的某段源代码发生更新时,会通知到代码审计系统。可选地,当源代码库发生更新时,可以向代码审计系统发送通知,代码审计系统接收到通知后,可以根据通知获取更新的代码进行审计。或者,当源代码库发生更新时,在代码审计系统的显示屏上弹出代码更新的提示页面,从而审计人员可以根据提示页面,在代码审计系统触发对更新的代码段进行审计的指令。代码审计系统根据指令从源代码库中获取更新的代码。
另一种监控方式:代码审计系统可以根据审计需求周期性地监控源代码库。代码审计系统周期性的监控源代码库,在检测到源代码库中的某段代码有更新时,获取更新的代码段。可选地,代码审计系统监控源代码库的周期可以是1小时、1天或者1个星期。
所述分布式系统的源代码库发生更新,可以包括多种情况。作为一种举例,可以是源代码库中的K1个代码段发生变更,在这种情况下,变更后的K1个代码段将覆盖变更前的K1个代码段。进一步地,代码审计系统获取变更后的K1个代码段。
作为另一种举例,所述分布式系统的源代码库发生更新还可以是源代码库中增加了K2个代码段,在这种情况下,代码审计系统将获取更新后的K2个代码段。
402,所述K个代码段的知识更新到所述第一知识图谱中得到第二知识图谱;从所述第二知识图谱中提取与所述K个代码段对应的实体存在逻辑关系的第二知识。
可选地,第二知识图谱可以是三维图谱也可以是二维图谱,在此不做限定。
作为一种举例,所述分布式系统的源代码库发生更新是源代码库中的K1个代码段发生更新的情况下,代码审计系统获取更新后的K1个代码段。将更新后的K1个代码段的知识更新到所述第一知识图谱中得到第二知识图谱,并从所述第二知识图谱中提取与所述K个代码段对应的实体存在逻辑关系的第二知识。例如,K1个代码段中包括代码段1,代码段1对应的实体可以是第三方库。第一知识图谱包含第三方库与微服务及第三方库与微服务之间的逻辑关系构成的第一知识。
当K1个代码段发生更新后,代码审计系统将更新后的K1个代码段更新到第一知识图谱中,并重新定义第三方库与微服务之间的逻辑关系得到第二知识图谱。再进一步从所述第二知识图谱中提取更新后的第三方库与微服务及第三方库与微服务之间的逻辑关系构成的第二知识。
作为另一种举例,所述分布式系统的源代码库发生更新是源代码库中增加了K2个代码段。将更新后的K2个代码段的知识更新到所述第一知识图谱中得到第二知识图谱,并从所述第二知识图谱中提取与所述K2个代码段对应的实体存在逻辑关系的第二知识。例如,新增的K2个代码段中包括代码段2,代码段2对应的实体可以是第三方库中间件。第二知识图谱中,与第三方中间件存在关系的实体包括微服务和第三方库。进一步地,从所述第二知识图谱中提取与第三方库中间件存在逻辑关系的第二知识中包括微服务、第三方库、第三方库中间件以及微服务、第三方库与第三方库三者之间的逻辑关系。比如,微服务与第三方库中间件之间的关系可以是引用关系,微服务与第三方库之间的关系是引用关系,第三方库中间件与第三方库之间的关系是依赖关系。
403,生成第二审计报告,所述第二审计报告用于描述所述第二知识。
同上述步骤303,本申请实施例对第二审计报告的类型以及发送第二审计报告的方式不作具体限定。
接着,第二知识包括微服务、第三方库、第三方库中间件以及微服务、第三方库与第三方库的逻辑关系的举例,进一步来说,以通过邮件方式将第二知识通知给开发人员为例,当生成第二知识后,会触发代码审计系统生成邮件,通过邮件将微服务、第三方库与第三方库中间件构成的第二知识以审计报告的形式通知给开发人员。或者,当代码审计系统检测到第三方库中间件的代码存在漏洞时,也会触发代码审计系统生成邮件,通过邮件将微服务、第三方库与第三方库中间件构成的第二知识通知给开发人员。又或者,当第三方库中间件与微服务和第三方库建立逻辑关系时,在运行微服务的过程中,可能会发生第三方库中间件的代码与第三方库的代码组合后失效的情况,失效情况发生时会产生失效语句。当代码审计系统检测到失效语句时,会触发代码审计系统生成邮件,通过邮件将微服务、第三方库与第三方库中间件构成的第二知识通知给开发人员。
可选地,代理审计系统中还可以包括显示设备,代码审计系统在确定微服务的代码中存在漏洞时,生成表格或者图片等,并通过显示设备显示。
基于与上述方法的同一构思,如图5所示,提供了一种具有代码审计功能的装置500。装置500能够执行上述方法中数据统计平台执行的各个步骤,为了避免重复,此处不再详述。装置500包括:获取模块501、处理模块502、监控模块503。
获取模块501,用于从分布式系统的源代码库中获取待审计的第一代码段;
处理模块502,用于从所述源代码库对应的第一知识图谱中提取与所述第一代码段对应的第一实体存在逻辑关系的第一知识,所述第一知识包括与所述第一实体存在逻辑关系的第二实体,以及所述第一实体与所述第二实体的逻辑关系;
其中,所述第一知识图谱用于描述所述源代码库中包括的不同代码段对应的实体之间的逻辑关系;
所述处理模块502,还用于生成第一审计报告,所述第一审计报告用于描述所述第一知识。
在一种示例性地的实现方式中,所述获取模块501,还用于读取分布式系统的源代码库包括的N个代码段,N为正整数;
所述处理模块502,还用于对所述N个代码段进行清洗;根据所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体,不同的代码段的类别对应不同的实体,其中,M为小于或者等于N的正整数;根据所述N个代码段之间的逻辑关系确定所述M个实体之间的逻辑关系,以生成所述第一知识图谱。
在一种示例性地的实现方式中,所述N个代码段所属的类别包括前端、微服务、配置、第三方库、类、对象、属性、数据库表、字段或者中间件。
在一种示例性地的实现方式中,所述处理模块502,在生成所述第一知识图谱之前,还用于:
确定所需构建的第一知识图谱的审计模式为第一审计模式,不同的审计模式对应不同的类别配置信息,不同的类别配置信息中支持识别的类别数不同;
所述处理模块502,在根据所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体时,具体用于:
根据所述第一审计模式对应的类别配置信息,识别所述N个代码段分别所属的类别,并根据识别的所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体。
在一种示例性地的实现方式中,所述装置还包括:
监控模块503,用于监控到所述分布式系统的源代码库发生更新;
所述获取模块501,还用于获取分布式系统的源代码库中更新的K个代码段,K为正整数;
所述处理模块502,还用于将所述K个代码段的知识更新到所述第一知识图谱中得到第二知识图谱。
在一种示例性地的实现方式中,所述处理模块502还用于:
从所述第二知识图谱中提取与所述K个代码段对应的实体存在逻辑关系的第二知识;
生成第二审计报告,所述第二审计报告用于描述所述第二知识。
图6示出了本发明实施例提供的另一种基于知识图谱的代码审计装置600结构示意图。代码审计装置600还可以包括通信接口603,代码审计装置600可以通过该通信接口603传输数据。
在本申请实施例中,存储器602存储有可被至少一个处理器601执行的指令,至少一个处理器601通过执行存储器602存储的指令,可以用于执行前述代码审计系统所执行的步骤。
其中,处理器601是代码审计装置600的控制中心,可以利用各种接口和线路连接整个代码审计装置600的各个部分,通过运行或执行存储在存储器602内的指令以及调用存储在存储器602内的数据。可选的,处理器601可包括一个或多个处理单元,处理器601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器601中。在一些实施例中,处理器601和存储器602可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器601可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的数据统计平台所执行的步骤可以直接由硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器602作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器602可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器602是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器602还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通过对处理器601进行设计编程,例如,可以将前述实施例中介绍的代码审计方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行前述的代码审计方法的步骤,如何对处理器601进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (8)
1.一种基于知识图谱的代码审计方法,其特征在于,包括:
从分布式系统的源代码库中获取待审计的第一代码段;
从所述源代码库对应的第一知识图谱中提取与所述第一代码段对应的第一实体存在逻辑关系的第一知识,所述第一知识包括与所述第一实体存在逻辑关系的第二实体,以及所述第一实体与所述第二实体的逻辑关系;
生成第一审计报告,所述第一审计报告用于描述所述第一知识;
其中,所述第一知识图谱用于描述所述源代码库中包括的不同代码段对应的实体之间的逻辑关系;采用如下方式生成所述第一知识图谱:
确定所需构建的第一知识图谱的审计模式为第一审计模式,不同的审计模式对应不同的类别配置信息,不同的类别配置信息中支持识别的类别数不同;
读取分布式系统的源代码库包括的N个代码段,N为正整数;对所述N个代码段进行清洗;
根据所述第一审计模式对应的类别配置信息,识别所述N个代码段分别所属的类别,并根据识别的所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体;其中,M为小于或者等于N的正整数;
根据所述N个代码段之间的逻辑关系确定所述M个实体之间的逻辑关系,以生成所述第一知识图谱;
其中,所述审计模式包括不同召回率对应的审计模式、不同识别率对应的审计模式、iso端与表的关系以及微服务与数据字段之间的关系;其中,对所述N个代码段进行清洗,具体包括:采用预先配置的关系转换逻辑规则解除所述N个代码段中包括的无效代码数据和有效代码数据的关联关系;对所述无效代码数据进行清洗。
2.如权利要求1所述的方法,其特征在于,所述N个代码段所属的类别包括前端、微服务、配置、第三方库、类、对象、属性、数据库表、字段或者中间件。
3.如权利要求1或2所述的方法,其特征在于,所述方法还包括:
监控到所述分布式系统的源代码库发生更新时,获取分布式系统的源代码库中更新的K个代码段,K为正整数;
将所述K个代码段的知识更新到所述第一知识图谱中得到第二知识图谱。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
从所述第二知识图谱中提取与所述K个代码段对应的实体存在逻辑关系的第二知识;
生成第二审计报告,所述第二审计报告用于描述所述第二知识。
5.一种基于知识图谱的代码审计装置,其特征在于,包括:
获取模块,用于从分布式系统的源代码库中获取待审计的第一代码段;
处理模块,用于从所述源代码库对应的第一知识图谱中提取与所述第一代码段对应的第一实体存在逻辑关系的第一知识,所述第一知识包括与所述第一实体存在逻辑关系的第二实体,以及所述第一实体与所述第二实体的逻辑关系;
所述处理模块,还用于生成第一审计报告,所述第一审计报告用于描述所述第一知识;
其中,所述第一知识图谱用于描述所述源代码库中包括的不同代码段对应的实体之间的逻辑关系;所述处理模块,还用于生成所述第一知识图谱,具体执行:
确定所需构建的第一知识图谱的审计模式为第一审计模式,不同的审计模式对应不同的类别配置信息,不同的类别配置信息中支持识别的类别数不同;
通过所述获取模块读取分布式系统的源代码库包括的N个代码段,N为正整数;对所述N个代码段进行清洗;
根据所述第一审计模式对应的类别配置信息,识别所述N个代码段分别所属的类别,并根据识别的所述N个代码段分别所属的类别确定用于构建所述第一知识图谱的M个实体;其中,M为小于或者等于N的正整数;
根据所述N个代码段之间的逻辑关系确定所述M个实体之间的逻辑关系,以生成所述第一知识图谱;
其中,所述审计模式包括不同召回率对应的审计模式、不同识别率对应的审计模式、iso端与表的关系以及微服务与数据字段之间的关系;其中,在对所述N个代码段进行清洗时,所述处理模块,具体用于:采用预先配置的关系转换逻辑规则解除所述N个代码段中包括的无效代码数据和有效代码数据的关联关系;对所述无效代码数据进行清洗。
6.如权利要求5所述的装置,其特征在于,所述装置还包括:
监控模块,用于监控到所述分布式系统的源代码库发生更新;
所述获取模块,还用于获取分布式系统的源代码库中更新的K个代码段,K为正整数;
所述处理模块,还用于将所述K个代码段的知识更新到所述第一知识图谱中得到第二知识图谱。
7.一种基于知识图谱的代码审计装置,其特征在于,包括处理器和存储器,
所述存储器,用于存储计算机程序或指令;
所述处理器,用于执行存储器中的计算机程序或指令,使得权利要求1-4中任一项所述的方法被执行。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被计算机调用时,使所述计算机执行如权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011482658.2A CN112528291B (zh) | 2020-12-15 | 2020-12-15 | 一种基于知识图谱的代码审计方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011482658.2A CN112528291B (zh) | 2020-12-15 | 2020-12-15 | 一种基于知识图谱的代码审计方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112528291A CN112528291A (zh) | 2021-03-19 |
CN112528291B true CN112528291B (zh) | 2022-09-16 |
Family
ID=75000369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011482658.2A Active CN112528291B (zh) | 2020-12-15 | 2020-12-15 | 一种基于知识图谱的代码审计方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112528291B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874261A (zh) * | 2017-03-17 | 2017-06-20 | 中国科学院软件研究所 | 一种基于语义三角的领域知识图谱及查询方法 |
CN107609052A (zh) * | 2017-08-23 | 2018-01-19 | 中国科学院软件研究所 | 一种基于语义三角的领域知识图谱的生成方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334212A (zh) * | 2019-07-01 | 2019-10-15 | 南京审计大学 | 一种基于机器学习的领域性审计知识图谱构建方法 |
CN111949800A (zh) * | 2020-07-06 | 2020-11-17 | 北京大学 | 一种开源项目知识图谱的建立方法和系统 |
CN111813960B (zh) * | 2020-07-29 | 2023-11-17 | 深圳供电局有限公司 | 基于知识图谱的数据安全审计模型装置、方法及终端设备 |
-
2020
- 2020-12-15 CN CN202011482658.2A patent/CN112528291B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874261A (zh) * | 2017-03-17 | 2017-06-20 | 中国科学院软件研究所 | 一种基于语义三角的领域知识图谱及查询方法 |
CN107609052A (zh) * | 2017-08-23 | 2018-01-19 | 中国科学院软件研究所 | 一种基于语义三角的领域知识图谱的生成方法及装置 |
Non-Patent Citations (3)
Title |
---|
基于知识图谱和信息指纹的非结构化数据审计研究;王鑫等;《第三届智能电网会议论文集——智能用电》;20191028;全文 * |
基于知识图谱的医保审计方法分析;李真等;《财会通讯》;20200110;全文 * |
基于知识图谱的审计方法研究;樊世昊;《中国优秀硕士学位论文全文数据库经济与管理科学辑》;20181115;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112528291A (zh) | 2021-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8640110B2 (en) | Business object service simulation | |
US9372688B1 (en) | Automatic discovery of a JavaScript API | |
US20170060568A1 (en) | Software development and distribution platform | |
CN107015791B (zh) | 一种生成图表组件系统的处理方法、装置及系统 | |
CN113268243B (zh) | 内存预测方法及装置、存储介质、电子设备 | |
CN108170425B (zh) | 一种程序代码的修改方法、修改装置及终端设备 | |
CN111858252B (zh) | 基于前端框架的动态埋点方法及装置 | |
US9367307B2 (en) | Staged points-to analysis for large code bases | |
Romero et al. | Integration of DevOps practices on a noise monitor system with CircleCI and Terraform | |
CN112528291B (zh) | 一种基于知识图谱的代码审计方法及装置 | |
CN112463518A (zh) | 基于Flutter的页面全生命周期监控方法、装置、设备及存储介质 | |
CN116541069A (zh) | 关键函数评估方法、装置、电子设备、介质和程序产品 | |
CN115809056A (zh) | 组件复用实现方法、装置和终端设备、可读存储介质 | |
US8615744B2 (en) | Methods and system for managing assets in programming code translation | |
CN110554892A (zh) | 信息获取方法和装置 | |
CN112068895B (zh) | 代码配置方法、装置、视频播放设备及存储介质 | |
CN114356290A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN114064712A (zh) | 数据访问方法、装置、电子设备及计算机可读存储介质 | |
CN112596781A (zh) | 一种业务执行以及业务配置方法及装置 | |
CN107451050B (zh) | 函数获取方法和装置、服务器 | |
CN108628909B (zh) | 信息推送方法和装置 | |
CN113805990B (zh) | 展位页面处理方法、装置、设备及系统 | |
CN117076332B (zh) | 一种测试用例的测试方法、装置、电子设备及存储介质 | |
CN116340102B (zh) | 一种内存溢出监测方法、装置、设备及存储介质 | |
US10691521B2 (en) | Using telemetry to drive high impact accessibility issues |
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 |