CN114978672A - 一种Docker镜像加密及编排方法与系统 - Google Patents

一种Docker镜像加密及编排方法与系统 Download PDF

Info

Publication number
CN114978672A
CN114978672A CN202210547157.0A CN202210547157A CN114978672A CN 114978672 A CN114978672 A CN 114978672A CN 202210547157 A CN202210547157 A CN 202210547157A CN 114978672 A CN114978672 A CN 114978672A
Authority
CN
China
Prior art keywords
docker
image
mirror image
encrypted
encryption
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.)
Granted
Application number
CN202210547157.0A
Other languages
English (en)
Other versions
CN114978672B (zh
Inventor
马春雨
吴春光
薛炜
穆瑞超
刘晓敏
李钰磊
张远航
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Galaxy Qilin Software Changsha Co ltd
Original Assignee
Galaxy Qilin Software Changsha Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Galaxy Qilin Software Changsha Co ltd filed Critical Galaxy Qilin Software Changsha Co ltd
Priority to CN202210547157.0A priority Critical patent/CN114978672B/zh
Publication of CN114978672A publication Critical patent/CN114978672A/zh
Application granted granted Critical
Publication of CN114978672B publication Critical patent/CN114978672B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种Docker镜像加密及编排方法与系统,使用公钥对原始镜像加密,得到加密层数据以及加密特征,以此构成新镜像;构建密钥管理模块KMS插件和vault服务器保护Secret资源对象,在Secret资源对象中录入私钥和对应公钥哈希值;在部署加密应用的清单中加入解密模块作为初始化容器,若目标镜像当前不存在,拉取目标镜像,判断目标镜像是否为加密镜像,若是将目标镜像的镜像描述清单中的公钥哈希值匹配Secret资源,若匹配成功则用对应的私钥解密目标镜像每一层的数据;解密成功后解密初始容器返回成功并继续创建加密镜像的应用容器,解密失败返回错误通知。本发明增加了镜像的安全性,并且使加密镜像可以在Kubernetes中编排部署。

Description

一种Docker镜像加密及编排方法与系统
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种Docker镜像加密及编排方法与系统。
背景技术
OCI(开放容器标准)镜像规范是以Docker镜像规范为基础制定的,它定义了镜像的主要格式及内容。Docker镜像作为一种应用打包部署的快捷方式,它确保了应用运行环境的一致性,解决了应用部署环境多变及复杂性问题。用户将应用程序打包为Docker镜像,推送至镜像仓库,但传统无加密的镜像打包方式,很容易泄露源代码或被反编译,存在源代码泄露和被篡改的风险。
Kubernetes,是一个开源的,用于管理云平台中多个主机上的容器化的应用,提供了应用部署,规划,更新,维护的一种机制。Secret资源是Kubernetes中专门用来存储敏感数据的对象,它可以独立与使用它的资源,便于存储和修改敏感数据。默认情况下,Secret资源在Kubernetes中是Base64简单加密后存储在后端,直接采用这个方式可能会造成敏感数据的泄露,不能保障敏感数据的私密性和安全性。
无加密的Docker镜像很容易在Kubernetes中进行编排,但是对于加密后的Docker镜像,Kubernetes在创建加密镜像的容器时无法直接对镜像进行解密,导致加密Docker镜像在Kubernetes中编排部署难以实现。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种Docker镜像加密及编排方法与系统,增加了Docker镜像的安全性,并且解决了加密Docker镜像难以在Kubernetes中编排部署的问题。
为了解决上述技术问题,本发明采用的技术方案为:
一种Docker镜像加密及编排方法,包括以下步骤:
S1)使用公钥对原始Docker镜像每一层的数据加密,得到加密层数据以及对应的加密特征,将所述加密特征和公钥哈希值保存在加密Docker镜像的镜像描述清单中,重组加密Docker镜像并将所述加密Docker镜像上传至镜像仓库;
S2)定义Kubernetes的Secret资源对象并录入私钥和对应公钥的哈希值,通过KMS插件和vault服务器对所述Secret资源对象实时加解密;
S3)在Kubernetes中部署加密镜像应用时,如以Deployment、DeamonSet、StatefulSet等部署,在目标Docker镜像的应用清单中加入用于解密镜像的初始化容器,若目标Docker镜像未部署,从镜像仓库中拉取目标Docker镜像,利用初始化容器判断目标Docker镜像是否为加密Docker镜像,是则通过KMS插件和vault服务器对所述Secret资源对象解密得到私钥和对应公钥哈希值,将目标Docker镜像的镜像描述清单中的公钥哈希值匹配Secret资源对象解密得到的公钥哈希值,若匹配成功则用对应的私钥解密目标Docker镜像每一层的数据;
S4)若目标Docker镜像解密成功,Kubernetes中的kubelet继续创建解密后的目标Docker镜像的应用容器,解密后的目标Docker镜像中的应用被部署到所述应用容器中;若目标Docker镜像解密失败,则终止创建应用容器,且kubelet将错误信息上报至Kubernetes的API Server模块。
进一步的,步骤S1)具体包括以下步骤:
S11)解析原始Docker镜像,得到原始Docker镜像每一层数据的层关系、原始Docker镜像的镜像描述清单、以及每一层数据的原始哈希值;
S12)使用公钥逐层加密原始Docker镜像每一层的数据,得到加密Docker镜像每一层的数据,并计算加密后的每一层数据的哈希值;
S13)将加密后的每一层数据的哈希值替换该层的原始哈希值,生成加密特征,计算公钥哈希值,将所述加密特征和公钥哈希值保存在所述原始Docker镜像的镜像描述清单中的Labels字段,得到加密Docker镜像的镜像描述清单,将加密Docker镜像每一层的数据和加密Docker镜像的镜像描述清单重组为加密Docker镜像,根据加密Docker镜像的描述清单计算镜像ID并重命名加密Docker镜像,将重命名后的加密Docker镜像上传至镜像仓库。
进一步的,步骤S2)之前还包括搭建vault服务器和部署KMS插件的步骤,具体包括:在Kubernetes集群中搭建vault服务器,然后在Kubernetes API Server所在节点部署KMS插件。
进一步的,步骤S3)中在目标Docker镜像的应用清单中加入用于解密镜像的初始化容器步骤包括:
S301)获取kubelet创建的初始化容器,将目标Docker镜像的名称作为所述初始化容器的环境变量;
S302)将宿主机的Docker Socket文件映射到所述初始化容器中;
S303)根据所述Docker Socket文件,在初始化容器中使用Docker client API查找宿主机中的目标Docker镜像信息,若存在查找结果,则目标Docker镜像已部署并解密,初始化容器返回成功并执行步骤S4),若不存在查找结果,则目标Docker镜像未部署。
进一步的,步骤S301)还包括将Secret资源对象映射到所述初始化容器中;步骤S302)还包括将镜像存储目录映射到所述初始化容器中;步骤S303)之后具体包括以下步骤:
S31)根据镜像存储目录,从镜像仓库中拉取目标Docker镜像,在初始化容器中使用Docker client API获取目标Docker镜像的镜像描述清单;
S32)若所述描述清单中没有加密特征,则目标Docker镜像不是加密Docker镜像,初始化容器返回成功并执行步骤S4),若所述描述清单中有加密特征,找到被映射的Secret资源对象,并通过KMS插件和vault服务器对所映射的Secret资源对象解密;
S33)在初始化容器中使用Docker client API,将目标Docker镜像的镜像描述清单中的公钥哈希值匹配Secret资源对象,若存在匹配结果,则用对应的私钥解密目标Docker镜像每一层的数据,解密完成后初始化容器返回成功并执行步骤S4),若不存在匹配结果或者解密失败,初始化容器返回失败。
本发明还提出一种Docker镜像加密及编排系统,包括:
镜像加密模块,用于使用公钥对原始Docker镜像每一层的数据加密,得到加密后的层数据以及对应的加密特征,将所述加密特征和公钥哈希值保存在加密Docker镜像的镜像描述清单中,重组加密Docker镜像后,将所述加密Docker镜像上传至镜像仓库;
密钥管理模块,用于定义Kubernetes的Secret资源对象并在Secret资源对象中录入私钥和所述私钥对应公钥的哈希值,通过KMS插件和vault服务器对所述Secret资源对象实时加密;还用于读取Secret资源对象时通过KMS插件和vault服务器对所述Secret资源对象解密;
镜像解密模块,用于在Kubernetes中部署加密镜像应用时,在目标Docker镜像的应用清单中加入用于解密的初始化容器,若目标Docker镜像未部署,从镜像仓库中拉取目标Docker镜像,利用初始化容器判断目标Docker镜像是否为加密Docker镜像,是则通过密钥管理模块读取Secret资源对象得到所述私钥和对应的公钥哈希值,将目标Docker镜像的镜像描述清单中的公钥哈希值匹配Secret资源对象解密得到的公钥哈希值,若匹配成功则用对应的私钥解密目标Docker镜像每一层的数据。
进一步的,所述镜像加密模块具体包括:
镜像解析单元,用于解析原始Docker镜像,得到原始Docker镜像每一层数据的层关系、原始Docker镜像的镜像描述清单、以及每一层数据的原始哈希值;
分层加密单元,用于使用公钥逐层加密原始Docker镜像每一层的数据,得到加密Docker镜像每一层的数据,并计算加密后的每一层的哈希值;
镜像重组单元,用于将加密后的每一层数据的哈希值替换该层数据的原始哈希值,生成加密特征,计算公钥哈希值,将所述加密特征和公钥哈希值保存在所述原始Docker镜像的镜像描述清单中的Labels字段,得到加密Docker镜像的镜像描述清单,将加密Docker镜像每一层的数据、加密Docker镜像的镜像描述清单重组得到加密Docker镜像,根据加密Docker镜像的描述清单计算镜像ID并重命名加密Docker镜像,将重命名后的加密Docker镜像上传至镜像仓库。
进一步的,所述密钥管理模块还用于在Kubernetes集群中搭建vault服务器,然后在Kubernetes API Server所在节点部署KMS插件。
进一步的,所述所述镜像解密模块还被配置以执行:
获取kubelet创建的初始化容器,将目标Docker镜像的名称作为所述初始化容器的环境变量;
将宿主机的Docker Socket文件映射到所述初始化容器中;
根据所述Docker Socket文件,在初始化容器中使用Docker client API查找宿主机中的目标Docker镜像信息,若存在查找结果,则目标Docker镜像已部署并解密,初始化容器返回成功且kubelet继续创建应用容器,若不存在查找结果,则目标Docker镜像未部署。
进一步的,所述镜像解密模块还用于将Secret资源对象映射到所述初始化容器中,以及将镜像存储目录映射到所述初始化容器中,所述镜像解密模块还被配置以执行:
根据镜像存储目录,从镜像仓库中拉取目标Docker镜像,在初始化容器中使用Docker client API获取目标Docker镜像的镜像描述清单;
若所述描述清单中没有加密特征,则目标Docker镜像不是加密Docker镜像,初始化容器返回成功之后kubelet继续创建应用容器,若所述描述清单中有加密特征,通过密钥管理模块读取所映射的Secret资源对象;
在初始化容器中使用Docker client API,将目标Docker镜像的镜像描述清单中的公钥哈希值匹配Secret资源对象,若存在匹配结果,则用对应的私钥解密目标Docker镜像每一层的数据,解密完成后初始化容器返回成功,若不存在匹配结果或者解密失败,初始化容器返回失败。
和现有技术相比,本发明具有下述优点:
1.本发明对于Docker镜像每一层加密,提高了Docker镜像的安全性,避免了敏感数据被泄露的风险。
2.本发明将私钥和公钥信息保存在Secret资源对象中,通过获取Secret资源对象并提取其中的公钥信息和私钥,就可以解密Docker镜像,从而实现了加密Docker镜像在Kubernetes中的编排部署。
3.本发明通过KMS插件和vault服务器对Secret资源对象动态加解密,进一步保障了Secret资源对象的安全性。
附图说明
图1是本发明实施例的系统结构示意图。
图2是本发明实施例的镜像加密模块工作流程示意图。
图3是本发明实施例的密钥管理模块结构示意图。
图4是本发明实施例的镜像解密模块工作流程示意图。
图5是本发明实施例的方法流程示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
本实施例针对加密Docker镜像在Kubernetes中编排部署难以实现的情况,提出一种Docker镜像加密及编排系统,如图1所示,该系统包括以下几部分
镜像加密模块,用于对原始Docker镜像进行加密,得到加密Docker镜像;
密钥管理模块,用于对解密的私钥以Secret资源对象的形式进行加解密管理;
镜像解密模块,用于验证和解密Docker镜像。
本实施例中,镜像加密模块为Docker镜像提供了一种加密方式,其使用公钥对原始Docker镜像每一层的数据加密,得到加密层数据以及对应的加密特征,将所述加密特征和公钥哈希值保存在加密Docker镜像的镜像描述清单中,在此基础上重组加密Docker镜像,并将所述加密Docker镜像上传至镜像仓库,从而提高了Docker镜像的安全性,避免了敏感数据被泄露的风险。
本实施例中,镜像加密模块内部包括:
镜像解析单元,用于解析原始Docker镜像,得到原始Docker镜像每一层数据的层关系、原始Docker镜像的镜像描述清单、以及每一层数据的原始哈希值,本实施例中,哈希值采用SHA256算法得到;
分层加密单元,用于使用公钥逐层加密原始Docker镜像每一层的数据,得到加密Docker镜像每一层的数据,并计算加密后的每一层数据的哈希值,公钥采用国密SM2椭圆曲线算法,是一种更先进更安全的非对称加密算法,在我们国家商用密码体系中被用来替换RSA算法。它具有密码复杂性高、处理速度快、机器性能消耗更小的特点;
镜像重组单元,用于将加密后的每一层数据的哈希值替换该层数据的原始哈希值,生成加密特征,加密特征可以是镜像描述清单中预设位置的值,例如每一层数据的哈希值均发生改变,则该位置的值也改变,表示Docker镜像已加密,否则该位置的值保持不变,表示Docker镜像未加密,计算公钥哈希值,将所述加密特征和公钥哈希值保存在所述原始Docker镜像的镜像描述清单中的Labels字段,得到加密Docker镜像的镜像描述清单,将加密Docker镜像每一层的数据、加密Docker镜像的镜像描述清单重组得到加密Docker镜像,根据加密Docker镜像的描述清单计算镜像ID并重命名加密Docker镜像,将重命名后的加密Docker镜像上传至镜像仓库。
各功能单元的工作流程如图2所示,分层加密单元解析原始Docker镜像,以获取原始镜像的层关系和镜像描述清单,分层加密单元使用SM2公钥对镜像进行逐层加密,并重新计算每层的SHA256值,镜像重组单元在镜像描述清单加入加密特征和公钥SHA256值、重构得到新镜像、重命名新镜像、重新计算镜像ID、打包新镜像上传至镜像仓库。
本实施例中,密钥管理模块提供了对于私钥的保护和管理,如图4所示,其在Kubernetes集群中搭建独立的vault服务器,然后在Kubernetes API Server所在节点部署KMS插件,以提供Secret资源对象的加解密功能,如图3所示,在Secret资源对象中录入私钥和所述私钥对应公钥的哈希值之后,利用KMS插件的加密接口,vault服务器对所述Secret资源对象实时动态加密,即每次加密的密码均不相同,加密后的Secret资源对象最后会存储到到集群中的Etcd中;当Secret资源对象要被读取使用时,利用KMS插件的加密接口,vault服务器对所述Secret资源对象进行解密,得到解密后的Secret资源对象以供使用。
本实施例中,镜像解密模块将解密的实施过程以容器化的形式,追加在Kubernetes的加密镜像应用清单中的初始化阶段如Deployment、DaemonSet、StatefulSet等部署清单中,以在初始化过程中对于Docker镜像进行解密。本实施例中Kubernetes的加密镜像应用清单的代码如下所示:
Figure BDA0003653042180000071
上述代码表示在kubernetes中部署加密Docker镜像的应用时,在定义的应用清单中解密该Docker镜像。其中,InitContainer中的decryptimg:v1.0为初始化容器,其作为解密的核心模块,被隐藏至加密应用清单中的初始化阶段,将在应用容器创建之前执行解密待部署的Docker镜像;ENCIMAGENAME环境变量为要部署的Docker镜像名;Volumes中的Secret secretName是所存储的secret资源对象的名字;ENCIMAGENAME和Volumes中的Secret secretName可根据不同的应用进行调整。
本实施例中,镜像解密模块提供了初始化的同时对加密Docker镜像进行解密的功能,其在目标Docker镜像未部署时,从镜像仓库中拉取目标Docker镜像,利用初始化容器获取目标Docker镜像的镜像描述清单,根据目标Docker镜像的镜像描述清单中的加密特征,判断目标Docker镜像是否为加密Docker镜像,是则通过密钥管理模块读取Secret资源对象得到其中的私钥和对应的公钥哈希值,将目标Docker镜像的镜像描述清单中的公钥哈希值匹配Secret资源对象解密得到的公钥哈希值,若匹配成功则用对应的私钥解密目标Docker镜像每一层的数据,具体的,如图4所示,镜像解密模块被配置以执行:
获取kubelet创建的初始化容器,并加入目标Docker镜像的镜像描述清单中,将目标Docker镜像的名称作为所述初始化容器的环境变量,根据Secret资源对象的名称,将对应的Secret资源对象映射到所述初始化容器中;
将宿主机的Docker Socket文件和镜像存储目录映射到所述初始化容器中;
根据所述Docker Socket文件,在初始化容器中使用Docker client API查找宿主机中的目标Docker镜像信息,若存在查找结果,则目标Docker镜像已部署并解密,初始化容器返回成功,kubelet继续创建应用容器,若不存在查找结果,则目标Docker镜像未部署;
若目标Docker镜像未部署,根据镜像存储目录,从镜像仓库中拉取目标Docker镜像,在初始化容器中使用Docker client API获取目标Docker镜像的镜像描述清单;
从目标Docker镜像的镜像描述清单的labels字段获取加密特征和公钥哈希值,若所述描述清单中没有加密特征,例如前文中预设位置的值未改变、不是目标值或者不存在,均可认为目标Docker镜像没有被加密,则目标Docker镜像不是加密Docker镜像,则初始化容器返回成功,kubelet继续创建应用容器,若所述描述清单中有加密特征,即前文中预设位置的值发生改变或者是目标值,则说明目标Docker镜像被加密;
若目标Docker镜像被加密,根据所映射的Secret资源对象的名称,通过密钥管理模块读取所映射的Secret资源对象,即对所映射的Secret资源进行解密,得到其中的私钥和对应的公钥哈希值;
在初始化容器中使用Docker client API,将目标Docker镜像的镜像描述清单中的公钥哈希值匹配解密后的Secret资源中的公钥哈希值,若存在匹配结果,则用对应的私钥解密目标Docker镜像每一层的数据,解密完成后初始化容器返回成功消息并且kubelet将继续创建应用容器,若不存在匹配结果或者解密失败,初始化容器返回失败消息到kubernetes的API Server。
基于本实施例中的Docker镜像加密及编排系统,本实施例还提出一种Docker镜像加密及编排方法,如图5所示:
首先,依次构建前述的镜像加密模块、密钥管理模块和镜像解密模块,然后执行以下步骤:
S1)镜像加密模块使用公钥对原始Docker镜像每一层的数据加密,得到加密层数据以及对应的加密特征,将所述加密特征和公钥哈希值保存在加密Docker镜像的镜像描述清单中,重组加密Docker镜像将所述加密Docker镜像上传至镜像仓库;
S2)密钥管理模块定义Kubernetes的Secret资源对象并在Secret资源对象中录入私钥和所述私钥对应公钥的哈希值,通过KMS插件和vault服务器对所述Secret资源对象实时加解密;
S3)镜像解密模块在Kubernetes中部署加密镜像应用时,如以Deployment、DeamonSet、StatefulSet等部署,在目标Docker镜像的应用清单中加入用于解密镜像的初始化容器,在目标Docker镜像未部署时,从镜像仓库中拉取目标Docker镜像,利用初始化容器判断判断目标Docker镜像是否为加密Docker镜像,是则由密钥管理模块通过KMS插件和vault服务器对所述Secret资源对象解密得到其中的私钥和对应公钥哈希值,将目标Docker镜像的镜像描述清单中的公钥哈希值匹配Secret资源对象解密得到的公钥哈希值,若匹配成功则用对应的私钥解密目标Docker镜像每一层的数据;
S4)若目标Docker镜像解密成功,镜像解密模块的初始化容器返回成功后,Kubernetes中的kubelet继续创建应用容器,解密后的目标Docker镜像中的应用被部署到所述应用容器中;若目标Docker镜像解密失败,镜像解密模块的初始化容器返回失败,kubelet终止创建应用容器,并将错误信息上报至Kubernetes的API Server模块。
本实施例中,步骤S1)中,镜像加密模块具体执行以下步骤:
S11)解析原始Docker镜像,得到原始Docker镜像每一层数据的层关系、原始Docker镜像的镜像描述清单、以及每一层数据的原始哈希值;
S12)使用公钥逐层加密原始Docker镜像每一层的数据,得到加密Docker镜像每一层的数据,并计算加密后的每一层数据的哈希值;
S13)将加密后的每一层数据的哈希值替换该层数据的原始哈希值,生成加密特征,计算公钥哈希值,将所述加密特征和公钥哈希值保存在所述原始Docker镜像的镜像描述清单中的Label字段,得到加密Docker镜像的镜像描述清单,将加密Docker镜像每一层的数据和加密Docker镜像的镜像描述清单重组为加密Docker镜像,根据加密Docker镜像的描述清单计算镜像ID并重命名加密Docker镜像,将重命名后的加密Docker镜像上传至镜像仓库。
本实施例中,密钥管理模块在步骤S2)之前还执行搭建vault服务器和部署KMS插件的步骤,具体包括:在Kubernetes集群中搭建vault服务器,然后在Kubernetes APIServer所在节点部署KMS插件。
本实施例中,镜像解密模块在步骤S3)中在目标Docker镜像的应用清单中加入用于解密镜像的初始化容器步骤包括:
S301)获取kubelet创建的初始化容器,将目标Docker镜像的名称作为所述初始化容器的环境变量;
S302)将宿主机的Docker Socket文件映射到所述初始化容器中;
S303)根据所述Docker Socket文件,在初始化容器中使用Docker client API查找宿主机中的目标Docker镜像信息,若存在查找结果,则目标Docker镜像已部署并解密,初始化容器返回成功并执行步骤S4),若不存在查找结果,则目标Docker镜像未部署。
本实施例中,镜像解密模块在步骤S301)中还将Secret资源对象映射到所述初始化容器中;在步骤S302)中还将镜像存储目录映射到所述初始化容器中;镜像解密模块在步骤S303)之后具体执行以下步骤:
S31)根据镜像存储目录,从镜像仓库中拉取目标Docker镜像,在初始化容器中使用Docker client API获取目标Docker镜像的镜像描述清单;
S32)若所述描述清单中没有加密特征,则目标Docker镜像不是加密Docker镜像,初始化容器返回成功并执行步骤S4),若所述描述清单中有加密特征,找到被映射的Secret资源对象,并通过KMS插件和vault服务器对所映射的Secret资源对象解密;
S33)在初始化容器中使用Docker client API,将目标Docker镜像的镜像描述清单中的公钥哈希值匹配Secret资源对象,若存在匹配结果,则用对应的私钥解密目标Docker镜像每一层的数据,解密完成后初始化容器返回成功并执行步骤S4),若不存在匹配结果或者解密失败,初始化容器返回失败。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。

