分级方法、开源软件扫描方法及装置与流程

文档序号:25168775发布日期:2021-05-25 14:37阅读:173来源:国知局
分级方法、开源软件扫描方法及装置与流程

本发明涉及数据处理领域,特别涉及信息安全技术领域,具体涉及分级方法、开源软件扫描方法及装置。



背景技术:

开源软件(open-source)是指其源码可以被公众使用的软件,此软件的使用、修改、分发不受许可证的限制。开源软件被散布在全世界的编程者队伍所开发,同时也会有一些大学、政府机构承包商、协会和商业公司在开发。源代码的开发是信息技术发展引发网络革命所带来的面向未来以开放创新、共同创新为特点、以人为本的创新模式。

开源软件因其友好的协议和开放式的协作开发模式,使其自身数量成指数的增长,各行各业尤其是互联网技术行业对其使用及依赖更为凸出。

举例,如果说ai是异常饕餮盛宴,数据是原材料,算力是天然气,算法是菜谱,那么开源软件犹如无数厨师经验与智慧合著的一本永不完结的烹饪百科全书,其它厨师可以从中汲取经验来快速完成菜品,也可以指出书中的问、贡献更多的创意。经无数人的完善后终成神作。

相关统计显示,全球开源项目数量呈指数级增长,截止2019年github托管仓库已有1.4亿个,2019年新增仓库4400万个,创建第一个项目的用户比2018年增加44%,据sourceclear调查报告预测,2026年全球开源项目的数量将超过3亿。据通信院调查显示,2019年我国企业已经使用开源技术的企业占比为87.4%。

开源软件爆炸式的增长,也催生出各种各样的开源软件制品管理工具,这些制品管理工具共通的一个特点是需要管理自己的制品,同时还需要与中央仓库中的制品做比对,比对的目的有多种,例如:比对制品使用到的开源软件合法性、比对制品使用到的开源软件是否在于cnnvd漏洞库中、比对制品使用到的开源软件是否已经在企业制品管理中登记。

比对的过程是明确的,拿着企业制品库中的制品用到的开源软件(子集)去遍历中央仓库中的开源软件(全集),如果说全集的数量级按现有的数据量来计算为约2亿开源软件,企业制品用到的开源软件数据量据调查常用的约3万款,也即制品管理中心在进行制品使用对比时以3万的子集去2亿全集中做轮询,这显然是一个浩大的功能,且不说设备投入,仅是执行一次的时间上来看也是一项成本极高的企业运作。其效率也是企业所不能接受的。



技术实现要素:

针对现有技术中的问题,本发明提供的一种分级方法、开源软件扫描方法及装置,其分级方法包括:根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重;根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级。可以看出,本发明克服业界对制品使用开源软件对比扫描效率低,耗费成本高的难题,通过一种分级的扫描模型来解决企业遇到的难题,提升企业对开源软件管理的效能,同时通过开源软件在内置仓库中的分级策略,可以大幅提升工具比对开源软件的效率。

为解决上述技术问题,本发明提供以下技术方案:

本发明实施方式提供一种分级方法,包括:

根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重;

根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级。

在优选的实施方式中,所述根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重,包括:

确定每个企业制品所使用的开源软件的标识码;

将所述标识码与所述企业内置开源软件仓库中的所有开源软件的标识码配对;

若配对成功,则使所述企业内置开源软件仓库中的对应开源软件的权重值增加一设定值;

其中,所述根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级,包括:在设定时长之后,根据所述权重值的大小对所述企业内置开源软件仓库中的每个开源软件进行分级。

在优选的实施方式中,所述分级包括:核心重要等级、核心等级、重要等级、普通等级以及极少使用等级。

在优选的实施方式中,所述确定每个企业制品所使用的开源软件的标识码,包括:

针对每个制品,通过调用对应企业的企业构建工具对外曝露的接口,获取企业当前设定周期内构建的版本库和git分支信息;

根据所述版本库和所述git分支信息下载该制品对应的全量代码;

解析所述全量代码的git分支中jar或pom文件中定义的依赖关系,确定该制品所使用的开源软件的标识码。

在优选的实施方式中,所述标识码为md5值或指纹码。

在优选的实施方式中,若配对失败,所述根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重,还包括:

将所述标识码与开源软件中央仓库中所有开源软件的标识码配对;

