发明内容
基于此,有必要针对上述技术问题,提供一种能够检查多云环境下容器镜像从构建到部署链路的安全性的跨云容器镜像部署方法、装置、计算机设备和存储介质,提高了容器镜像从构建到部署链路的安全性。
一种跨云容器镜像部署方法,所述方法包括:
获取目标基础镜像仓库,从所述目标基础镜像仓库中拉取出目标基础镜像;
获取目标业务代码,基于所述目标基础镜像和目标业务代码,构建生成中间应用镜像;
对所述中间应用镜像进行签名校验,获得第一签名校验结果;
基于所述第一签名校验结果和安全文件传输协议,将所述中间应用镜像传输到目标云容器镜像仓库;
获取目标脚本,目标集群基于所述目标脚本从所述目标云容器镜像仓库中拉取出目标应用镜像,对所述目标应用镜像进行签名校验,获得第二签名校验结果;
基于所述第二签名校验结果,将所述目标应用镜像部署至目标云服务器。
在其中一个实施例中,获取目标基础镜像仓库,从所述目标基础镜像仓库中拉取出目标基础镜像之前,还包括:
获取原始基础镜像;
通过自动加固脚本对所述原始基础镜像进行安全基线加固,得到第一基础镜像;
将所述第一基础镜像推送到原始基础镜像仓库中进行安全扫描,获得安全扫描结果;
当所述安全扫描结果为存在高危漏洞风险时,重复对所述第一基础镜像进行重新构建整改的操作,直到整改得到的第一基础镜像不再存在高危漏洞风险,将所述整改得到的第一基础镜像作为待存储基础镜像;
当所述安全扫描结果为不存在高危漏洞风险时,将所述第一基础镜像作为待存储基础镜像;
将所述待存储基础镜像加入到原始基础镜像仓库中,构建生成所述目标基础镜像仓库。
在其中一个实施例中,获取目标业务代码,基于所述目标基础镜像和目标业务代码,构建生成中间应用镜像包括:
构建文件合规检查组件,获取原始业务代码,基于所述文件合规检查组件对所述原始业务代码进行安全扫描,得到第一安全扫描结果;
基于所述第一安全扫描结果,对所述原始业务代码进行文件合规性修改,得到目标业务代码;
将所述目标业务代码融合到所述目标基础镜像中,得到第一应用镜像;
将所述第一应用镜像推送到应用镜像仓库中进行安全扫描,获得第二安全扫描结果;
当所述第二安全扫描结果为存在高危漏洞风险时,重复对所述第一应用镜像进行重新构建整改的操作,直到整改得到的第一应用镜像不再存在高危漏洞风险,将所述整改得到的第一应用镜像作为待签名应用镜像;
当所述第二安全扫描结果为不存在高危漏洞风险时,将所述第一应用镜像作为待签名应用镜像;
对所述待签名应用镜像进行签名操作,得到所述中间应用镜像。
在其中一个实施例中,对所述待签名应用镜像进行签名操作,得到所述中间应用镜像包括:
计算所述待签名应用镜像对应的摘要信息;
基于公有密钥对所述摘要信息进行加密,获得所述待签名应用镜对应的加密摘要,完成对待签名应用镜像的签名操作,得到所述中间应用镜像。
在其中一个实施例中,对所述中间应用镜像进行签名校验,获得第一签名校验结果包括:
获取所述中间应用镜像对应的加密摘要;
计算所述中间应用镜像对应的摘要信息;
基于私有密钥对所述中间应用镜像对应的加密摘要进行解密,得到解密摘要;
将所述中间应用镜像对应的摘要信息与所述解密摘要进行比对,获得所述第一签名校验结果。
在其中一个实施例中,基于所述第二签名校验结果,将所述目标应用镜像部署至目标云服务器包括:
当所述第二签名校验结果为所述目标应用镜像是签名应用镜像时,基于所述目标脚本启动所述目标应用镜像,完成所述目标应用镜像在目标云服务器的部署;
当所述第二签名校验结果为所述目标应用镜像是非签名应用镜像时,停止将所述目标应用镜像部署到目标云服务器上。
一种跨云容器镜像部署装置,所述装置包括:
目标基础镜像获取模块,用于获取目标基础镜像仓库,从所述目标基础镜像仓库中拉取出目标基础镜像;
中间应用镜像生成模块,用于获取目标业务代码,基于所述目标基础镜像和目标业务代码,构建生成中间应用镜像;
第一签名校验结果确定模块,用于对所述中间应用镜像进行签名校验,获得第一签名校验结果;
中间应用镜像传输模块,用于基于所述第一签名校验结果和安全文件传输协议,将所述中间应用镜像传输到目标云容器镜像仓库;
第二签名校验结果确定模块,用于获取目标脚本,目标集群基于所述目标脚本从所述目标云容器镜像仓库中拉取出目标应用镜像,对所述目标应用镜像进行签名校验,获得第二签名校验结果;
目标应用镜像部署模块,用于基于所述第二签名校验结果,将所述目标应用镜像部署至目标云服务器。
在其中一个实施例中,跨云容器镜像部署装置还包括:
目标基础镜像仓库生成模块,用于获取原始基础镜像;通过自动加固脚本对所述原始基础镜像进行安全基线加固,得到第一基础镜像;将所述第一基础镜像推送到原始基础镜像仓库中进行安全扫描,获得安全扫描结果;当所述安全扫描结果为存在高危漏洞风险时,重复对所述第一基础镜像进行重新构建整改的操作,直到整改得到的第一基础镜像不再存在高危漏洞风险,将所述整改得到的第一基础镜像作为待存储基础镜像;当所述安全扫描结果为不存在高危漏洞风险时,将所述第一基础镜像作为待存储基础镜像;将所述待存储基础镜像加入到原始基础镜像仓库中,构建生成所述目标基础镜像仓库。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取目标基础镜像仓库,从所述目标基础镜像仓库中拉取出目标基础镜像;
获取目标业务代码,基于所述目标基础镜像和目标业务代码,构建生成中间应用镜像;
对所述中间应用镜像进行签名校验,获得第一签名校验结果;
基于所述第一签名校验结果和安全文件传输协议,将所述中间应用镜像传输到目标云容器镜像仓库;
获取目标脚本,目标集群基于所述目标脚本从所述目标云容器镜像仓库中拉取出目标应用镜像,对所述目标应用镜像进行签名校验,获得第二签名校验结果;
基于所述第二签名校验结果,将所述目标应用镜像部署至目标云服务器。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取目标基础镜像仓库,从所述目标基础镜像仓库中拉取出目标基础镜像;
获取目标业务代码,基于所述目标基础镜像和目标业务代码,构建生成中间应用镜像;
对所述中间应用镜像进行签名校验,获得第一签名校验结果;
基于所述第一签名校验结果和安全文件传输协议,将所述中间应用镜像传输到目标云容器镜像仓库;
获取目标脚本,目标集群基于所述目标脚本从所述目标云容器镜像仓库中拉取出目标应用镜像,对所述目标应用镜像进行签名校验,获得第二签名校验结果;
基于所述第二签名校验结果,将所述目标应用镜像部署至目标云服务器。
上述跨云容器镜像部署方法、装置、计算机设备和存储介质,通过获取目标基础镜像仓库,从所述目标基础镜像仓库中拉取出目标基础镜像;获取目标业务代码,基于所述目标基础镜像和目标业务代码,构建生成中间应用镜像;对所述中间应用镜像进行签名校验,获得第一签名校验结果;基于所述第一签名校验结果和安全文件传输协议,将所述中间应用镜像传输到目标云容器镜像仓库;获取目标脚本,目标集群基于所述目标脚本从所述目标云容器镜像仓库中拉取出目标应用镜像,对所述目标应用镜像进行签名校验,获得第二签名校验结果;基于所述第二签名校验结果,将所述目标应用镜像部署至目标云服务器。通过从目标基础镜像仓库中拉取出目标基础镜像,获取目标业务代码,基于目标基础镜像和目标业务代码构建生成中间应用镜像,对中间应用镜像进行签名校验,得到第一签名校验结果,基于第一签名校验结果将中间应用镜像传输到目标云容器镜像仓库,获取目标脚本,基于目标脚本从目标云容器镜像仓库中拉取目标应用镜像,对目标应用镜像进行签名校验,得到第二签名校验结果,基于第二签名校验结果和目标脚本,将目标应用镜像部署至目标云服务器上,在目标应用镜像构建到部署的过程中,进行了多次安全扫描和签名校验,从而提高了容器镜像从构建到部署链路的安全性。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的跨云容器镜像部署方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储***可以存储服务器104需要处理的数据。数据存储***可以集成在服务器104上,也可以放在云上或其他网络服务器上。终端102用于输入镜像。服务器104用于构建目标应用镜像并将目标应用镜像部署到目标云服务器上。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种跨云容器镜像部署方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤S200,获取目标基础镜像仓库,从所述目标基础镜像仓库中拉取出目标基础镜像。
其中,镜像是一种文件存储形式,是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。基础镜像指以一个镜像为基础,在该镜像上进行定制的镜像。目标基础镜像仓库指用于存储基础镜像的仓库,所述基础镜像是从官方镜像仓库中下载得到原始基础镜像后,对所述原始基础镜像进行安全基线加固和安全扫描之后得到的。官方镜像仓库指提供基础镜像下载的某些官方平台的镜像仓库,包括centos、ubuntu、python等原始Docker镜像。目标基础镜像指用于构建对应业务场景下的应用镜像的基础镜像。
具体地,目标基础镜像仓库中存在着许多基础镜像,其中存储着从官方镜像仓库下载并进行安全基线加固和安全扫描之后的基础镜像,当需要用到相关基础镜像时,便可以从目标基础镜像仓库中拉取所需的基础镜像,也就是目标基础镜像。当目标基础镜像仓库中没有存储有目标基础镜像时,则需要从官方镜像仓库下载基础镜像之后,对基础镜像进行安全基线加固、安全扫描等操作,得到目标基础镜像,然后将目标基础镜像存储于目标基础镜像仓库中,等进行后续进程时就从目标基础镜像仓库中将目标基础镜像进行拉取。
步骤S202,获取目标业务代码,基于所述目标基础镜像和目标业务代码,构建生成中间应用镜像。
其中,目标业务代码指开发人员提交的与应用相关的开发代码。中间应用镜像指将目标代码打包到目标基础镜像并进行数字签名得到的应用镜像。
具体地,当需要部署生成相关的应用镜时,需要从gitlab中拉取产品库代码,也就是原始业务代码,为了确保文件的合规性,需要对原始业务代码中Dockerfile、Helm等文件进行文件合规性检查,然后得到对应的目标业务代码,将编译好的目标业务代码打包到目标基础镜像中,并进行数字签名操作,得到中间应用镜像。其中,gitlab是一个自托管的Git存储库管理***,可以保持用户代码的私密性,并且可以轻松部署代码的更改。数字签名指一个有公信力的权威机构用它自己的私钥对某些数据进行签名(通常称私钥加密为签名),以证明这些数据是可被信任的。Dockerfile是一个创建镜像所有命令的文本文件,包含了一条条指令和说明,每条指令构建一层。Helm是Kubernetes生态***中的一个软件包管理工具,类似ubuntu的apt、python的pip,其专门负责管理Kubernetes应用资源,使用Helm可以对Kubernetes应用进行统一打包、分发、安装、升级以及回退等操作。Kubernetes,简称K8s,是用8代替单词中间的8个字符“ubernete”而成的缩写,是一个用于自动部署、扩缩和管理容器化应用程序的开源***,其管理云平台中多个主机上的容器化的应用,其目标是让部署容器化的应用简单并且高效,其也提供了应用部署、规划、更新和维护的一种机制。
步骤S204,对所述中间应用镜像进行签名校验,获得第一签名校验结果。
其中,签名校验指检验应用镜像是否为已经进行非对称密钥数字签名的镜像,该签名可以证明应用镜像的身份。第一签名校验结果指对中间应用镜像进行第一次签名校验得到的验证结果。
具体地,为了防止部署到未授权的应用、阻止黑客攻击等问题以及确保部署的应用镜像对应所属方,需要对将要部署的每一个应用镜像进行签名校验,获得相应的签名校验结果,再根据签名校验的结果决定是否将对应的应用镜像部署到对应的云服务器上。
步骤S206,基于所述第一签名校验结果和安全文件传输协议,将所述中间应用镜像传输到目标云容器镜像仓库。
其中,安全文件传输协议指SFTP协议,全称为Secure File Transfer Protocol,是一种安全的文件传输协议,一种为传输文件提供安全网络的加密方法,其是在FTP(全称为File Transfer Protocol)的基础上,对传输文件采取了加密/解密技术,使得传输文件传输更安全。目标云容器镜像仓库指用于存储将要部署的应用镜像的存储仓库。
具体地,当第一签名校验结果为中间应用镜像是签名镜像时,就基于安全文件传输协议将中间应用镜像传输到对应的云容器镜像仓库,也就是目标云容器镜像仓库,当对目标应用镜像进行部署时,就从目标云容器镜像仓库中拉取出目标应用镜像,对目标应用镜像进行部署。其中,存储中间应用镜像所在的应用镜像仓库与中间应用镜像所要传输到的云容器镜像仓库可能会是在同一个云环境中,当所述应用镜像仓库与所述云容器镜像仓库不在同一个云环境中时,也就实现了应用镜像的跨云传输。所述应用镜像仓库指用于存储已进行数字签名签名操作的应用镜像。云环境指能够从动态虚拟化的资源池中向用户或者各种应用***按需提供计算能力、存储能力或者虚拟机服务等的互联网或者大数据环境。
步骤S208,获取目标脚本,目标集群基于所述目标脚本从所述目标云容器镜像仓库中拉取出目标应用镜像,对所述目标应用镜像进行签名校验,获得第二签名校验结果。
其中,目标脚本指用于编写部署目标应用镜像配置命令的可执行文件。目标集群指Kubernetes集群,Kubernetes集群是一组运行容器化应用程序的节点,其由一个主节点和多个工作节点组成,这些节点可以是物理计算机或虚拟机,其中主节点是所有任务分配的来源,主节点控制集群的状态,如哪些应用程序正在运行以及所述应用程序对应的容器映像;工作节点是运行应用程序的组件,其可以是虚拟机或物理计算机,其执行主节点分配的任务。目标应用镜像指需要部署到云服务器上以对外提供服务的应用镜像。第二签名校验结果指在对目标应用镜像进行部署之前,验证目标应用镜像所属方,以判断该应用镜像能否进入部署阶段的验证结果。
具体地,编写目标脚本,目标集群根据目标脚本从目标云镜像仓库中拉取出目标脚本中配置的目标应用镜像,对目标应用镜像进行签名校验,得到目标应用镜像是否是签名镜像的判断结果,以决定是否将所述目标应用镜像部署到对应的云服务器上。
步骤S210,基于所述第二签名校验结果,将所述目标应用镜像部署至目标云服务器。
其中,目标云服务器指目标应用镜像所属方想将目标应用镜像部署至的云服务器,对于云服务器的选择不是唯一的,而是多样选择的。
具体地,当目标应用镜像是签名镜像时,基于目标脚本中的配置参数对目标应用镜像进行相应的配置,再根据目标脚本中对应的命令行启动配置好参数的目标应用镜像,使得目标应用镜像完成在目标云服务器上的部署,得到目标镜像对应的应用,所述应用可以对外提供服务,也就是外部可以对所述应用进行访问。其中,一个应用镜像实例从构建到部署的的总流程如图3所示,图中阿里云ACR(Alibaba Cloud Container Registry)与腾讯云TCR(Tencent Cloud Container Registry)是面向容器镜像、Helm Chart等符合OCI(Open Container Initiative)标准的云原生制品安全托管及高效分发平台。容器镜像包含了一个打包的应用,以及它的依赖关系,还有它在启动时运行的进程信息。其中,镜像是一个只读模板,一个独立的文件***,包括运行容器所需的数据,可以用来创建新的容器;容器是镜像创建的运行实例,其可以支持的操作包括启动、停止、删除等,每个容器是相互间隔的,容器中会运行特定的应用,包含特定应用的代码及所需的依赖文件。图3中,持续部署指在原有交付应用镜像的基础上,由开发人员或运维人员自助式的定期向生产环境(即云环境)部署优质的应用镜像构建版本,当开发人员提交代码变更时,就触发一次自动化部署,所述自动化部署在对应公司的自动化部署平台进行,该自动化部署平台可自动地对开发代码进行打包编译,从而生成更新的应用镜像,然后将更新的应用镜像自动部署到对应的集群环境中,至此更新应用镜像对应的应用可对外提供服务,即外部可对该应用进行访问。
上述跨云容器镜像部署方法、装置、计算机设备和存储介质,通过获取目标基础镜像仓库,从所述目标基础镜像仓库中拉取出目标基础镜像;获取目标业务代码,基于所述目标基础镜像和目标业务代码,构建生成中间应用镜像;对所述中间应用镜像进行签名校验,获得第一签名校验结果;基于所述第一签名校验结果和安全文件传输协议,将所述中间应用镜像传输到目标云容器镜像仓库;获取目标脚本,目标集群基于所述目标脚本从所述目标云容器镜像仓库中拉取出目标应用镜像,对所述目标应用镜像进行签名校验,获得第二签名校验结果;基于所述第二签名校验结果,将所述目标应用镜像部署至目标云服务器。通过从目标基础镜像仓库中拉取出目标基础镜像,获取目标业务代码,基于目标基础镜像和目标业务代码构建生成中间应用镜像,对中间应用镜像进行签名校验,得到第一签名校验结果,基于第一签名校验结果将中间应用镜像传输到目标云容器镜像仓库,获取目标脚本,基于目标脚本从目标云容器镜像仓库中拉取目标应用镜像,对目标应用镜像进行签名校验,得到第二签名校验结果,基于第二签名校验结果和目标脚本,将目标应用镜像部署至目标云服务器上,在目标应用镜像构建到部署的过程中,进行了多次安全扫描和签名校验,从而提高了容器镜像从构建到部署链路的安全性。
在一个实施例中,如图4所示,步骤S200之前,还包括:
步骤S400,获取原始基础镜像。
其中,原始基础镜像指从官方镜像仓库中下载得到的基础镜像,包括但不限于centos,ubuntu,python等原始Docker镜像。Docker镜像是一个特殊的文件***,除了提供容器运行时所需的程序、库、资源和配置等文件外,还包含了一些为运行时准备的配置参数(如匿名卷、环境变量、用户等),其不包含任何动态数据,且其内容在构建之后也不会改变。
具体地,从官方镜像仓库中下载的基础镜像,也就是原始基础镜像,还不能直接应用于目标应用镜像的构建,还需要对原始基础镜像进行安全基线加固和安全扫描操作,以防止原始基础镜像中存在***漏洞、应用漏洞和病毒木马等问题。
步骤S402,通过自动加固脚本对所述原始基础镜像进行安全基线加固,得到第一基础镜像。
其中,自动加固脚本指存储了安全基线加固内容的可执行文件,其中安全基线加固内容主要为***配置,包括但不限于密码复杂度、文档权限等,所述自动加固脚本采用的是Dockerfile脚本。第一基础镜像指将原始基础镜像进行安全基线加固之后得到的基础镜像。
具体地,从官方镜像仓库中下载原始基础镜像之后,执行自动加固脚本,完成对原始基础镜像的安全基线加固,得到第一基础镜像。其中,进行安全基线加固的标准采用国际标准CIS(全称为Center for Internet Security),自动加固脚本的执行实现了***配置的自动化。
步骤S404,将所述第一基础镜像推送到原始基础镜像仓库中进行安全扫描,获得安全扫描结果。
其中,安全扫描指检查第一基础镜像中是否存在***漏洞、应用漏洞和病毒木马等中高危风险。安全扫描结果指对第一基础镜像进行安全扫描之后得到的中高危风险信息。
具体地,当对原始基础镜像进行安全基线加固,得到第一基础镜像之后,需要将第一基础镜像推送到原始基础镜像仓库的安全扫描组件中进行安全扫描操作,查找出第一基础镜像中存在的中高危风险,将所述中高危风险作为警告,通知到运维人员处,运维人员接收到警告通知后,基于警告对第一基础镜像进行对应的安全整改加固,例如当扫面发现容器中存在低版本tomcat中间件漏洞时,运维人员会对低版本tomcat进行升级修复处理;或者当扫描检测出tomcat中间件弱口令时,运维人员会对tomcat进行加固并设置强口令。
步骤S406,当所述安全扫描结果为存在高危漏洞风险时,重复对所述第一基础镜像进行重新构建整改的操作,直到整改得到的第一基础镜像不再存在高危漏洞风险,将所述整改得到的第一基础镜像作为待存储基础镜像。
其中,高危漏洞风险指第一基础镜像经过安全扫描操作之后,得到的中高危风险信息。重新构建整改指基于高危漏洞风险对应的中高危风险信息,对第一基础镜像进行修改或重建。待存储基础镜像指不存在中高危风险且将要存储到原始基础镜像仓库中,以获得目标基础镜像仓库的基础镜像。
具体地,当对第一基础镜像进行安全扫描之后,发现第一基础镜像存在中高危风险漏洞,则将所述中高危风险漏洞作为警告通知到运维人员处,运维人员基于所述警告对第一基础镜像进行修改和重建,并对修改和重建后的基础镜像进行安全扫描,直到修改或重建得到的基础镜像不存在中高危风险漏洞,就将修改或重建得到的不存在中高危风险漏洞的基础镜像作为待存储基础镜像。
步骤S408,当所述安全扫描结果为不存在高危漏洞风险时,将所述第一基础镜像作为待存储基础镜像。
具体地,当对第一基础镜像进行安全扫描之后,未发现有中高危风险,则直接将第一基础镜像作为待存储基础镜像,后续再将待基础镜像存储到原始基础镜像仓库中,以获得目标基础镜像仓库。
步骤S410,将所述待存储基础镜像加入到原始基础镜像仓库中,构建生成所述目标基础镜像仓库。
其中,目标基础镜像仓库指存储有构建目标应用镜像时对应的目标基础镜像的镜像存储仓库。
具体地,待存储基础镜像可能作为后续构建目标应用镜像对应的目标基础镜像,因此需要事先从官方镜像仓库中下载对应的原始基础镜像,并对原始基础镜像进行相应的处理操作,包括但不限于安全扫描、修改原始基础镜像等操作,得到构建目标应用镜像对应的待存储基础镜像,并将待存储基础镜像存储于目标基础镜像仓库中,当后续进程需要用到对应的目标基础镜像时,便从目标基础镜像仓库中拉取目标基础镜像。
本实施例中,通过从官方镜像仓库中下载原始基础镜像,进而对原始基础镜像进行安全基线加固和安全扫描操作,从而有效防止了原始基础镜像中可能存在的***漏洞、应用漏洞和病毒木马等问题对目标应用镜像构建的干扰,提高了目标应用镜像构建的安全性。
在一个实施例中,如图5所示,步骤S202包括:
步骤S500,构建文件合规检查组件,获取原始业务代码,基于所述文件合规检查组件对所述原始业务代码进行安全扫描,得到第一安全扫描结果。
其中,文件合规检查组件指用于检查原始业务代码合规性的安全扫描组件,可将原始业务代码或构建应用镜像时存在的安全风险扫描出来,所述文件合规检查组件也是Dockerfile扫描组件。原始业务代码指从gitlab中拉取出的产品库代码。第一安全扫描结果指对通过文件合规检查组件对原始业务代码进行文件合规性检查之后得到的结果。
具体地,在构建应用镜像过程中,通过文件合规检查组件检查原始业务代码中文件的合规性,找出原始业务代码中存在的中高危风险,运维人员或开发人员就可以基于所述中高危风险对所述原始业务代码进行整改,减少原始业务代码中中高危风险对目标应用镜像构建的危害。其中,文件合规检查组件的功能如图6(a)(b)(c)所示,文件合规检查组件的功能包括但不限于图6中(a)(b)(c)所示的功能,图6中进行安全扫描后,扫描结果分为忽视、错误、信息和警告四个等级,其中所述等级的安全规范性程度为忽视>信息>警告>错误,当出现错误和警告的扫描结果时,错误和警告对应的文件存在不符合文件合规性。此外,信息用于宣导容器安全知识,不做强制要求,是用于提示开发人员的信息。忽视用于提示文件某些信息可以忽略,对目标应用镜像的构建几乎没有什么影响。
步骤S502,基于所述第一安全扫描结果,对所述原始业务代码进行文件合规性修改,得到目标业务代码。
其中,目标业务代码指原始业务代码经过文件合规性检查之后,运维人员或开发人员基于合规性检查得到的结果对原始业务代码进行整改之后获得的业务代码。
具体地,第一安全扫描结果是判断原始业务代码中是否存在中高危风险,也就是安全漏洞或病毒木马等问题的依据,当第一安全扫描结果为原始业务代码存在安全风险时,开发人员或运维人员基于所述安全风险对原始业务代码进行修改,获得目标业务代码,提高了目标业务代码用于构建目标应用镜像的安全性。
步骤S504,将所述目标业务代码融合到所述目标基础镜像中,得到第一应用镜像。
其中,第一应用镜像指将编译好的目标业务代码打包到目标基础镜像中,构建生成的应用镜像,简单说就是目标基础镜像+目标业务代码=第一应用镜像。
具体地,构建第一应用镜像的过程就是将编译好的目标应用代码打包到目标基础镜像中的过程,在构建第一应用镜像时,也可以通过Dockerfile脚本扫描组件,也就是上面所述的文件合规检查组件对构建得到的第一应用镜像进行安全扫描,以检查获得的第一应用镜像是否存在安全风险,当存在安全风险时,便将所述安全风险作为警告通知给运维人员或开发人员,运维人员以及开发人员便根据警告的提示对第一应用镜像进行修改,以获得安全性更改的第一应用镜像。
步骤S506,将所述第一应用镜像推送到应用镜像仓库中进行安全扫描,获得第二安全扫描结果。
其中,应用镜像仓库指用于存储应用镜像的镜像存储仓库。第二安全扫描结果指将第一应用镜像推送到应用镜像仓库中进行安全扫描之后,获得的关于第一应用镜像是否存在安全风险的信息。
具体地,为了提高第一应用镜像的安全性,就需对第一应用镜像进行安全扫描,通过安全扫描检测第一应用镜像中是否存在应用漏洞、病毒木马等问题,通过安全扫描得到的结果,也就是第二安全扫描结果决定对第一应用镜像的下一步执行操作。
步骤S508,当所述第二安全扫描结果为存在高危漏洞风险时,重复对所述第一应用镜像进行重新构建整改的操作,直到整改得到的第一应用镜像不再存在高危漏洞风险,将所述整改得到的第一应用镜像作为待签名应用镜像。
其中,待签名应用镜像指未进行数字签名的签名操作的应用镜像,此处指未对整改得到的第一应用镜像进行签名操作的应用镜像。
具体地,第二安全扫描结果可用于判断是否可以对第一应用镜像直接进行非对称密钥的数字签名操作,当通过第二安全扫描结果发现第一应用镜像中存在中高危漏洞风险时,也就是存在各种漏洞和病毒时,就将所述各种漏洞和病毒通知到运维人员处,运维人员根据所述各种漏洞和病毒对第一应用镜像进行修改或重建,直到修改或重建得到的第一应用镜像不再检查出具有较大危害的漏洞或病毒等风险问题。
步骤S510,当所述第二安全扫描结果为不存在高危漏洞风险时,将所述第一应用镜像作为待签名应用镜像。
其中,待签名应用镜像指未进行数字签名的签名操作的应用镜像,此处指未对不存在中高危漏洞风险的第一应用镜像进行签名操作的应用镜像。
具体地,对第一应用镜像进行安全扫描之后,根据第二安全扫描结果分析出第一应用镜像中不存在危害较大的漏洞或病毒等风险问题,则直接将所述第一应用镜像作为待签名应用镜像,准备进入对待签名应用镜像进行数字签名的签名操作的过程。
步骤S512,对所述待签名应用镜像进行签名操作,得到所述中间应用镜像。
其中,中间应用镜像指对代签名应用镜像进行数字签名的签名操作之后,未传输到对应的云容器镜像仓库,而仍存储于应用镜像仓库中的应用镜像。
具体地,为了防止中间应用镜像在传输的过程中被篡改以及防止部署应用镜像过程中出现“挖矿木马”的情况,通过对每一个将要传输到对应云服务器中进行部署的应用镜像进行数字签名的签名和验证操作,从而从源头控制容器环境风险。其中,“挖矿木马”指攻击者通过各种手段将“挖矿木马”程序植入到受害者的计算机中,在受害者不知情的情况下,利用其计算机资源获得虚拟货币,这类木马程序就是“挖矿木马”病毒。
本实施例中,通过在构建第一应用镜像的过程中对原始业务代码进行文件合规性检查以及对构建得到的第一应用镜像进行安全扫描,防止了原始业务代码中存在的安全风险对构建第一应用镜像的影响,提高了第一应用镜像的安全性。此外,对第一应用镜像进行安全扫描以及非对称密钥的数字签名操作,为后续目标应用镜像的部署清除了较多安全风险,从而提高了后续中间应用镜像传输以及目标应用镜像部署的安全性。
在一个实施例中,如图7所示,步骤S512包括:
步骤S700,计算所述待签名应用镜像对应的摘要信息。
其中,摘要信息是指基于哈希算法对待签名应用镜像进行计算得到的数据信息。哈希算法又叫散列算法,是一种只能加密,不能解密的密码学算法,其可以将任意长度的信息转换成一段固定长度的字符串,所述字符串具有以下三个特点:信息相同,字符串也相同;信息相似不会影响字符串相同;输入值与输出值之间没有规律,所以不能通过输出值算出输入值,要想找到指定的输出值,只能不断更换输入值,寻找满足条件的输出值。
具体地,对待签名应用镜像进行数字签名的签名过程时,先基于哈希算法计算待签名应用镜像对应的摘要信息,将所述摘要信息作为后续进程执行所需的数据。
步骤S702,基于公有密钥对所述摘要信息进行加密,获得所述待签名应用镜对应的加密摘要,完成对待签名应用镜像的签名操作,得到所述中间应用镜像。
其中,公有密钥指信息接收方对外公开的密钥。加密摘要指基于接收方公有密钥对所述待签名应用镜像对应的摘要信息进行加密之后,得到的密文。中间应用镜像指对待签名应用镜像进行非对称密钥数字签名的签名过程之后获得的应用镜像。发送方指待签名应用镜像所在的云环境。接收方指中间应用镜像传输到的云环境。
具体地,为了确保中间应用镜像传输到对应的云容器镜像仓库过程中的安全性,需先通过非对称密钥对待签名应用镜像进行签名操作,从而提高中间应用镜像在传输过程中的安全性。其中非对称密钥指非对称加密算法,是一种密钥的保密方法,其需要公开密钥(即本案中的公有密钥,简称公钥,也叫publickey)和私有密钥(即本案中的私有密钥,简称私钥,也叫privatekey)两个密钥,公钥和私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。
本实施例中,通过基于非对称密钥对待签名应用镜像进行签名操作,提高了后续进程中中间应用镜像传输到对应的云容器镜像仓库过程中的安全性,此外还可以通过中间应用镜像的签名来确认应用镜像的所属方,有效地避免黑客对中间应用镜像的攻击以及防止部署到未授权的应用镜像。
在一个实施例中,如图8所示,步骤S204包括:
步骤S800,获取所述中间应用镜像对应的加密摘要。
其中,所述加密摘要指从所述中间应用镜像原来所在的云环境中发送后接收获得的密文。
具体地,发送方在中间应用镜像原来所在的云环境中将用哈希算法对中间应用镜像计算得到摘要信息之后,基于接收方的公有密钥对所述摘要信息进行加密之后的加密摘要以及加密摘要对应的原始报文发送到对应的云环境中。报文指网络中交换与传输的数据单元,即站点一次性要发送的数据块,其包含了将要发送的完整的数据信息,在此处发送的完整的数据信息即中间应用镜像的数据信息。
步骤S802,计算所述中间应用镜像对应的摘要信息。
其中,所述摘要信息是接收方通过采用与发送方一致的哈希算法对接收的原始报文进行计算得到的。
具体地,接收方接收需先用与发送方一样的哈希算法从接收到的原始报文中计算出摘要信息,此摘要信息用于后续进程验证中间应用镜像的签名情况。
步骤S804,基于私有密钥对所述中间应用镜像对应的加密摘要进行解密,得到解密摘要。
其中,私有密钥指未对外公开的,仅中间应用镜像接收方持有的密钥。解密摘要指接收方通过私有密钥对所述加密摘要进行解密后得到的数据信息。
具体地,接收方采用私有密钥对接收到的加密摘要进行解密,得到解密摘要,为后续验证进程提供信息依据。
步骤S806,将所述中间应用镜像对应的摘要信息与所述解密摘要进行比对,获得所述第一签名校验结果。
其中,第一签名校验结果指从应用镜像仓库中拉取出对应的中间应用镜像之后,为了确保拉取得到的应用镜像是将要传输和部署的应用镜像,而进行的非对称密钥数字签名的验证操作获得的结果。
本实施例中,通过对中间应用镜像进行非对称密钥的数字签名的验证操作,也就是签名校验操作,以确保所要传输的中间应用镜像是将要部署的应用镜像,从而避免后续中间应用镜像传输过程中被冒充或篡改等问题的发生,保护了中间应用镜像的完整性的同时,也提高了中间应用镜像的安全性。
在一个实施例中,如图9所示,步骤S210包括:
步骤S900,当所述第二签名校验结果为所述目标应用镜像是签名应用镜像时,基于所述目标脚本启动所述目标应用镜像,完成所述目标应用镜像在目标云服务器的部署。
其中,签名应用镜像指目标应用镜像经过非对称密钥进行过签名的应用镜像。
具体地,当从目标云容器镜像仓库中拉取出目标应用镜像之后,对目标应用镜像进行镜像的签名校验操作,以确保将要部署的应用镜像是已授权的应用镜像。当目标应用镜像是对应的签名应用镜像时,则根据编写的目标脚本继续执行部署目标应用镜像的命令,从而启动目标应用镜像,完成目标应用镜像在目标云服务器上的部署。此外,在每次需要发布新版本的应用时,在原有交付应用镜像的基础上,由开发人员或运维人员自助式的定期向对应的生产环境部署优质的构建版本,当开发人员提交的代码变更时,就触发一次自动化部署,而所述自动化部署将会在构建中间应用镜像对应的公司的自动化部署平台进行,所述自动化部署平台可以自动对开发代码进行打包编译,从而生成新的应用镜像,然后再将新生成的应用镜像自动部署到对应的集群环境中,完整新生成应用镜像在目标云服务器上的部署,从而使得外部可以对新生成应用镜像对应的应用进行访问,实现了应用镜像的持续部署。
步骤S902,当所述第二签名校验结果为所述目标应用镜像是非签名应用镜像时,停止将所述目标应用镜像部署到目标云服务器上。
其中,非签名应用镜像指目标应用镜像未经过非对称密钥进行过签名的应用镜像。
具体地,若从目标云容器镜像仓库中拉取获得的目标应用镜像是非签名镜像,则不再执行后续部署目标应用镜像至目标云服务器的操作。
本实施例中,通过对目标应用镜像先进行签名校验,然后再基于签名校验的结果将目标应用镜像部署到目标服务器上,为用户提高应用服务,使得外部可以对目标应用镜像对应的应用进行访问,防止了部署过程中挖矿木马等问题对目标应用镜像部署的影响,从而有效提高了容器镜像部署过程的安全性。
在一个实施例中,从官方镜像仓库中下载原始基础镜像,通过自动加固脚本对所述原始基础镜像进行安全基线加固,得到第一基础镜像,对所述第一基础镜像进行安全扫描,将通过安全扫描的第一基础镜像存储到阿里云基础镜像仓库中。当某公司需要部署生产应用时,从gitlab中拉取出产品库代码,也就是生成应用对应的原始业务代码,从阿里云基础镜像仓库中拉取出目标基础镜像,基于文件合规性检查组件对原始代码进行安全扫描,得到目标业务代码,将目标业务代码打包到目标基础镜像中,构建生成第一应用镜像。在构建生成第一应用镜像的过程中,文件合规性组件也对第一应用镜像进行安全扫描操作,以发现并及时清除第一应用镜像存在的安全风险,接着通过非对称密钥对第一应用镜像进行签名操作,得到中间应用镜像,将所述中间应用镜像存储于阿里云应用镜像仓库中,基于安全文件传输协议(即SFTP协议)将从阿里云应用镜像仓库中拉取出的已签名的目标应用镜像传输到阿里云容器镜像仓库或腾讯云容器镜像仓库中,当需要对目标应用镜像进行部署时,从阿里云容器镜像仓库或腾讯云容器镜像仓库中拉取出已签名的目标应用镜像,基于目标脚本的执行命令将目标应用镜像部署到阿里云服务器或腾讯云服务器上。从构建目标应用镜像到部署目标应用镜像的过程中,经过多次安全扫描和签名校验,有效地防止了***漏洞、应用漏洞、木马病毒、并篡改等问题对目标应用镜像构建到部署的影响,从而较大程度地提高了目标应用镜像从构建到部署链路的安全性。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的跨云容器镜像部署方法的跨云容器镜像部署装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个跨云容器镜像部署装置实施例中的具体限定可以参见上文中对于跨云容器镜像部署方法的限定,在此不再赘述。
在一个实施例中,如图10所示,提供了一种跨云容器镜像部署装置,包括:目标基础镜像获取模块1000、中间应用镜像生成模块1002、第一签名校验结果确定模块1004、中间应用镜像传输模块1006、第二签名校验结果确定模块1008和目标应用镜像部署模块1010,其中:
目标基础镜像获取模块1000,用于获取目标基础镜像仓库,从所述目标基础镜像仓库中拉取出目标基础镜像;
中间应用镜像生成模块1002,用于获取目标业务代码,基于所述目标基础镜像和目标业务代码,构建生成中间应用镜像;
第一签名校验结果确定模块1004,用于对所述中间应用镜像进行签名校验,获得第一签名校验结果;
中间应用镜像传输模块1006,用于基于所述第一签名校验结果和安全文件传输协议,将所述中间应用镜像传输到目标云容器镜像仓库;
第二签名校验结果确定模块1008,用于获取目标脚本,目标集群基于所述目标脚本从所述目标云容器镜像仓库中拉取出目标应用镜像,对所述目标应用镜像进行签名校验,获得第二签名校验结果;
目标应用镜像部署模块1010,用于基于所述第二签名校验结果,将所述目标应用镜像部署至目标云服务器。
在一个实施例中,跨云容器镜像部署装置还包括目标基础镜像仓库生成模块1012,用于获取原始基础镜像;通过自动加固脚本对所述原始基础镜像进行安全基线加固,得到第一基础镜像;将所述第一基础镜像推送到原始基础镜像仓库中进行安全扫描,获得安全扫描结果;当所述安全扫描结果为存在高危漏洞风险时,重复对所述第一基础镜像进行重新构建整改的操作,直到整改得到的第一基础镜像不再存在高危漏洞风险,将所述整改得到的第一基础镜像作为待存储基础镜像;当所述安全扫描结果为不存在高危漏洞风险时,将所述第一基础镜像作为待存储基础镜像;将所述待存储基础镜像加入到原始基础镜像仓库中,构建生成所述目标基础镜像仓库。
在一个实施例中,中间应用镜像生成模块1002还用于构建文件合规检查组件,获取原始业务代码,基于所述文件合规检查组件对所述原始业务代码进行安全扫描,得到第一安全扫描结果;基于所述第一安全扫描结果,对所述原始业务代码进行文件合规性修改,得到目标业务代码;将所述目标业务代码融合到所述目标基础镜像中,得到第一应用镜像;将所述第一应用镜像推送到应用镜像仓库中进行安全扫描,获得第二安全扫描结果;当所述第二安全扫描结果为存在高危漏洞风险时,重复对所述第一应用镜像进行重新构建整改的操作,直到整改得到的第一应用镜像不再存在高危漏洞风险,将所述整改得到的第一应用镜像作为待签名应用镜像;当所述第二安全扫描结果为不存在高危漏洞风险时,将所述第一应用镜像作为待签名应用镜像;对所述待签名应用镜像进行签名操作,得到所述中间应用镜像。
在一个实施例中,跨云容器镜像部署装置还包括中间应用镜像签名模块1014,用于计算所述待签名应用镜像对应的摘要信息;基于所述待签名应用镜像对应的私有密钥,对所述摘要信息进行加密,获得所述待签名应用镜对应的加密摘要,完成对待签名应用镜像的签名操作,得到所述中间应用镜像。
在一个实施例中,第一签名校验结果确定模块1004还用于获取所述中间应用镜像对应的加密摘要;计算所述中间应用镜像对应的摘要信息;基于所述中间应用镜像的公有密钥对所述中间应用镜像对应的加密摘要进行解密,得到解密摘要;将所述中间应用镜像对应的摘要信息与所述解密摘要进行比对,获得所述第一签名校验结果。
在一个实施例中,目标应用镜像部署模块1010还用于当所述第二签名校验结果为所述目标应用镜像是签名应用镜像时,基于所述目标脚本启动所述目标应用镜像,完成所述目标应用镜像在目标云服务器的部署;当所述第二签名校验结果为所述目标应用镜像是非签名应用镜像时,停止将所述目标应用镜像部署到目标云服务器上。
上述跨云容器镜像部署装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图11所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过***总线连接,通信接口通过输入/输出接口连接到***总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储部署应用镜像过程中所需的资源数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种跨云容器镜像部署方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图12所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过***总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到***总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种跨云容器镜像部署方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置。显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图11和图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。