Claims (10)

1.一种Docker镜像加密及编排方法,其特征在于,包括以下步骤:
S1)使用公钥对原始Docker镜像每一层的数据加密,得到加密后的层数据以及对应的加密特征,将所述加密特征和公钥哈希值保存在原始Docker镜像的镜像描述清单中,重组加密Docker镜像,将所述加密Docker镜像上传至镜像仓库;
S2)定义Kubernetes的Secret资源对象并录入私钥和对应公钥的哈希值,通过KMS插件和vault服务器对所述Secret资源对象实时加解密;
S3)在Kubernetes中部署加密镜像应用时,在目标Docker镜像的应用清单中加入用于解密的初始化容器,若目标Docker镜像未部署,从镜像仓库中拉取目标Docker镜像,利用初始化容器判断目标Docker镜像是否为加密Docker镜像,是则通过KMS插件和vault服务器对所述Secret资源对象解密得到所述私钥和对应的公钥哈希值,将目标Docker镜像的镜像描述清单中的公钥哈希值匹配Secret资源对象解密得到的公钥哈希值,若匹配成功则用对应的私钥解密目标Docker镜像每一层的数据;
S4)若目标Docker镜像解密成功,Kubernetes中的kubelet继续创建应用容器,解密后的目标Docker镜像中的应用被部署到所述应用容器中;若目标Docker镜像解密失败,则终止创建应用容器,且kubelet将错误信息上报至Kubernetes的API Server模块。
2.根据权利要求1所述的Docker镜像加密及编排方法,其特征在于,步骤S1)具体包括以下步骤:
S11)解析原始Docker镜像,得到原始Docker镜像每一层数据的层关系、原始Docker镜像的镜像描述清单、以及每一层数据的原始哈希值;
S12)使用公钥逐层加密原始Docker镜像每一层的数据,得到加密Docker镜像每一层的数据,并计算加密后的每一层数据的哈希值;
S13)用加密后的每一层数据的哈希值替换该层的原始哈希值,生成加密特征,计算公钥哈希值,将它们保存在所述原始Docker镜像的镜像描述清单中的Labels字段,得到加密Docker镜像的描述清单,并重组得到加密Docker镜像,根据加密Docker镜像的描述清单计算镜像ID并重命名加密Docker镜像,将重命名后的加密Docker镜像上传至镜像仓库。
3.根据权利要求1所述的Docker镜像加密及编排方法,其特征在于,步骤S2)之前还包括搭建vault服务器和部署KMS插件的步骤,具体包括:在Kubernetes集群中搭建vault服务器,然后在Kubernetes API Server所在节点部署KMS插件。
4.根据权利要求1所述的Docker镜像加密及编排方法,其特征在于,步骤S3)中在目标Docker镜像的应用清单中加入用于解密镜像的初始化容器步骤具体包括:
S301)获取kubelet创建的初始化容器,将目标Docker镜像的名称作为所述初始化容器的环境变量;
S302)将宿主机的Docker Socket文件映射到所述初始化容器中;
S303)根据所述Docker Socket文件,在初始化容器中使用Docker client API查找宿主机中的目标Docker镜像信息,若存在查找结果,则目标Docker镜像已部署并解密,初始化容器返回成功并执行步骤S4),若不存在查找结果,则目标Docker镜像未部署。
5.根据权利要求4所述的Docker镜像加密及编排方法,其特征在于,步骤S301)还包括将Secret资源对象映射到所述初始化容器中;步骤S302)还包括将镜像存储目录映射到所述初始化容器中;步骤S303)之后具体包括以下步骤:
S31)根据镜像存储目录,从镜像仓库中拉取目标Docker镜像,在初始化容器中使用Docker client API获取目标Docker镜像的镜像描述清单;
S32)若所述描述清单中没有加密特征,则目标Docker镜像不是加密Docker镜像,初始化容器返回成功并执行步骤S4),若所述描述清单中有加密特征,找到被映射的Secret资源对象,并通过KMS插件和vault服务器对所映射的Secret资源对象解密;
S33)在初始化容器中使用Docker client API,将目标Docker镜像的镜像描述清单中的公钥哈希值匹配Secret资源对象,若存在匹配结果,则用对应的私钥解密目标Docker镜像每一层的数据,解密完成后初始化容器返回成功并执行步骤S4),若不存在匹配结果或者解密失败,初始化容器返回失败。
6.一种Docker镜像加密及编排系统,其特征在于,包括:
镜像加密模块,用于使用公钥对原始Docker镜像每一层的数据加密,得到加密后的层数据以及对应的加密特征,将所述加密特征和公钥哈希值保存在原始Docker镜像的镜像描述清单中并重组为加密Docker镜像,将所述加密Docker镜像上传至镜像仓库;
密钥管理模块,用于定义Kubernetes的Secret资源对象并在Secret资源对象中录入私钥和所述私钥对应公钥的哈希值,通过KMS插件和vault服务器对所述Secret资源对象实时加密;还用于读取Secret资源对象时通过KMS插件和vault服务器对所述Secret资源对象解密;
镜像解密模块,用于在Kubernetes中部署加密镜像应用时,加密镜像的应用清单中加入用于解密的初始化容器,若目标Docker镜像未部署,从镜像仓库中拉取目标Docker镜像,利用初始化容器判断目标Docker镜像是否为加密Docker镜像,是则通过密钥管理模块读取Secret资源对象得到所述私钥和对应的公钥哈希值,将目标Docker镜像的镜像描述清单中的公钥哈希值匹配Secret资源对象解密得到的公钥哈希值,若匹配成功则用对应的私钥解密目标Docker镜像每一层的数据。
7.根据权利要求6所述的Docker镜像加密及编排系统,其特征在于,所述镜像加密模块具体包括:
镜像解析单元,用于解析原始Docker镜像,得到原始Docker镜像每一层数据的层关系、原始Docker镜像的镜像描述清单、以及每一层数据的原始哈希值;
分层加密单元,用于使用公钥逐层加密原始Docker镜像每一层的数据,得到加密Docker镜像每一层的数据,并计算加密后的每一层的哈希值;
镜像重组单元,用于将加密后的每一层数据的哈希值替换该层数据的原始哈希值,生成加密特征,计算公钥哈希值,将所述加密特征和公钥哈希值保存在所述原始Docker镜像的镜像描述清单中的Labels字段,得到加密Docker镜像的镜像描述清单,将加密Docker镜像每一层的数据、加密Docker镜像的镜像描述清单重组得到加密Docker镜像,根据加密Docker镜像的描述清单计算镜像ID并重命名加密Docker镜像,将重命名后的加密Docker镜像上传至镜像仓库。
8.根据权利要求6所述的Docker镜像加密及编排系统,其特征在于,所述密钥管理模块还用于在Kubernetes集群中搭建vault服务器,然后在Kubernetes API Server所在节点部署KMS插件。
9.根据权利要求6所述的Docker镜像加密及编排系统,其特征在于,所述镜像解密模块还被配置以执行:
获取kubelet创建的初始化容器,将目标Docker镜像的名称作为所述初始化容器的环境变量;
将宿主机的Docker Socket文件映射到所述初始化容器中;
根据所述Docker Socket文件,在初始化容器中使用Docker client API查找宿主机中的目标Docker镜像信息,若存在查找结果,则目标Docker镜像已部署并解密,初始化容器返回成功且kubelet继续创建应用容器,若不存在查找结果,则目标Docker镜像未部署。
10.根据权利要求9所述的Docker镜像加密及编排系统,其特征在于,所述镜像解密模块还用于将Secret资源对象映射到所述初始化容器中,以及将镜像存储目录映射到所述初始化容器中,所述镜像解密模块还被配置以执行:
根据镜像存储目录,从镜像仓库中拉取目标Docker镜像,在初始化容器中使用Dockerclient API获取目标Docker镜像的镜像描述清单;
若所述描述清单中没有加密特征,则目标Docker镜像不是加密Docker镜像,则返回成功之后kubelet继续创建应用容器,若所述描述清单中有加密特征,通过密钥管理模块读取所映射的Secret资源对象;
在初始化容器中使用Docker client API,将目标Docker镜像的镜像描述清单中的公钥哈希值匹配Secret资源对象,若存在匹配结果,则用对应的私钥解密目标Docker镜像每一层的数据,解密完成后初始化容器返回成功,若不存在匹配结果或者解密失败,初始化容器返回失败。
CN202210547157.0A 2022-05-19 2022-05-19 一种Docker镜像加密及编排方法与系统 Active CN114978672B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210547157.0A CN114978672B (zh) 2022-05-19 2022-05-19 一种Docker镜像加密及编排方法与系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210547157.0A CN114978672B (zh) 2022-05-19 2022-05-19 一种Docker镜像加密及编排方法与系统