将配对一致的开源软件增加到所述企业内置开源软件仓库中,并设置初始权重值。

本发明实施方式进一步提供一种开源软件扫描方法,包括:

获取一企业制品所使用的开源软件;

将所述开源软件逐一与分级模型的多个开源软件数据库中的开源软件比对,直至比对成功为止;其中,所述分级模型是利用如权利要求1所述的分级方法对所述企业内置开源软件仓库中的每个开源软件进行分级得到。

本发明实施方式进一步提供一种分级装置,包括:

权重确定模块,根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重;

分级模块,根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级。

本发明实施方式进一步提供一种开源软件扫描装置,包括:

获取模块,获取一企业制品所使用的开源软件;

比对模块,将所述开源软件逐一与分级模型的多个开源软件数据库中的开源软件比对,直至比对成功为止;其中,所述分级模型是利用如上所述的分级方法对所述企业内置开源软件仓库中的每个开源软件进行分级得到。

本发明实施方式进一步提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的分级方法。

本发明实施方式进一步提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的分级方法。

由上述技术方案可知,本发明提供的一种分级方法、开源软件扫描方法及装置,其分级方法包括:根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重;根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级。可以看出,本发明克服业界对制品使用开源软件对比扫描效率低,耗费成本高的难题,通过一种分级的扫描模型来解决企业遇到的难题,提升企业对开源软件管理的效能,同时通过开源软件在内置仓库中的分级策略,可以大幅提升工具比对开源软件的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例中的分级方法的流程示意图。

图2是本发明实施例中的开源软件自动分级实例图。

图3是本发明实施例中的实施本发明分级前的框架流程图。

图4是本发明实施例中的实施本发明分级后的框架流程图。

图5是本发明实施例中的分级装置模块示意图。

图6是本发明实施例中的扫描装置模块示意图。

图7是本发明实施例中的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,本发明公开的分级方法、开源软件扫描方法及装置可用于信息安全技术领域,也可用于除信息安全技术领域之外的任意领域,本发明公开的分级方法、开源软件扫描方法及装置的应用领域不做限定。

开源软件爆炸式的增长,也催生出各种各样的开源软件制品管理工具,这些制品管理工具共通的一个特点是需要管理自己的制品,同时还需要与中央仓库中的制品做比对,比对的目的有多种,例如:比对制品使用到的开源软件合法性、比对制品使用到的开源软件是否在于cnnvd漏洞库中、比对制品使用到的开源软件是否已经在企业制品管理中登记。比对的过程是明确的,拿着企业制品库中的制品用到的开源软件(子集)去遍历中央仓库中的开源软件(全集),如果说全集的数量级按现有的数据量来计算为约2亿开源软件,企业制品用到的开源软件数据量据调查常用的约3万款,也即制品管理中心在进行制品使用对比时以3万的子集去2亿全集中做轮询,这显然是一个浩大的功能,且不说设备投入,仅是执行一次的时间上来看也是一项成本极高的企业运作。其效率也是企业所不能接受的。

有鉴于此,本发明的核心构思是提出一种分级模型,来确保企业制品开源软件使用对比时的效率大幅提升,同时还能够兼顾制品比对范围的全覆盖。

本发明提供一种分级方法、开源软件扫描方法及装置。在具体实施时,本发明的分级装置可以用于开源软件扫描,无需人工的介入,对接本装置提供的内置制品仓库(开源软件)、对接开源中央仓库,每次开源软件比对工具启动时同步触发本装置,同时本装置会在运行的过程当中通过智能分级模型动态的更新、调整内置制品仓库纳管开源软件的权重,从而调整该开源软件在比对工具扫描时的优先级。

本发明提供的一种分级方法、开源软件扫描方法及装置,根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重;根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级。可以看出,本发明克服业界对制品使用开源软件对比扫描效率低,耗费成本高的难题,通过一种分级的扫描模型来解决企业遇到的难题,提升企业对开源软件管理的效能,同时通过开源软件在内置仓库中的分级策略,可以大幅提升工具比对开源软件的效率。

具体通过下述多个实施例及应用实例分别进行说明。

