一种镜像安装包信息的扫描方法及设备技术

技术编号:21432919 阅读:20 留言:0更新日期:2019-06-22 12:08
本发明专利技术提供了一种镜像安装包信息的扫描方法,包括如下步骤:指定镜像仓库中存在的repo:tag列表;对repo:tag列表中的镜像进行遍历。其中,所述对repo:tag列表中镜像进行遍历的步骤包括:下载与repo:tag列表对应的镜像manifest文件到本地;解析镜像manifest文件;核对manifest文件;下载镜像文件;对镜像文件的数据进行扫描。本发明专利技术通过对相关镜像manifest文件的核对,避免镜像的重复扫描和重复下载,提高了镜像安装包的扫描效率,减少了网络流量。

【技术实现步骤摘要】
一种镜像安装包信息的扫描方法及设备
:本专利技术涉及计算机
,具体的,涉及一种镜像安装包信息扫描方法及设备。
技术介绍
:自2013年发布至今,Docker已逐渐成为当前最主流的开源应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,从而实现一次创建、任意运行的目的。Docker还提供了dockerhub可以让用户上传创建的镜像,以便其他用户下载,快速搭建环境,但同时也带来了一些安全问题:在容器运行环境下,所有服务程序均被打包到容器镜像中,随着镜像包一起发布,由于镜像打包发布过程中存在不规范的操作,不合法的安装包下载源,导致镜像引入漏洞,早在2015年的一次调查中,研究者就曾发现取样的Dockerhub上有30%-40%的镜像存在安全性的问题。这样就需要提供一种机制扫描并发现镜像安装包中存在的各种风险(CVE),由于镜像安装包在CICD(持续集成/发布)过程中处于信息源的地位,因此需要从源头控制风险的扩散。Clair是目前常用的镜像扫描工具,主要模块分为Detector、Fetcher、Notifier和Webhook,其首先对镜像进行特征的提取,然后再将这些特征匹配CVE漏洞库,若发现漏洞则进行提示及修补。然而,Clair并没有针对本地镜像特点优化层的访问顺序、数据下载方式、解压方法,导致CPU、内存、网络性能消耗巨大,扫描速度慢。有鉴于此,提出本专利技术。
技术实现思路
:有鉴于此,本专利技术的目的在于提供一种镜像安装包信息的扫描方法及设备,以解决现有技术中的至少一项技术问题。具体的,本专利技术的第一方面,提供了一种镜像安装包信息的扫描方法,包括如下步骤:指定镜像仓库中存在的repo:tag列表;对repo:tag列表中的镜像进行遍历;其中,所述对repo:tag列表中镜像进行遍历的步骤包括:下载与repo:tag列表对应的镜像manifest文件到本地;解析镜像manifest文件;核对manifest文件;下载镜像文件;对镜像文件的数据进行扫描。采用上述技术方案,避免了镜像的重复扫描和重复下载,提高了镜像安装包的扫描效率,减少了网络流量。优选的,通过API指定镜像仓库中存在的repo:tag列表。优选的,通过API下载与repo:tag列表对应的镜像manifest文件到本地。优选的,镜像manifest文件储存在本地的缓存目录中。优选的,所述解析镜像manifest文件的步骤包括:解析镜像manifest文件;获取镜像层的id列表;排序组成层链表;判断层链表中是否为多层,若为是,则进行下载镜像文件步骤,若为否,则执行对未扫描过的镜像的安全扫描,即下载repo:tag列表中的另一个对应的镜像manifest文件到本地。优选的,所述核对manifest文件的步骤包括:判断层的安装包信息记录是否存在于缓存数据库中,若为是,从缓存数据库中获取层的安装包信息,并执行对未扫描过的镜像的安全扫描,即下载repo:tag列表中的另一个对应的镜像manifest文件到本地,若为否,则下载镜像文件。优选的,所述下载镜像文件的步骤包括:下载镜像层的压缩包到本地;判断是否下载成功,若为否,则继续下载镜像层的压缩包,若为是,则对压缩包进行解压。更优选的,对镜像层的压缩包下载不成功的次数进行判定,若不成功次数超过3次,则执行对未扫描过的镜像的安全扫描,即下载repo:tag列表中的另一个对应的镜像manifest文件到本地,若不成功次数少于3次,则继续下载镜像层的压缩包。更优选的,所述镜像层的压缩包保存到本地的临时目录。更优选的,所述对压缩包进行解压的步骤包括:判断被解压的指定文件是否存在,若为是,则对解压后的文件进行扫描,若为否,则执行对未扫描过的镜像的安全扫描,即下载repo:tag列表中的另一个对应的镜像manifest文件到本地。优选的,所述对镜像文件的数据进行扫描的步骤包括:逐行扫描解压后的文件,执行对未扫描过的镜像的安全扫描,即下载repo:tag列表中的另一个对应的镜像manifest文件到本地。优选的,对镜像文件的数据进行扫描后,执行对未扫描过的镜像的安全扫描之前,还包括如下步骤:获取层的安装包信息,在缓存数据库中存放层的安装包信息。采用上述技术方案,通过更新缓存数据库中的层的安装包信息,使缓存数据库更为完善,提高了扫描效率。本专利技术的另一方面,提供了一种镜像安装包信息的扫描设备,所述设备包括:处理器;存储装置,用于存储一个或多个程序;所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的扫描方法。本专利技术的另一方面,提供了一种存储介质,所述存储介质包括一个或多个程序,所述一个或多个程序可以执行上述的扫描方法。综上所述,本专利技术具有以下有益效果:1.采用上述技术方案,通过对相关镜像manifest文件的核对,避免镜像的重复扫描和重复下载,提高了镜像安装包的扫描效率,减少了网络流量。2.采用上述技术方案,通过对相关镜像的遍历,提高了扫描的全面性,保证了镜像的使用安全。3.采用上述技术方案,通过更新缓存数据库中的层的安装包信息,使缓存数据库更为完善,提高了扫描效率。附图说明:为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术镜像安装包信息的扫描方法的执行流程图;图2为对repo:tag列表中的镜像进行遍历的执行流程图;图3为本专利技术镜像安装包信息的扫描方法的一种优选实施方式的流程图。具体实施方式:下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。在本专利技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本专利技术。在本专利技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。以下对本申请涉及的一些概念进行解释:Docker:是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。镜像仓库:Docker镜像的集中存放仓库,不同主机可以从该仓库中下载Docker镜像。Dockerhub:Docker官方提供的镜像仓库。DockerRegistry:用户根据需要搭建的私有镜像仓库。manifest文件:镜像文件的元数据文件。层链表:std::list<Layerlnfo>xxx形式的数据结构。API:应用程序编程接口。是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或本文档来自技高网...