Publications (2)

Publication Number Publication Date
CN114978672A true CN114978672A (zh) 2022-08-30
CN114978672B CN114978672B (zh) 2024-03-26

Family

ID=82984310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210547157.0A Active CN114978672B (zh) 2022-05-19 2022-05-19 一种Docker镜像加密及编排方法与系统

Country Status (1)

Country Link
CN (1) CN114978672B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102025743A (zh) * 2010-12-20 2011-04-20 北京世纪互联工程技术服务有限公司 一种云计算中虚拟机镜像导出方法及装置
US20170180346A1 (en) * 2015-12-18 2017-06-22 Amazon Technologies, Inc. Software container registry service
CN109587233A (zh) * 2018-11-28 2019-04-05 深圳前海微众银行股份有限公司 多云容器管理方法、设备及计算机可读存储介质
CN112054899A (zh) * 2020-08-28 2020-12-08 航天科工网络信息发展有限公司 一种基于加密机的容器镜像加密管理方法
US20210303365A1 (en) * 2020-03-26 2021-09-30 Vmware, Inc. System and method for benchmarking a container orchestration platform
CN113572619A (zh) * 2021-09-22 2021-10-29 银河麒麟软件(长沙)有限公司 一种基于notary的容器云镜像可信实现方法及系统
CN114254399A (zh) * 2021-12-23 2022-03-29 中国工商银行股份有限公司 一种镜像安全检查方法、装置、电子设备和存储介质
CN114266060A (zh) * 2021-12-28 2022-04-01 航天科工智能运筹与信息安全研究院(武汉)有限公司 一种模型容器加密与部署方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102025743A (zh) * 2010-12-20 2011-04-20 北京世纪互联工程技术服务有限公司 一种云计算中虚拟机镜像导出方法及装置
US20170180346A1 (en) * 2015-12-18 2017-06-22 Amazon Technologies, Inc. Software container registry service
CN109587233A (zh) * 2018-11-28 2019-04-05 深圳前海微众银行股份有限公司 多云容器管理方法、设备及计算机可读存储介质
US20210303365A1 (en) * 2020-03-26 2021-09-30 Vmware, Inc. System and method for benchmarking a container orchestration platform
CN112054899A (zh) * 2020-08-28 2020-12-08 航天科工网络信息发展有限公司 一种基于加密机的容器镜像加密管理方法
CN113572619A (zh) * 2021-09-22 2021-10-29 银河麒麟软件(长沙)有限公司 一种基于notary的容器云镜像可信实现方法及系统
CN114254399A (zh) * 2021-12-23 2022-03-29 中国工商银行股份有限公司 一种镜像安全检查方法、装置、电子设备和存储介质
CN114266060A (zh) * 2021-12-28 2022-04-01 航天科工智能运筹与信息安全研究院(武汉)有限公司 一种模型容器加密与部署方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
TORKURA等: "CAVAS: Neutralizing Application and Container Security Vulnerabilities in the Cloud Native Era", 《 SECURITY AND PRIVACY IN COMMUNICATION NETWORKS》, 31 December 2018 (2018-12-31) *
李翔;: "在私有Kubernetes集群中实现服务的负载均衡", 电子技术与软件工程, no. 14, 15 July 2020 (2020-07-15) *
许丽婷;傅翔君;杨晶晶;: "基于Docker技术的分层式数据安全性防护系统", 信息化研究, no. 01, 20 February 2017 (2017-02-20) *