在本发明的一个或多个实施例中,本发明通过一种装置,无需人工的介入,对接本装置提供的内置制品仓库(开源软件)、对接开源中央仓库,每次开源软件比对工具启动时同步触发本装置,同时本装置会在运行的过程当中通过智能分级模型动态的更新、调整内置制品仓库纳管开源软件的权重,从而调整该开源软件在比对工具扫描时的优先级。该方案对所有企业应用是支持无侵入性特点,仅需企业构建工具开发对外接口,暴露有限信息即可。该方案借助自研装置(制品管理中心比对工具),该装置与制品中央仓库有接口调用关系。

为了提供一种开源软件的分级方案,本发明提供一种分级方法的实施例,参见图1,其具体包含有如下内容:

s101:根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重。

在步骤s101中,企业制品是企业开发出的一个集成程序软件或集成系统,其应当包括多个开源软件,每个开源软件负责其中一个子功能的实现,一般而言,一个企业制品包括2-400个以内开源软件,其数量根据企业制品的复杂度确定。

举例而言,对于普通单一的企业制品,可能仅仅包括数十个开源软件,对于集成度较高的企业系统,其可能包括数百个开源软件,本发明对此不作赘述。

企业内置开源软件仓库是公共软件仓库,其集成了较多的开源软件,一般而言,企业内置开源软件仓库中包括了30000个开源软件,以供企业使用所需。

s102:根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级。

具体的,基于权重大小来对企业内置开源软件仓库中的每个开源软件进行重要性分级。

由上述技术方案可知,本发明提供的一种分级方法,包括:根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重;根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级。可以看出,本发明克服业界对制品使用开源软件对比扫描效率低,耗费成本高的难题,通过一种分级的扫描模型来解决企业遇到的难题,提升企业对开源软件管理的效能,同时通过开源软件在内置仓库中的分级策略,可以大幅提升工具比对开源软件的效率。

为了进一步提供本发明确定所述企业内置开源软件仓库中的每个开源软件的权重的具体步骤,在本发明提供的分级方法的一个实施例中,提供一种确定所述企业内置开源软件仓库中的每个开源软件的权重的优选方式,s101具体包含有如下内容:

确定每个企业制品所使用的开源软件的标识码;

将所述标识码与所述企业内置开源软件仓库中的所有开源软件的标识码配对;

若配对成功,则使所述企业内置开源软件仓库中的对应开源软件的权重值增加一设定值;

其中,所述根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级,包括:在设定时长之后,根据所述权重值的大小对所述企业内置开源软件仓库中的每个开源软件进行分级。

在优选的实施方式中,所述分级包括:核心重要等级、核心等级、重要等级、普通等级以及极少使用等级。

具体而言,一般分级装置运行一定时间之后,每个开源软件根据其被配对成功的次数,权重值越来越高,在分级时,可以将权重值高于第一设定阈值的开源软件定义为核心重要等级开源软件,将权重值低于第一设定阈值而又高于第二设定阈值的开源软件定义为核心等级开源软件,将权重值低于第二设定阈值而又高于第三设定阈值的开源软件定义为重要等级开源软件,将权重值低于第三设定阈值而又高于第四设定阈值的开源软件定义为普通等级开源软件,将低于第四设定阈值的开源软件定义为极少使用等级开源软件。

可以看出,如若核心重要等级中大部分开源软件因后续的实际需求导致命中率过低(低配对率)时,进而导致其权重不断下降,从而可以动态地将每个开源软件划分到各分级中。

下面举例说明,如图2所示,根据业界社区公布数据,常用开源软件数据量在30000款左右。本方案将这业界公布的常用的30000款开源软件及其关键信息(漏洞信息、指纹码、初始权重<默认均为0>等)录入本方案提供的装置中。装置运行期间,共计执行对比21600000余次,不同权重软件命中次数及对应权重如下:

核心重要命中:18792000(权重:0.87)

核心命中:1620000(权重0.075)

重要命中:7344000(权重0.034)

普通命中:432000(权重0.02)

极少使用命中:21600(权重0.001)

该图中不同级别的权重为动态变化但又长期趋于稳定,经过数据采样发现在装置库中常用的30000款开源软件中,仅有2700是核心重要的,其占比仅为0.09,但是其命中率却为87%。

