一种基于加密机的容器镜像加密管理方法技术

技术编号:26653240 阅读:123 留言:0更新日期:2020-12-09 00:56
本发明专利技术涉及一种基于加密机的容器镜像加密管理方法,其中,包括:生成未经加密的镜像,调用加密机接口,将镜像数据发送至加密机,在加密机内部对镜像数据进行对称加密,加密后,加入标识,新增标签,并在该标签下新增字段记录加密机ID;检查OCI镜像文件中各个镜像层的字段是否有加密标识,如果没有标识,则表明镜像层没有经过加密,将直接运行,如有标识,镜像层为加密状态,需要对其进行解密,docker将请求加密机接口判断OCI镜像文件中的ID是否与加密机接口提供的加密机ID是否一致,比对结果一致,表明当前加密机和加密镜像层的加密机是同一台加密机,可对其进行解密操作;比对结果不一致,说明当前加密机与给镜像加密的加密机不是同一个加密机。

【技术实现步骤摘要】
一种基于加密机的容器镜像加密管理方法
本专利技术涉及一种加密技术,特别涉及一种基于加密机的容器镜像加密管理方法。
技术介绍
镜像是一种特殊的文件系统,它运行于容器之上,可以提供容器所需要的程序,库,资源等配置文件。随着私有仓库技术的普及,越来越多的企业都开始搭建自己的私有仓库。企业应用以镜像作为存储载体,通过容器运行对外提供服务。一旦黑客通过漏洞进入企业管理系统,破坏镜像进而扰乱企业对外服务,将对企业运营造成不可挽回的损失。因此,企业需要保证镜像安全。本专利针对的场景为企业不同节点和服务器镜像仓库间均有交互。镜像的使用权限隶属于各节点,只有对该节点上传的镜像有管理及使用权限。因此,为保证镜像使用安全,需要对镜像进行加密存储管理。目前Kubernetes社区支持NodeKeyModel镜像加密方法。将密钥放在Kubernetes工作节点指定路径下,对镜像使用公钥加密,并上传到镜像仓库。使用镜像时通过Kubelet调用containerruntime拉取加密镜像,利用私钥对该镜像进行解密后使用。Kubernetes社区支持的NodeKeyModel方案,无法实现一户一密的机制。即当不同用管理员登陆到在worker节点下时,都可对加密镜像进行操作,这对于镜像安全来说是非常不利的,我们应保证加密镜像只有特定的管理员才能进行操作。并且将密钥存储于worker节点,一旦节点被攻击,将导致密钥泄漏,镜像安全受到威胁。
技术实现思路
本专利技术涉及一种基于加密机的容器镜像加密管理方法,用于解决上述现有技术的问题。本专利技术一种基于加密机的容器镜像加密管理方法,其中,包括:生成未经加密的镜像,调用加密机接口,将镜像数据发送至加密机,在加密机内部对镜像数据进行对称加密,加密后,将数据返回服务器后存入外存当中,加密后,加入标识,以便区分镜像是否加过密,在加密后新增标签,并在该标签下新增字段记录加密机ID;将加密后的镜像推送至远端仓库存储;将加密后的镜像从仓库下拉至本地;创建一个容器并加载镜像,对镜像进行判断,加载镜像是否需要解密;首先检查OCI镜像文件中各个镜像层的字段是否有加密标识,如果没有标识,则表明镜像层没有经过加密,将直接运行,如有标识,镜像层为加密状态,需要对其进行解密,docker将请求加密机接口判断OCI镜像文件中的ID是否与加密机接口提供的加密机ID是否一致,比对结果一致,表明当前加密机和加密镜像层的加密机是同一台加密机,可对其进行解密操作;比对结果不一致,说明当前加密机与给镜像加密的加密机不是同一个加密机,无法对该镜像进行解密。根据本专利技术的基于加密机的容器镜像加密管理方法的一实施例,其中,基于docker容器管理引擎,加密的镜像是基于OCI格式的镜像文件。根据本专利技术的基于加密机的容器镜像加密管理方法的一实施例,其中,将加密与解密算法集成在docker命令中,采用SM1国密算法对镜像分层加密,通过在dockerbuild命令后增加--encrypt参数向加密机发送加密指令。根据本专利技术的基于加密机的容器镜像加密管理方法的一实施例,其中,解密算法集成于dockerrun命令中,在容器实例化之前先对镜像是否经过加密进行检验。根据本专利技术的基于加密机的容器镜像加密管理方法的一实施例,其中,开启docker服务时,需要加载加密机配置,包括加密机IP及端口号,以便程序可以访问到将加密机,配置写在/etc/docker/daemon.json文件中,修改前daemon.json中字段为"registry-mirrors",在原有字段下方添加的字段"secureMachineIP","secureMachinePort",加密后的,在镜像的index.json文件中,将修改"mediaType"字段,layer下新增"annotations"标签。根据本专利技术的基于加密机的容器镜像加密管理方法的一实施例,其中,通过dockerbuild命令生成image镜像,调用dockerbuild命令时,在命令后加入参数--encrypt,docker程序编译该镜像时执行加密编译,否则编译不对镜像进行加密,首先生成未经加密的镜像,再调用加密机接口,将镜像数据发送至加密机,在加密机内部通过SM1国密算法对镜像数据进行对称加密,加密后,将数据返回服务器后存入外存当中,加密后,将在"mediaType"字段后加入"encrypted"标识,以便区分镜像是否加过密,在加密后的layer层下新增"annotations"标签,并在该标签下新增"secureID"字段,记录加密机ID,目的是在解密的时候,通过"secureID"比对当前加密机与给镜像加密的加密机是否是同一台加密机。根据本专利技术的基于加密机的容器镜像加密管理方法的一实施例,其中,OCI镜像文件加密后,"mediaType"字段末尾增加了"encrypted"标记,标识该镜像层已加密,后续对镜像文件判断是否需要解密提供依据,并且最后添加"annotations"标签,记录下"secureID"加密机标识。根据本专利技术的基于加密机的容器镜像加密管理方法的一实施例,其中,使用dockerpush命令,将加密后的镜像推送至远端仓库存储;使用dockerpullabc命令,将加密后的镜像从仓库下拉至本地。根据本专利技术的基于加密机的容器镜像加密管理方法的一实施例,其中,用户执行dockerrun命令时,首先检查OCI镜像文件中各个镜像层的"mediaType"字段是否有加密标识"encrypted",如果没有"encrypted"标识,则表明镜像层没有经过加密,将直接运行,当镜像层"mediaType"字段中有"encrypted"字段时,镜像层为加密状态,需要对其进行解密;docker将判断是否连接加密机;docker将请求加密机接口判断OCI镜像文件中"secureID"是否与加密机接口提供的加密机ID是否一致。根据本专利技术的基于加密机的容器镜像加密管理方法的一实施例,其中,比对结果一致,docker将加密镜像传至加密机,加密机对镜像进行分层解密,若"secureID"是经过篡改后,导致当前判断匹配一致,则镜像传入加密机,加密机内使用的key与镜像加密使用的key不同,镜像传入加密机后无法解密,加密机将报错通知,解密后,加密机内OCI镜像配置文件中"digest"字段摘要值发生变化,将"digest"字段使用加密机私钥进行加密,存入"annotations"标签下的"secureDigest"字段,"mediaType"字段去掉"encrypted"标识,解密完成后,docker接收到加密机返回的字段,并使用加密机公钥对"secureDigest"进行解密,使用SHA256算法对镜像层逐个进行摘要算法,得出的摘要值和解密后的"secureDigest"进行比对,无误则说明镜像解密过程中未经过篡改,验证无误后,docker将从加密机内返回的镜像实例化,本机镜像保持为加密状态。本专利技术提供了一种基于加密机的镜像加密存储方法,从镜像的全生命周期出本文档来自技高网...