Also Published As

Publication number Publication date
CN114978672B (zh) 2024-03-26

Similar Documents

Publication Publication Date Title
US10043029B2 (en) Cloud storage encryption
WO2022252632A1 (zh) 一种数据加密处理方法、装置、计算机设备及存储介质
US10445517B1 (en) Protecting data in insecure cloud storage
JP5679018B2 (ja) データベース暗号化システムと方法及びプログラム
US9430211B2 (en) System and method for sharing information in a private ecosystem
US8213620B1 (en) Method for managing cryptographic information
EP3565174B1 (en) Access management system, access management method, and program
US20180341556A1 (en) Data backup method and device, storage medium and server
CN111884986B (zh) 一种数据加密处理方法、装置及存储介质
GB2522971A (en) Unclonable ID based chip-to-chip communication
Virvilis et al. Secure cloud storage: Available infrastructures and architectures review and evaluation
US10963593B1 (en) Secure data storage using multiple factors
US10630722B2 (en) System and method for sharing information in a private ecosystem
Dowsley et al. A survey on design and implementation of protected searchable data in the cloud
CN103546547A (zh) 一种云存储文件加密系统
Virvilis et al. A cloud provider-agnostic secure storage protocol
EP4020265A1 (en) Method and device for storing encrypted data
CN111901105B (zh) 一种基于UEFI架构EDK2支持Openssl算法的方法与设备
CN117061126A (zh) 一种管理云盘文件加密与解密的系统和方法
CN116132041A (zh) 密钥处理方法、装置、存储介质及电子设备
CN114978672B (zh) 一种Docker镜像加密及编排方法与系统
CN114266060B (zh) 一种模型容器加密与部署方法
CN110430046B (zh) 一种面向云环境的可信平台模块两阶段密钥复制方法
CN111130788B (zh) 数据处理方法和系统、数据读取方法和iSCSI服务器
US20240204986A1 (en) Data protection using portable data structures

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