数据说明,如图3和图4给出的具体分级框架图,结合图2可以看出,上述数据为我国某大型金融系统内部各应用对开源软件使用统计分析图,尽管各it企业在应用数量和开源软件使用量上会有所不同,但整体符合上述数据统计分析。也即,我们对装置中维护的30000款软件做动态的分级后供开源软件扫描工具进行比对扫描,可以极大的提升扫描工具的运行效率和所对比对时间。这对企业来讲是一种无形的收益和风险的规避方式。

为了提供一种确定每个企业制品所使用的开源软件的标识码的具体方案,本发明的一个具体实施方式中,所述确定每个企业制品所使用的开源软件的标识码,包括:

针对每个制品,通过调用对应企业的企业构建工具对外曝露的接口,获取企业当前设定周期内构建的版本库和git分支信息;

根据所述版本库和所述git分支信息下载该制品对应的全量代码;

解析所述全量代码的git分支中jar或pom文件中定义的依赖关系,确定该制品所使用的开源软件的标识码。

具体的,首先装置内置数据仓库中有业界开源社区提供的开源项目常用开源软件的清单(该清单数据量在3w左右),且该装置的制品管理中心与互联网开源软件中央仓库存在接口互通。该装置内置数据仓库中的各款开源软件初始权重都标示为1。然后比对工具启动时会调用企业构建工具对外曝露的接口,通过该接口可以获取到企业当前周期内(周期长短由企业自行设置),构建的版本库和git分支信息;之后对于获取的版本库和git分支,自研装置会去自动获取代码下载源并下载代码到装置内置磁盘空间中;最后通过解析git分支中的jar或者pom文件中定义的依赖关系,来获取对应制品使用的开源软件的标识码。

在一些具体案例中,标识码可以是md5值或者指纹码。

在一些实施方式中,标识码为md5值,md5值被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hashvalue),在此不做赘述。

具体而言,通过将该分级方法设置于一分级装置中,拿解析出来的开源软件的md5值与工具内置开源软件仓库进行比对,如果发现配对成功,则当前内置开源软件仓库中的软件权重在内置表中加1。轮询该应用git分支上所有的开源软件并依次执行2-6;装置经过一定周期的运转后,其内置开源软件按期权重会被自动划分为不同的级别“核心重要”、“核心”、“重要”、“普通”、“极少使用”五个等级,五个等级中的软件数据流量会随着权重的变化而实现智能自动升级和降级;装置经过一定周期运转后,前三个等级数据量基本趋于稳定;自研比对工具在进行开源软件使用情况对比时就可以逐一从高权重向低权重扫描对比,从而最大程度的缩小了比对范围和减少比对时间。装置运行的时间越久,该工具的性能和优势越强大。

针对企业内置开源软件仓库中可能出现部分开源软件没有存储,存在配对失败风险,进而使得最终结果不准确,本发明进一步提供下述步骤:

若配对失败,所述根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重,还包括:

将所述标识码与开源软件中央仓库中所有开源软件的标识码配对;

将配对一致的开源软件增加到所述企业内置开源软件仓库中,并设置初始权重值。

具体而言,通过将该分级方法设置于一分级装置中,拿解析出来的开源软件的md5值与工具内置开源软件仓库进行比对,如果发现配对成功,则当前内置开源软件仓库中的软件权重在内置表中加1。解析出来的开源软件md5值在自研工具内置开源软件仓库中没有配对成功则通过自研装置去开源软件中央仓库进行配对,如配对成功则将该软件从中央仓库将信息加载到内置仓库中,并将该软件权重加1。轮询该应用git分支上所有的开源软件并依次执行2-6;装置经过一定周期的运转后,其内置开源软件按期权重会被自动划分为不同的级别“核心重要”、“核心”、“重要”、“普通”、“极少使用”五个等级,五个等级中的软件数据流量会随着权重的变化而实现智能自动升级和降级;装置经过一定周期运转后,前三个等级数据量基本趋于稳定;自研比对工具在进行开源软件使用情况对比时就可以逐一从高权重向低权重扫描对比,从而最大程度的缩小了比对范围和减少比对时间。装置运行的时间越久,该工具的性能和优势越强大。

可以看出,本发明克服了企业在管理开源软件时与中央仓库对比过程中耗时高、效率低、成本高的缺点,通过将开源软件仓库中的软件按权重进行智能分级后实现快速、高效、节能的目标。

其优点如下:

1.操作简单:工具部署后实现全流程自动化操作,无需人工介入。