【技术保护点】
1.一种基于加密机的容器镜像加密管理方法,其特征在于,包括:/n生成未经加密的镜像,调用加密机接口,将镜像数据发送至加密机,在加密机内部对镜像数据进行对称加密,加密后,将数据返回服务器后存入外存当中,加密后,加入标识,以便区分镜像是否加过密,在加密后新增标签,并在该标签下新增字段记录加密机ID;/n将加密后的镜像推送至远端仓库存储;/n将加密后的镜像从仓库下拉至本地;/n创建一个容器并加载镜像,对镜像进行判断,加载镜像是否需要解密;/n首先检查OCI镜像文件中各个镜像层的字段是否有加密标识,如果没有标识,则表明镜像层没有经过加密,将直接运行,如有标识,镜像层为加密状态,需要对其进行解密,docker将请求加密机接口判断OCI镜像文件中的ID是否与加密机接口提供的加密机ID是否一致,比对结果一致,表明当前加密机和加密镜像层的加密机是同一台加密机,可对其进行解密操作;比对结果不一致,说明当前加密机与给镜像加密的加密机不是同一个加密机,无法对该镜像进行解密。/n

【技术特征摘要】
1.一种基于加密机的容器镜像加密管理方法,其特征在于,包括:
生成未经加密的镜像,调用加密机接口,将镜像数据发送至加密机,在加密机内部对镜像数据进行对称加密,加密后,将数据返回服务器后存入外存当中,加密后,加入标识,以便区分镜像是否加过密,在加密后新增标签,并在该标签下新增字段记录加密机ID;
将加密后的镜像推送至远端仓库存储;
将加密后的镜像从仓库下拉至本地;
创建一个容器并加载镜像,对镜像进行判断,加载镜像是否需要解密;
首先检查OCI镜像文件中各个镜像层的字段是否有加密标识,如果没有标识,则表明镜像层没有经过加密,将直接运行,如有标识,镜像层为加密状态,需要对其进行解密,docker将请求加密机接口判断OCI镜像文件中的ID是否与加密机接口提供的加密机ID是否一致,比对结果一致,表明当前加密机和加密镜像层的加密机是同一台加密机,可对其进行解密操作;比对结果不一致,说明当前加密机与给镜像加密的加密机不是同一个加密机,无法对该镜像进行解密。