【技术保护点】
1.一种镜像安装包信息的扫描方法,包括如下步骤:指定镜像仓库中存在的repo:tag列表;对repo:tag列表中的镜像进行遍历;其中,所述对repo:tag列表中镜像进行遍历的步骤包括:下载与repo:tag列表对应的镜像manifest文件到本地;解析镜像manifest文件;核对manifest文件;下载镜像文件;对镜像文件的数据进行扫描。

【技术特征摘要】
1.一种镜像安装包信息的扫描方法,包括如下步骤:指定镜像仓库中存在的repo:tag列表;对repo:tag列表中的镜像进行遍历;其中,所述对repo:tag列表中镜像进行遍历的步骤包括:下载与repo:tag列表对应的镜像manifest文件到本地;解析镜像manifest文件;核对manifest文件;下载镜像文件;对镜像文件的数据进行扫描。2.根据权利要求1所述的镜像安装包信息的扫描方法,其特征在于:通过API指定镜像仓库中存在的repo:tag列表,并通过API下载与repo:tag列表对应的镜像manifest文件到本地。3.根据权利要求1所述的镜像安装包信息的扫描方法,其特征在于:所述解析镜像manifest文件的步骤包括:解析镜像manifest文件;获取镜像层的id列表;排序组成层链表;判断层链表中是否为多层,若为是,则进行下载镜像文件步骤,若为否,则执行对未扫描过的镜像的安全扫描,即下载repo:tag列表中的另一个对应的镜像manifest文件到本地。4.根据权利要求1所述的镜像安装包信息的扫描方法,其特征在于:所述核对manifest文件的步骤包括:判断层的安装包信息记录是否存在于缓存数据库中,若为是,从缓存数据库中获取层的安装包信息,并执行对未扫描过的镜像的安全扫描,即下载repo:tag列表中的另一个对应的镜像manifest文件到本地,若为否,则下载镜像文件。5.根据权利要求1所述的镜像...

【专利技术属性】
技术研发人员:杜雄程度张福
申请(专利权)人:北京升鑫网络科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1