2.效率高:通过开源软件在内置仓库中的智能分级策略,可以大幅提升工具比对开源软件的效率。

3.分级策略可动态调整:可动态设定开源软件扫描的各级别权重,来控制要扫描的范围。

4.安全性高:该装置部署在企业内部,与企业本地私有仓库对接,可避免直接与互联网连接,减少被攻击的风险。

本发明实施例进一步提供一种开源软件扫描方法,包括:

获取一企业制品所使用的开源软件;

将所述开源软件逐一与分级模型的多个开源软件数据库中的开源软件比对,直至比对成功为止;其中,所述分级模型是利用如上所述的分级方法对所述企业内置开源软件仓库中的每个开源软件进行分级得到。

可以看出,本发明克服业界对制品使用开源软件对比扫描效率低,耗费成本高的难题,通过一种分级的扫描模型来解决企业遇到的难题,提升企业对开源软件管理的效能,同时通过开源软件在内置仓库中的分级策略,可以大幅提升工具比对开源软件的效率,做动态的分级后供开源软件扫描工具进行比对扫描,可以极大的提升扫描工具的运行效率和所对比对时间。

本发明实施例进一步提供一种分级装置,如图5,包括:

权重确定模块11,根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重。

分级模块12,根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级。

企业制品是企业开发出的一个集成程序软件或集成系统,其应当包括多个开源软件,每个开源软件负责其中一个子功能的实现,一般而言,一个企业制品包括2-400个以内开源软件,其数量根据企业制品的复杂度确定。

举例而言,对于普通单一的企业制品,可能仅仅包括数十个开源软件,对于集成度较高的企业系统,其可能包括数百个开源软件,本发明对此不作赘述。

企业内置开源软件仓库是公共软件仓库,其集成了较多的开源软件,一般而言,企业内置开源软件仓库中包括了30000个开源软件,以供企业使用所需。

具体的,基于权重大小来对企业内置开源软件仓库中的每个开源软件进行重要性分级。

由上述技术方案可知,本发明提供的一种分级装置,首先设置权重确定模块,根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重;之后设置分级模块,根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级。可以看出,本发明克服业界对制品使用开源软件对比扫描效率低,耗费成本高的难题,通过一种分级的扫描模型来解决企业遇到的难题,提升企业对开源软件管理的效能,同时通过开源软件在内置仓库中的分级策略,可以大幅提升工具比对开源软件的效率。

为了进一步提供本发明确定所述企业内置开源软件仓库中的每个开源软件的权重的具体步骤,在本发明提供的分级方法的一个实施例中,提供一种确定所述企业内置开源软件仓库中的每个开源软件的权重的优选方式,具体包含有如下内容:

确定每个企业制品所使用的开源软件的标识码;

将所述标识码与所述企业内置开源软件仓库中的所有开源软件的标识码配对;

若配对成功,则使所述企业内置开源软件仓库中的对应开源软件的权重值增加一设定值;

其中,所述根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级,包括:在设定时长之后,根据所述权重值的大小对所述企业内置开源软件仓库中的每个开源软件进行分级。

在优选的实施方式中,所述分级包括:核心重要等级、核心等级、重要等级、普通等级以及极少使用等级。

具体而言,一般分级装置运行一定时间之后,每个开源软件根据其被配对成功的次数,权重值越来越高,在分级时,可以将权重值高于第一设定阈值的开源软件定义为核心重要等级开源软件,将权重值低于第一设定阈值而又高于第二设定阈值的开源软件定义为核心等级开源软件,将权重值低于第二设定阈值而又高于第三设定阈值的开源软件定义为重要等级开源软件,将权重值低于第三设定阈值而又高于第四设定阈值的开源软件定义为普通等级开源软件,将低于第四设定阈值的开源软件定义为极少使用等级开源软件。

可以看出,如若核心重要等级中大部分开源软件因后续的实际需求导致命中率过低(低配对率)时,进而导致其权重不断下降,从而可以动态地将每个开源软件划分到各分级中。

下面举例说明,根据业界社区公布数据,常用开源软件数据量在30000款左右。本方案将这业界公布的常用的30000款开源软件及其关键信息(漏洞信息、指纹码、初始权重<默认均为0>等)录入本方案提供的装置中。装置运行期间,共计执行对比21600000余次,不同权重软件命中次数及对应权重如下:

核心重要命中:18792000(权重:0.87)

核心命中:1620000(权重0.075)

重要命中:7344000(权重0.034)

普通命中:432000(权重0.02)

极少使用命中:21600(权重0.001)

该图中不同级别的权重为动态变化但又长期趋于稳定,经过数据采样发现在装置库中常用的30000款开源软件中,仅有2700是核心重要的,其占比仅为0.09,但是其命中率却为87%。

数据说明,上述数据为我国某大型金融系统内部各应用对开源软件使用统计分析图,尽管各it企业在应用数量和开源软件使用量上会有所不同,但整体符合上述数据统计分析。也即,我们对装置中维护的30000款软件做动态的分级后供开源软件扫描工具进行比对扫描,可以极大的提升扫描工具的运行效率和所对比对时间。这对企业来讲是一种无形的收益和风险的规避方式。

为了提供一种确定每个企业制品所使用的开源软件的标识码的具体方案,本发明的一个具体实施方式中,所述确定每个企业制品所使用的开源软件的标识码,包括:

针对每个制品,通过调用对应企业的企业构建工具对外曝露的接口,获取企业当前设定周期内构建的版本库和git分支信息;

根据所述版本库和所述git分支信息下载该制品对应的全量代码;

解析所述全量代码的git分支中jar或pom文件中定义的依赖关系,确定该制品所使用的开源软件的标识码。

具体的,首先装置内置数据仓库中有业界开源社区提供的开源项目常用开源软件的清单(该清单数据量在3w左右),且该装置的制品管理中心与互联网开源软件中央仓库存在接口互通。该装置内置数据仓库中的各款开源软件初始权重都标示为1。然后比对工具启动时会调用企业构建工具对外曝露的接口,通过该接口可以获取到企业当前周期内(周期长短由企业自行设置),构建的版本库和git分支信息;之后对于获取的版本库和git分支,自研装置会去自动获取代码下载源并下载代码到装置内置磁盘空间中;最后通过解析git分支中的jar或者pom文件中定义的依赖关系,来获取对应制品使用的开源软件的标识码。

在一些具体案例中,标识码可以是md5值或者指纹码。

在一些实施方式中,标识码为md5值,md5值被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hashvalue),在此不做赘述。

具体而言,通过将该分级方法设置于一分级装置中,拿解析出来的开源软件的md5值与工具内置开源软件仓库进行比对,如果发现配对成功,则当前内置开源软件仓库中的软件权重在内置表中加1。轮询该应用git分支上所有的开源软件并依次执行2-6;装置经过一定周期的运转后,其内置开源软件按期权重会被自动划分为不同的级别“核心重要”、“核心”、“重要”、“普通”、“极少使用”五个等级,五个等级中的软件数据流量会随着权重的变化而实现智能自动升级和降级;装置经过一定周期运转后,前三个等级数据量基本趋于稳定;自研比对工具在进行开源软件使用情况对比时就可以逐一从高权重向低权重扫描对比,从而最大程度的缩小了比对范围和减少比对时间。装置运行的时间越久,该工具的性能和优势越强大。

针对企业内置开源软件仓库中可能出现部分开源软件没有存储,存在配对失败风险,进而使得最终结果不准确,本发明进一步提供下述步骤:

若配对失败,所述根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重,还包括:

将所述标识码与开源软件中央仓库中所有开源软件的标识码配对;

将配对一致的开源软件增加到所述企业内置开源软件仓库中,并设置初始权重值。

具体而言,通过将该分级方法设置于一分级装置中,拿解析出来的开源软件的md5值与工具内置开源软件仓库进行比对,如果发现配对成功,则当前内置开源软件仓库中的软件权重在内置表中加1。解析出来的开源软件md5值在自研工具内置开源软件仓库中没有配对成功则通过自研装置去开源软件中央仓库进行配对,如配对成功则将该软件从中央仓库将信息加载到内置仓库中,并将该软件权重加1。轮询该应用git分支上所有的开源软件并依次执行2-6;装置经过一定周期的运转后,其内置开源软件按期权重会被自动划分为不同的级别“核心重要”、“核心”、“重要”、“普通”、“极少使用”五个等级,五个等级中的软件数据流量会随着权重的变化而实现智能自动升级和降级;装置经过一定周期运转后,前三个等级数据量基本趋于稳定;自研比对工具在进行开源软件使用情况对比时就可以逐一从高权重向低权重扫描对比,从而最大程度的缩小了比对范围和减少比对时间。装置运行的时间越久,该工具的性能和优势越强大。