2.如权利要求1所述的基于加密机的容器镜像加密管理方法,其特征在于,基于docker容器管理引擎,加密的镜像是基于OCI格式的镜像文件。


3.如权利要求1所述的基于加密机的容器镜像加密管理方法,其特征在于,将加密与解密算法集成在docker命令中,采用SM1国密算法对镜像分层加密,通过在dockerbuild命令后增加--encrypt参数向加密机发送加密指令。


4.如权利要求1所述的基于加密机的容器镜像加密管理方法,其特征在于,解密算法集成于dockerrun命令中,在容器实例化之前先对镜像是否经过加密进行检验。


5.如权利要求1所述的基于加密机的容器镜像加密管理方法,其特征在于,开启docker服务时,需要加载加密机配置,包括加密机IP及端口号,以便程序可以访问到将加密机,配置写在/etc/docker/daemon.json文件中,修改前daemon.json中字段为"registry-mirrors",在原有字段下方添加的字段"secureMachineIP","secureMachinePort",加密后的,在镜像的index.json文件中,将修改"mediaType"字段,layer下新增"annotations"标签。


6.如权利要求1所述的基于加密机的容器镜像加密管理方法,其特征在于,通过dockerbuild命令生成image镜像,调用dockerbuild命令时,在命令后加入参数--encrypt,docker程序编译该镜像时执行加密编译,否则编译不对镜像进行加密,首先生成未经加密的镜像,再调用加密机接口,将镜像数据发送至加密机,在加密机内部通过SM...

【专利技术属性】
技术研发人员:晋晨黄亚杰马俊杰瞿秋薏苏帅苏玉娇姜瀚刘韡
申请(专利权)人:航天科工网络信息发展有限公司
类型:发明
国别省市:北京;11

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

1