可以看出,本发明克服了企业在管理开源软件时与中央仓库对比过程中耗时高、效率低、成本高的缺点,通过将开源软件仓库中的软件按权重进行智能分级后实现快速、高效、节能的目标。

其优点如下:

1.操作简单:工具部署后实现全流程自动化操作,无需人工介入。

2.效率高:通过开源软件在内置仓库中的智能分级策略,可以大幅提升工具比对开源软件的效率。

3.分级策略可动态调整:可动态设定开源软件扫描的各级别权重,来控制要扫描的范围。

4.安全性高:该装置部署在企业内部,与企业本地私有仓库对接,可避免直接与互联网连接,减少被攻击的风险。

本发明实施例进一步提供一种开源软件扫描装置,如图6,包括:

获取模块21,获取一企业制品所使用的开源软件;

比对模块22,将所述开源软件逐一与分级模型的多个开源软件数据库中的开源软件比对,直至比对成功为止;其中,所述分级模型是利用如权利要求1所述的分级方法对所述企业内置开源软件仓库中的每个开源软件进行分级得到。

可以看出,本发明克服业界对制品使用开源软件对比扫描效率低,耗费成本高的难题,通过一种分级的扫描模型来解决企业遇到的难题,提升企业对开源软件管理的效能,同时通过开源软件在内置仓库中的分级策略,可以大幅提升工具比对开源软件的效率,做动态的分级后供开源软件扫描工具进行比对扫描,可以极大的提升扫描工具的运行效率和所对比对时间。

进一步的,本发明还提供一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述所述的分级方法。

从上述描述可知,本发明实施例提供的电子设备,根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重;根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级。可以看出,本发明克服业界对制品使用开源软件对比扫描效率低,耗费成本高的难题,通过一种分级的扫描模型来解决企业遇到的难题,提升企业对开源软件管理的效能,同时通过开源软件在内置仓库中的分级策略,可以大幅提升工具比对开源软件的效率。

在另一个实施方式中,分级装置、扫描装置可以与中央处理器9100分开配置,例如可以将分级装置、扫描装置配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现分级功能。

如图7所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图7中所示的所有部件;此外,电子设备9600还可以包括图7中没有示出的部件,可以参考现有技术。

如图7所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。

其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。

输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为lcd显示器,但并不限于此。

该存储器9140可以是固态存储器,例如,只读存储器(rom)、随机存取存储器(ram)、sim卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为eprom等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。

存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。

通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。

基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。

本发明的实施例还提供能够实现上述实施例中的分级方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的执行主体为服务器或客户端的分级方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:

s101:根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重。

在步骤s101中,企业制品是企业开发出的一个集成程序软件或集成系统,其应当包括多个开源软件,每个开源软件负责其中一个子功能的实现,一般而言,一个企业制品包括2-400个以内开源软件,其数量根据企业制品的复杂度确定。

举例而言,对于普通单一的企业制品,可能仅仅包括数十个开源软件,对于集成度较高的企业系统,其可能包括数百个开源软件,本发明对此不作赘述。

企业内置开源软件仓库是公共软件仓库,其集成了较多的开源软件,一般而言,企业内置开源软件仓库中包括了30000个开源软件,以供企业使用所需。

s102:根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级。

具体的,基于权重大小来对企业内置开源软件仓库中的每个开源软件进行重要性分级。

从上述描述可知,本发明实施例提供的计算机可读存储介质,具体执行时,根据多个企业制品所使用的开源软件和企业内置开源软件仓库,确定所述企业内置开源软件仓库中的每个开源软件的权重;根据所述权重对所述企业内置开源软件仓库中的每个开源软件进行重要性分级。可以看出,本发明克服业界对制品使用开源软件对比扫描效率低,耗费成本高的难题,通过一种分级的扫描模型来解决企业遇到的难题,提升企业对开源软件管理的效能,同时通过开源软件在内置仓库中的分级策略,可以大幅提升工具比对开源软件的效率。

本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1