CN113296879B - 容器创建方法以及装置 - Google Patents
容器创建方法以及装置 Download PDFInfo
- Publication number
- CN113296879B CN113296879B CN202011187216.5A CN202011187216A CN113296879B CN 113296879 B CN113296879 B CN 113296879B CN 202011187216 A CN202011187216 A CN 202011187216A CN 113296879 B CN113296879 B CN 113296879B
- Authority
- CN
- China
- Prior art keywords
- trusted application
- level
- file
- container
- keyword
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000005192 partition Methods 0.000 claims abstract description 174
- 239000000463 material Substances 0.000 claims description 23
- 238000006243 chemical reaction Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 10
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- BDEDPKFUFGCVCJ-UHFFFAOYSA-N 3,6-dihydroxy-8,8-dimethyl-1-oxo-3,4,7,9-tetrahydrocyclopenta[h]isochromene-5-carbaldehyde Chemical compound O=C1OC(O)CC(C(C=O)=C2O)=C1C1=C2CC(C)(C)C1 BDEDPKFUFGCVCJ-UHFFFAOYSA-N 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供容器创建方法,包括:接收可信应用容器创建请求,所述可信应用容器创建请求中包含用于创建所述可信应用容器的镜像标识以及容器运行环境文件,根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果,将命中的各层级的可信应用缓存分区的缓存数据加载到镜像中,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件,其中所述依赖关系包括下一层级文件的生成依赖于上一层级的文件,基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器。
Description
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种容器创建方法。本说明书一个或者多个实施例同时涉及一种容器创建装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
随着以容器为基础的云原生技术被用户接受,越来越多的用户开始拥抱云原生,随之而来的数据安全问题也越来越受到了重视,甚至成为部分用户无法上云的最大阻碍。
机密计算技术能在基于硬件的可信执行环境中保证使用中数据和代码的机密性,完整性和安全性,但机密计算技术的复杂度和使用门槛比较高,非常不利于机密计算技术的普及,为此,目前部分服务提供方为用户开源了运行可信应用容器的技术栈,用户通过技术栈运行可信应用容器的过程中无需关心机密计算实现细节,同时又能保持与普通容器一致的使用体感。但与普通容器相比,通过技术栈运行可信应用容器的过程增加了文件系统转换的时间,而文件系统越大转换的时间也就越长,从而会对容器创建效率产生影响。
因此,亟需提供一种有效的方法以解决此类问题。
发明内容
有鉴于此,本说明书实施例提供了一种容器创建方法。本说明书一个或者多个实施例同时涉及一种容器创建装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种容器创建方法,包括:
接收可信应用容器创建请求,所述可信应用容器创建请求中包含用于创建所述可信应用容器的镜像标识以及容器运行环境文件;
根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果;
将命中的各层级的可信应用缓存分区的缓存数据加载到镜像中,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件,其中所述依赖关系包括下一层级文件的生成依赖于上一层级的文件;
基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器。
可选地,根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果,包括:
根据所述镜像标识生成源数据,基于所述源数据还原关键字,并根据所述源数据的文件类型确定所述关键字的目标可信应用缓存分区为第一层级的可信应用缓存分区;
将所述关键字与所述第一层级的可信应用缓存分区对应的关键字列表中包含的关键字进行比对;
若根据比对结果确定所述关键字列表中存在任意一个关键字与所述关键字一致,则确定所述第一层级的可信应用缓存分区被命中。
可选地,根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果还包括:
根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件确定第i层级的关键字,并将所述关键字与所述可信应用缓存目录下第i层级的可信应用缓存分区对应的关键字列表进行对比,其中,i为大于等于2的整数;
若根据比对结果确定所述关键字列表中存在任意一个关键字与所述关键字一致,则确定所述第i层级的可信应用缓存分区被命中。
可选地,根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果还包括:
若根据比对结果确定所述关键字列表的关键字均与所述关键字不一致,则确定所述第i层级的可信应用缓存分区未命中。
可选地,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件包括:
根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件生成第i层级对应的可信应用文件。
可选地,根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件生成第i层级对应的可信应用文件,包括:
根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件生成第i层级对应的未签名的初始动态库文件;
利用签名工具对所述第i层级对应的未签名的初始动态库文件进行签名,生成第i+1层级对应的安全域动态库文件。
可选地,所述容器创建方法,还包括:
在可信应用缓存目录下的第i层级添加关键字目录,并将第i层级对应的可信应用文件缓存到所述关键字目录下。
可选地,根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果,还包括:
若根据比对结果确定所述关键字列表中关键字均与所述关键字不一致,则确定所述第一层级的可信应用缓存分区未命中。
可选地,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件包括:
根据所述源数据生成初始可信应用文件;
基于所述初始可信应用文件生成未签名的初始动态库文件;
利用签名工具对所述初始动态库文件进行签名,生成安全域动态库文件。
可选地,利用签名工具对所述初始动态库文件进行签名,生成安全域动态库文件,包括:
从所述初始动态库文件中导出签名材料;
调用签名服务对所述签名材料进行签名处理,并获取签名生成的摘要文件以及公钥文件;
基于所述摘要文件、所述公钥文件以及所述初始动态库文件生成所述安全域动态库文件。
可选地,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件包括:
根据所述源数据生成第一层级对应的初始可信应用文件。
可选地,所述容器创建方法,还包括:
在可信应用缓存目录下的第一层级添加关键字目录,并将所述第一层级对应的初始可信应用文件缓存到所述关键字目录下。
可选地,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件包括:
根据第j-1层级的可信应用缓存分区的缓存数据和第j层级的容器运行环境文件生成第j层级对应的可信应用文件,其中,j为大于等于2的整数;
在可信应用缓存目录下的第j层级添加关键字目录,并将第j层级对应的可信应用文件缓存到所述关键字目录下。
可选地,在可信应用缓存目录下的第j层级添加关键字目录,包括:
根据第j-1层级的可信应用缓存分区的缓存数据和第j层级的容器运行环境文件确定第j层级的关键字;
将所述第j层级的缓存数据作为键值,与所述关键字构成第j键值对,并基于所述第j层级的可信应用缓存分区的分区标识以及所述第j键值对作为关键字目录添加至所述第j层级。
可选地,基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器,包括:
将所述未命中层级对应的可信应用文件加载到所述镜像中,并基于所述镜像创建所述可信应用容器。
可选地,基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器,包括:
基于所述初始可信应用文件、所述初始动态库文件以及所述安全域动态库文件组合获得用于创建所述可信应用容器的目标可信应用文件;
将所述目标可信应用文件加载到镜像中,并基于所述镜像创建所述可信应用容器。
根据本说明书实施例的第二方面,提供了一种容器创建装置,包括:
接收模块,被配置为接收可信应用容器创建请求,所述可信应用容器创建请求中包含用于创建所述可信应用容器的镜像标识以及容器运行环境文件;
确定模块,被配置为根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果;
加载模块,被配置为将命中的各层级的可信应用缓存分区的缓存数据加载到镜像中,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件,其中所述依赖关系包括下一层级文件的生成依赖于上一层级的文件;
创建模块,被配置为基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令以实现所述容器创建方法的步骤。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述容器创建方法的步骤。
本说明书一个实施例通过接收可信应用容器创建请求,所述可信应用容器创建请求中包含用于创建所述可信应用容器的镜像标识以及容器运行环境文件,根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果,将命中的各层级的可信应用缓存分区的缓存数据加载到镜像中,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件,其中所述依赖关系包括下一层级文件的生成依赖于上一层级的文件,基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器;
实现了在接收到可信应用容器创建请求后,即根据所述可信应用容器中包含的镜像标识在可信应用缓存目录中查找各可信应用缓存分区中是否存储有用于创建所述可信应用容器的可信应用文件,而无需重新进行部分或全部的可信应用文件转换,有利于减少可信应用文件转换的时间开销,以提高容器创建效率。
附图说明
图1是本说明书一个实施例提供的一种容器创建方法的处理流程图;
图2是本说明书一个实施例提供的一种可信应用缓存目录的示意图;
图3是本说明书一个实施例提供的一种可信应用文件转换过程的示意图;
图4是本说明书一个实施例提供的一种容器创建方法的交互示意图;
图5是本说明书一个实施例提供的一种容器创建装置的示意图;
图6是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
TEE:(Trusted Execution Environment,可信执行环境)是主处理器上的一个安全区域,其可以保证加载到该环境内部的代码和数据的安全性、机密性以及完整性。
英特尔软件保护扩展:一组与安全相关的指令代码,它们内置在某些现代的英特尔中央处理器(CPU)中。
Enclave:是基于英特尔软件保护扩展实现的一种TEE。
Inclavare Containers:利用基于硬件支持的Enclave技术运行可信应用容器的技术栈。
library OS:库操作系统,这是一种在最小计算资源环境下用于单一目的(最低限度内核的功能性)、使用单一语言、单一地址空间且可以自启动的虚拟机。
Occlum:Occlum是基于英特尔软件保护扩展技术并实现了内存安全的多进程Library OS。
签名服务:是一个Enclave签名平台,该平台内存放了用于签名的私钥,可接收Enclave签名材料并利用私钥对其签名,并返回摘要文件。
Bundle:即OCI Bundle,是镜像解压后的文件系统的集合。
Enclave Bundle:一种特殊包含了Enclave动态库文件的特殊Bundle,运行Enclave动态库文件可以创建Enclave并在Enclave内执行应用。
Enclave Runtime:Enclave运行时,表示Enclave的运行环境。
Containerd:一个工业级标准的容器运行时,它强调简单性、健壮性和可移植性。Containerd可以在宿主机中管理完整的容器生命周期:源数据的传输和存储、容器的执行和管理、存储和网络等。
runC:是Docker(一个开源的应用容器引擎)按照开放容器格式标准(OCF,OpenContainer Format)制定的一种具体实现,实现了容器启停、资源隔离等功能。
rune:一个命令行工具,用于根据OCI(Open Container Initiative)规范在容器中生成和运行Enclave。rune是在runc代码基础上开发的,既可以运行普通runc容器也可以运行Enclave容器。
shim-rune:为容器运行时rune提供的shim,主要负责管理容器的生命周期、把普通镜像转换成TEE镜像。
Carrier:shim-rune中的一个模块,负责对接不同Enclave Runtime完成普通Bundle到Enclave Bundle的转换,Occlum就是一种Enclave Runtime。
机密性:机密性指信息指在未验证状态下信息不能被用户获取。
完整性:完整性表示,经过验证的用户访问数据时,数据没有发生过任何改动,是原生的数据。
在本说明书中,提供了一种容器创建方法,本说明书同时涉及一种容器创建装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一个实施例提供的一种容器创建方法的处理流程图,包括步骤102至步骤108。
步骤102,接收可信应用容器创建请求,所述可信应用容器创建请求中包含用于创建所述可信应用容器的镜像标识以及容器运行环境文件。
具体的,机密计算是在一个基于硬件的可信执行环境(TEE)中保护数据执行计算,机密计算的核心功能有:保护使用中数据的机密性、保护使用中数据的完整性以及保护使用中数据的安全性。
本说明书实施例提供的容器创建方法,应用于Inclavare Containers,并且Inclavare Containers的目的在于为用户提供一款面向机密计算领域的开源容器运行时引擎和安全架构。
在Inclavare Containers架构下的容器中运行可信应用涉及到的组件包括:kubelet、Containerd、shim-rune、rune以及Enclave Runtime等;其中kubelet是Kubernetes集群中每个Node节点上运行的主要“节点代理”,负责与Apiserver的通信和管理节点上Pod,所述可信应用容器创建请求即kubelet向Containerd发起,Containerd中有一个cri-containerd的插件实现了CRI接口,Containerd接收到请求后,把请求转给shim-rune;另外,Enclave Runtime表示支持运行Enclave的运行时,目前Inclavare Containers支持的Enclave Runtime有Occlum,Occlum是基于英特尔软件保护扩展技术并实现了内存安全的多进程Library OS,使用英特尔软件保护扩展作为支持TEE的硬件平台,有利于提高应用的代码和数据的安全性,用户可以把敏感数据放入到受保护的可信执行环境(Enclave)中。
因此,本说明书实施例的所述可信应用容器即用于机密计算的、运行Enclave的容器,所述可信应用容器的创建请求中包含用于创建所述可信应用容器的镜像标识以及容器运行环境文件,以通过所述镜像标识以及容器运行环境文件获取用于创建所述可信应用容器的可信应用文件(缓存结果)。
步骤104,根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果。
具体的,所述可信应用缓存分区中存储有用于创建所述可信应用容器的可信应用文件,在确定所述各可信应用缓存分区的命中结果的过程中,可按照各可信应用缓存分区所属层级由低到高的顺序依次确定各可信应用缓存分区的命中结果。
可信应用缓存目录根据历史容器创建过程中所使用的各可信应用文件以及各可信应用文件间的依赖关系创建,例如,历史容器创建过程中使用了三个可信应用文件,分别为可信应用文件1(T1)、可信应用文件2(T2)以及可信应用文件3(T3),并且,可信应用文件2(T2)需以可信应用文件1(T1)为基础,并结合相关的容器运行环境文件生成,同样,可信应用文件3(T3)需以可信应用文件2(T2)为基础,并结合相关的容器运行环境文件生成。
因此,以这三个可信应用文件间的依赖关系创建可信应用缓存目录时,即可根据镜像标识获取源数据(Bundle),并将镜像的摘要作为关键字、对所述源数据进行处理生成的处理结果(sefs-fuse)作为键值构建第一层级(将处理结果sefs-fuse作为可信应用文件1存入第一层级的可信应用缓存分区);
将可信应用文件1和相关容器运行环境数据对应的数字摘要作为关键字、将对所述可信应用文件1和相关容器运行环境文件进行处理获得的处理结果作为键值构建第二层级(将处理结果作为可信应用文件2存入第二层级的可信应用缓存分区);
将可信应用文件2和相关容器运行环境文件对应的数字摘要作为关键字、将对所述可信应用文件2和相关容器运行环境文件进行处理获得的处理结果作为键值构建第三层级(将处理结果作为可信应用文件3存入第三可信应用缓存分区),以生成所述可信应用缓存目录,生成的可信应用缓存目录的示意图如图2所示。
另外,Inclavare Containers为了能做到在Kubernetes集群中的容器内运行Enclave和在容器内运行普通应用有一致的使用体验,提供了两个重要组件,分别为shim-rune和rune。
shim-rune主要负责维护容器的生命周期,为了降低用户使用机密计算技术的门槛,shim-rune还会利用Occlum把容器Bundle转换成Enclave Bundle,并在转换过程中把新生成的数据进行缓存,这样同样的镜像或同样的应用再次创建时,即可使用缓存的数据进行相关操作,而无需重新进行部分或全部的Bundle转换,有利于减少Bundle转换的时间开销,从而加快容器创建速度。
因此,本说明书实施例在接收到可信应用容器创建请求后,即根据所述可信应用容器中包含的镜像标识以及所述容器运行环境文件在可信应用缓存目录中查找各可信应用缓存分区中是否存储有用于创建所述可信应用容器的可信应用数据。
具体实施时,根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果,包括:
根据所述镜像标识生成源数据,基于所述源数据还原关键字,并根据所述源数据的文件类型确定所述关键字的目标可信应用缓存分区为第一层级的可信应用缓存分区;
将所述关键字与所述第一层级的可信应用缓存分区对应的关键字列表中包含的关键字进行比对;
若根据比对结果确定所述关键字列表中存在任意一个关键字与所述关键字一致,则确定所述第一层级的可信应用缓存分区被命中。
具体的,如前所述,由于可信应用缓存目录中各层级的可信应用缓存分区中所存储的可信应用文件之间存在依赖关系,例如,第二层级的可信应用缓存分区中所存储的可信应用文件2需基于第一层级的可信应用缓存分区中所存储的可信应用文件1以及相关的容器运行环境文件生成。
因此,在根据镜像标识以及容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果的过程中,可先根据镜像标识确定可信应用缓存目录下第一层级的可信应用缓存分区的命中结果;
另外,由于可信应用缓存目录下各层级的可信应用缓存分区可能对应多个关键字,因此,确定可信应用缓存目录下第一层级的可信应用缓存分区是否被命中,可先根据镜像标识生成源数据(Bundle),基于所述源数据还原关键字(Bundle所属镜像的摘要),在根据所述源数据的文件类型确定所述关键字的目标可信应用缓存分区为第一层级的可信应用缓存分区的情况下,将所述关键字与所述第一层级的可信应用缓存分区对应的关键字列表中包含的关键字进行比对,若所述关键字列表中存在任意一个关键字与所述关键字一致,则确定所述第一层级的可信应用缓存分区被命中。
进一步的,根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果还包括:
根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件确定第i层级的关键字,并将所述关键字与所述可信应用缓存目录下第i层级的可信应用缓存分区对应的关键字列表进行对比,其中,i为大于等于2的整数;
若根据比对结果确定所述关键字列表中存在任意一个关键字与所述关键字一致,则确定所述第i层级的可信应用缓存分区被命中;
若根据比对结果确定所述关键字列表的关键字均与所述关键字不一致,则确定所述第i层级的可信应用缓存分区未命中。
具体的,若第一层级的可信应用缓存分区被命中,则继续确定第二层级的可信应用缓存分区的命中结果,对于所述可信应用缓存目录下第二层级至第n(n为所述可信应用目录下的层级总数)层级中的任意第i(i为大于等于2的整数)层级而言,若第i层级的可信应用缓存分区被命中,则继续确定下一层级,即第i+1层级的可信应用缓存分区的命中结果,以此类推,并且确定第二至第n层级的可信应用缓存分区的命中结果的处理过程均与第一层级的处理过程类似,直至第n层级的可信应用缓存分区被命中,则根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各可信应用缓存分区的命中结果的过程结束;
或者,在第二至第n层级中任意第i层级未命中,则根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各可信应用缓存分区的命中结果的过程结束。
若第一层级的可信应用缓存分区未命中,则第二层级及以后层级的可信应用缓存分区都不会被命中,因此,停止确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果即可。
由于所述可信应用缓存目录根据历史容器创建过程中使用的可信应用文件以及各可信应用文件间的依赖关系创建,并且每一层级均由该层级的输入数据对应的数字摘要作为关键字、输入数据的处理结果作为键值构建,因此,在查找各可信应用缓存分区中是否存储有创建可信应用容器所需的可信应用文件时,可先各层级的关键字,并将各层级的关键字与各层级的可信应用缓存分区对应的关键字列表中包含的关键字进行比对,以确定该层级的可信应用缓存分区中存储有所需的可信应用文件。
利用已有的可信应用文件(缓存数据)创建容器,而无需重新进行部分或全部的可信应用文件转换,有利于减少可信应用文件转换的时间开销,从而加快容器创建速度。
步骤106,将命中的各层级的可信应用缓存分区的缓存数据加载到镜像中,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件,其中所述依赖关系包括下一层级文件的生成依赖于上一层级的文件。
具体的,所述缓存数据即至少一个可信应用缓存分区存储的可信应用文件。
在第1至第n层级的关键字分别与可信应用缓存目录中第1至第n层级的可信应用缓存分区对应的关键字列表中包含的关键字进行比对,根据获得的比对结果确定所述关键字列表中分别存在任意一个关键字与所述第1至第n层级的关键字一致的情况下,则确定所述第1至第n层级的可信应用缓存分区被命中,则可将第1至第n层级的可信应用缓存分区的缓存数据加载到镜像中,以将加载后的镜像用于创建所述可信应用容器。
另外,在确定第1至第n层级的可信应用缓存分区中,第1至第i-1层级被命中,而第i至第n层级未命中的情况下,则可将命中的第1至第i-1层级的可信应用缓存分区的缓存数据加载到镜像中,并根据第i-1至第n层级间的依赖关系分层级创建第i至第n层级对应的可信应用文件。
进一步的,根据第i-1至第n层级间的依赖关系分层级创建第i至第n层级对应的可信应用文件,具体可通过以下方式实现:
根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件生成第i层级对应的可信应用文件。
具体实施时,根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件生成第i层级对应的可信应用文件,包括:
根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件生成第i层级对应的未签名的初始动态库文件;
利用签名工具对所述第i层级对应的未签名的初始动态库文件进行签名,生成第i+1层级对应的安全域动态库文件。
具体的,所述第i至第n层级中的任意一个层级均可作为第i层级,即生成第i至第n层级中任意一个层级的可信应用文件的过程均与生成第i层级对应的可信应用文件的过程类似。
如前所述,由于用于创建可信应用容器所需的可信应用文件之间存在依赖关系,因此,在确定第i-1层级被命中,而第i层级未命中的情况下,则需根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件生成第i层级对应的可信应用文件,并且,由于第i层级未命中,则第i+1至第n层级均未命中,因此,可根据第i层级的可信应用文件和第i+1层级的容器运行环境文件生成第i+1层级对应的可信应用文件。
实际应用中,在n的取值为3的情况下,若第一层级的可信应用缓存分区被命中,则可根据第一层级的可信应用缓存分区的缓存数据和第二层级的容器运行环境文件生成第二层级对应的可信应用文件(T2),并根据第二层级的可信应用文件和第三层级的容器运行环境文件生成第三层级对应的可信应用文件(T3)。
具体即根据第一层级的可信应用缓存分区的缓存数据(sefs-fuse)和第二层级的容器运行环境文件(Occlum LibOS和Occlum配置文件)生成第二层级对应的未签名的初始动态库文件T2(未签名的Enclave动态库文件以及Enclave配置文件);利用签名工具对所述第二层级对应的未签名的初始动态库文件以及第三层级的容器运行环境文件进行签名,生成第三层级对应的安全域动态库文件T3(签名的Enclave动态库文件)。
在第i层级未命中,并生成所述第i层级对应的可信应用文件后,可在可信应用缓存目录下的第i层级添加关键字目录,并将第i层级对应的可信应用文件缓存到所述关键字目录下。
同样可在可信应用缓存目录下的第i+1至第n层级添加关键字目录,并将第i+1至第n层级对应的可信应用文件缓分别存到对应的关键字目录下。
通过添加关键字目录的方式创建可信应用缓存目录,并且确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果的过程,通过关键字比对的方式实现,即有利于提升处理效率,又有利于保证所获得的命中结果的准确性。
除此之外,将所述关键字与所述第一层级的可信应用缓存分区对应的关键字列表中包含的关键字进行比对之后,若根据比对结果确定所述关键字列表中关键字均与所述关键字不一致,则确定所述第一层级的可信应用缓存分区未命中,即可信应用缓存目录下第1至第n层级的可信应用缓存分区均未命中,则需根据各层级依赖关系分层级创建第1至第n层级对应的可信应用文件,具体可通过以下方式实现:
根据所述源数据生成初始可信应用文件;
基于所述初始可信应用文件生成未签名的初始动态库文件;
利用签名工具对所述初始动态库文件进行签名,生成安全域动态库文件。
进一步的,利用签名工具对所述初始动态库文件进行签名,生成安全域动态库文件,具体可通过以下方式实现:
从所述初始动态库文件中导出签名材料;
调用签名服务对所述签名材料进行签名处理,并获取签名生成的摘要文件以及公钥文件;
基于所述摘要文件、所述公钥文件以及所述初始动态库文件生成所述安全域动态库文件。
具体的,shim-rune组件中包含两个模块,分别为Core模块和Carrier模块,Containerd发起可信应用容器创建请求,shim-rune接收到请求后,由Core模块向Carrier模块发起动态库文件生成请求,Carrier模块根据所述镜像标识获取源数据(Bundle),对所述源数据进行处理生成初始可信应用文件(sefs-fuse),并利用Occlum的occlum init、occlum build等命令,以初始可信应用文件、Occlum LibOS以及Occlum配置文件为数据源生成未签名的SGX Enclave动态库文件(初始动态库文件),并将所述初始动态库文件返回至Core模块。
在需要对所述初始动态库文件进行签名的情况下,由Core向签名服务发起签名请求,以由签名服务对签名材料进行签名,具体可通过以下步骤实现:
步骤一:由Core模块向Carrier模块发起签名材料生成请求。
Carrier模块生成签名材料后将签名材料返回至Core模块,签名材料是由Carrier模块执行sgx_sign gendata命令从未签名Enclave动态库导出的一个文件。
步骤二:由Core模块向签名服务发起签名请求。
Core模块带着签名材料向签名服务发起签名请求,签名服务对签名材料签名后,返回签名材料的摘要文件和签名服务的公钥文件,Core模块可利用所述公钥文件对所述摘要文件的合法性进行验证。
步骤三:Core模块向Carrier模块发起安全域动态库文件生成请求。
Carrier模块利用英特尔软件保护扩展提供的签名工具sgx_sign,将所述安全域动态库文件生成请求中携带的未签名的动态库文件生成签名的动态库文件,并把生成结果返回至Core模块;Core模块将所述安全域动态库文件加载至镜像中,从而形成EnclaveBundle,通过运行所述Enclave Bundle即可创建所述可信应用容器(Enclave容器)。
另外,所述签名服务是可以是提前内置的签名服务,也可以由第三方提供,对此不做任何限制。
本说明书实施例中,在缓存中未存储创建所述可信应用容器所需的至少一个可信应用文件的情况下,需重新根据源数据进行可信应用文件转换,在可信应用文件转换成功后,可将可信应用文件转换过程中各阶段的产出数据进行层级缓存,并创建可信应用缓存目录,以便于在再次运行该容器时,可根据所述可信应用缓存目录查询已存储的所述可信应用文件,并根据所述可信应用文件直接创建容器,而无需重新进行可信应用文件转换,可以节省可信应用文件转换时间,以提高容器创建效率。
前述为确定所述第一层级的可信应用缓存分区未命中,即可信应用缓存目录下第1至第n层级的可信应用缓存分区均未命中的情况下,根据镜像标识以及容器运行环境数据生成未命中层级对应的可信应用文件的过程,实际应用中,在生成各层级对应的可信应用文件后,可根据所述可信应用文件以及各层级可信应用文件之间的依赖关系创建可信应用缓存目录。
具体实施时,可信应用缓存目录的创建过程具体可通过以下方式实现:
根据所述源数据生成第一层级对应的初始可信应用文件;
在可信应用缓存目录下的第一层级添加关键字目录,并将所述第一层级对应的初始可信应用文件缓存到所述关键字目录下。
具体的,由于可信应用缓存目录下各层级的输入输出之间存在依赖关系(第二层级的输入依赖第一层级的输出,第三层级的输入依赖第二层级的输出),因此,在生成各层级对应的可信应用文件后,可先在可信应用缓存目录下的第一层级添加关键字目录,并将所述第一层级对应的初始可信应用文件缓存到所述关键字目录下,每一层级的关键字目录添加完成后,即可在下一层级添加关键字目录,以此类推,直至第n层级的关键字目录添加完成后,所述可信应用缓存目录即创建完成。
进一步的,第一层级的关键字目录添加完成后,第二至第n层级的关键字目录添加过程具体可通过以下方式实现:
根据第j-1层级的可信应用缓存分区的缓存数据和第j层级的容器运行环境文件生成第j层级对应的可信应用文件,其中,j为大于等于2的整数;
在可信应用缓存目录下的第j层级添加关键字目录,并将第j层级对应的可信应用文件缓存到所述关键字目录下。
具体的,所述第j层级的可信应用缓存分区用于存储第j层级对应的可信应用文件,因此,在所述可信应用缓存目录中第一层级的关键字目录添加完成后,j从2开始取值,根据第j-1层级的可信应用缓存分区的缓存数据和第j层级的容器运行环境文件生成第j层级对应的可信应用文件,并在可信应用缓存目录下的第j层级添加关键字目录,并将第j层级对应的可信应用文件缓存到所述关键字目录下,第j层级的关键字目录添加完成后,继续在第j+1层级添加关键字目录,以此类推,直至第n层级的关键字目录添加完成后,所述可信应用缓存目录即创建完成。
通过添加关键字目录的方式创建可信应用缓存目录,并且确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果的过程,通过关键字比对的方式实现,即有利于提升处理效率,又有利于保证所获得的命中结果的准确性。
另外,在可信应用缓存目录下的第j层级添加关键字目录,具体可通过以下方式实现:
根据第j-1层级的可信应用缓存分区的缓存数据和第j层级的容器运行环境文件确定第j层级的关键字;
将所述第j层级的缓存数据作为键值,与所述关键字构成第j键值对,并基于所述第j层级的可信应用缓存分区的分区标识以及所述第j键值对作为关键字目录添加至所述第j层级。
具体的,在第j层级添加关键字目录,则先对第j层级的输入数据(第j-1层级的可信应用缓存分区的缓存数据和第j层级的容器运行环境文件)进行处理,将生成的处理结果存入第j层级的可信应用缓存分区,并将输入数据对应的数字摘要作为关键字,处理结果作为键值生成第j键值对,将所述第j层级的可信应用缓存分区的分区标识以及所述第j键值对作为关键字目录添加至所述第j层级。
进一步的,在所述可信应用缓存目录下的第一层级添加关键字目录,即根据所述源数据生成第一层级对应的初始可信应用文件,并将源数据对应的数字摘要作为关键字,将初始可信应用文件作为键值生成第一键值对,将所述第一层级的可信应用缓存分区的分区标识以及所述第一键值对作为关键字目录添加至第一层级,并将所述初始可信应用文件缓存到所述第一层级的可信应用缓存分区。
更进一步的,在所述可信应用缓存目录下的第二层级添加关键字目录,即获取宿主机环境信息以及系统配置文件,对所述宿主机环境信息、系统配置文件以及第一层级的缓存数据(初始可信应用文件)进行处理,生成未签名的初始动态库文件,并将初始可信应用文件、所述宿主机环境信息和系统配置文件对应的数字摘要作为关键字,将所述初始动态库文件作为键值生成第二键值对,将所述第二层级的可信应用缓存分区的分区标识以及所述第二键值对作为关键字目录添加至第二层级,并将所述初始动态库文件存入第二层级的可信应用缓存分区。
此外,在所述可信应用缓存目录下的第二层级添加关键字目录,即首先从未签名Enclave动态库导出签名材料,签名服务对签名材料签名,并返回签名材料的摘要文件和签名服务的公钥文件(所述公钥文件可用于对所述摘要文件的合法性进行验证),然后基于所述摘要文件以及所述公钥文件对所述第二层级的缓存数据(初始动态库文件)进行签名处理,生成签名后的安全域动态库文件,并将初始动态库文件、所述签名证书公钥和容器运行环境文件对应的数字摘要作为关键字,将所述安全域动态库文件作为键值生成第三键值对,将所述第三层级的可信应用缓存分区的分区标识以及所述第三键值对作为关键字目录添加至第三层级,并将所述安全域动态库文件存入第三层级的可信应用缓存分区。
本说明书实施例提供的可信应用文件转换过程的示意图如图3所示,并且,根据各层级输入和输出的不同,可将Bundle转换过程分为以下几个步骤:
1)根据镜像标识解压镜像,获得初始文件数据即源数据(Bundle)。
2)执行Occlum Build命令,以Bundle为输入生成未签名的初始动态库文件(未签名的Enclave动态库文件)。
a.以Bundle为输入,输出为用于运行Enclave的Occlum的初始可信应用文件(“sefs-fuse”),并将“sefs-fuse”存入可信应用缓存分区1。
b.以“sefs-fuse、宿主机环境信息以及系统配置文件”为输入,输出“未签名的Enclave动态库文件和可信运行环境的环境配置文件”,并将所述未签名的Enclave动态库文件和可信运行环境的环境配置文件存入可信应用缓存分区2。
3)以“未签名的Enclave动态库文件、签名证书公钥以及容器运行环境文件”为输入,输出“签名的安全域动态库文件(签名的Enclave动态库文件)”,并将所述签名的Enclave动态库文件存入可信应用缓存分区3。
4)把所述签名的Enclave动态库文件加载至镜像,生成可运行受保护可信执行环境的文件系统(Enclave Bundle)。
将各阶段输出的数据存入对应的可信应用缓存分区后,即可根据各阶段输入数据的数据摘要、输出数据以及进行缓存分区的分区标识创建可信应用缓存目录,本说明书实施例创建的可信应用缓存目录的示意图如图2所示,其中,每级缓存的第一层子目录存放了关键字列表,目录名是所属缓存类型的关键字(key值),每级缓存的第二层子目录有两类目录:子目录和数据类型目录,子目录存放当前缓存类型的子缓存类型,比如第一层级的第二层子目录中会存放第二层级目录;数据类型目录存放了当前缓存类型数据的键值,例如第一层级的数据类型目录下即存放第一文件系统的输出数据(初始可信应用文件)。
通过添加关键字目录的方式创建可信应用缓存目录,并且确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果的过程,通过关键字比对的方式实现,即有利于提升处理效率,又有利于保证所获得的命中结果的准确性。
步骤108,基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器。
具体的,在确定第1至第n层级的可信应用缓存分区中,第1至第i-1层级被命中,而第i至第n层级未命中的情况下,则可将命中的第1至第i-1层级的可信应用缓存分区的缓存数据加载到镜像中,并根据第i-1至第n层级间的依赖关系分层级创建第i至第n层级对应的可信应用文件,以基于所述镜像以及所述可信应用文件创建所述可信应用容器。
若第1至第n层级均被命中,则可将命中的第1至第n层级的可信应用缓存分区的缓存数据加载到镜像中,以基于所述镜像创建所述可信应用容器。
若第1至第n层级均未命中,则根据第1至第n层级间的依赖关系分层级创建第i至第n层级对应的可信应用文件,以基于所述可信应用文件创建所述可信应用容器。
进一步的,在第1至第i-1层级被命中,而第i至第n层级未命中的情况下,基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器,具体为:将命中的第1至第i-1层级的可信应用缓存分区的缓存数据加载到镜像中,并根据第i-1至第n层级间的依赖关系分层级创建第i至第n层级对应的可信应用文件,并将所述第i至第n层级对应的可信应用文件加载到所述镜像中,以基于加载后的镜像创建所述可信应用容器。
或者,若第1至第n层级均未命中,且n等于3的情况下,基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器,具体为:基于初始可信应用文件(第一层级的可信应用文件T1)、初始动态库文件(第一层级的可信应用文件T2)以及安全域动态库文件(第一层级的可信应用文件T3)组合获得用于创建所述可信应用容器的目标可信应用文件,将所述目标可信应用文件加载到镜像中,并基于所述镜像创建所述可信应用容器。
通过前述方式创建可信应用缓存目录后,在后续过程中,若需要再次运行该容器时,可根据所述可信应用缓存目录查询已存储的所述可信应用文件,并根据所述可信应用文件直接创建容器,而无需重新进行可信应用文件转换,可以节省可信应用文件转换时间,以提高容器创建效率,并且,创建所述可信应用缓存目录后,可对所述可信应用缓存目录下各层级的可信应用缓存分区中可信应用文件的复用次数、复用时间间隔等信息进行记录并展示记录结果,用户可根据所述所展示的记录结果对可信应用缓存分区中的可信应用文件进行调整,例如,若某一可信应用缓存分区中的一个可信应用文件的复用次数小于阈值,或者复用时间间隔大于预设阈值,则可将所述可信应用文件进行删除处理,以减少可信应用缓存分区的文件存储量,从而提高缓存分区的利用率。
本说明书实施例通过接收可信应用容器创建请求,所述可信应用容器创建请求中包含用于创建所述可信应用容器的镜像标识以及容器运行环境文件,根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果,将命中的各层级的可信应用缓存分区的缓存数据加载到镜像中,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件,其中所述依赖关系包括下一层级文件的生成依赖于上一层级的文件,基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器;
实现了在接收到可信应用容器创建请求后,即根据所述可信应用容器中包含的镜像标识在可信应用缓存目录中查找各可信应用缓存分区中是否存储有用于创建所述可信应用容器的可信应用文件,而无需重新进行部分或全部的可信应用文件转换,有利于减少可信应用文件转换的时间开销,以提高容器创建效率。
下述结合附图4,以本说明书提供的容器创建方法在实际场景的应用为例,对所述容器创建方法进行进一步说明。其中,图4示出了本说明书一个实施例提供的一种容器创建方法的交互示意图,具体步骤包括步骤402至步骤430。
步骤402,第一处理模块接收可信应用容器创建请求。
具体的,所述第一处理模块即为shim-rune组件中的Core模块,第二处理模块即为shim-rune组件中的Carrier模块,第三处理模块即为rune组件。
步骤404,第一处理模块向第二处理模块发起动态库文件生成请求。
步骤406,第二处理模块生成未签名的初始动态库文件。
具体的,第二处理模块根据所述动态库文件生成请求中携带的镜像标识获取源数据(Bundle),对所述源数据进行处理生成初始可信应用文件(sefs-fuse),并利用Occlum的occlum init、occlum build等命令,以初始可信应用文件、Occlum LibOS以及Occlum配置文件为数据源生成未签名的SGX Enclave动态库文件(初始动态库文件)。
步骤408,第二处理模块将所述初始动态库文件返回至第一处理模块。
步骤410,第一处理模块向第二处理模块发起签名材料生成请求。
步骤412,第二处理模块生成签名材料。
步骤414,第二处理模块将签名材料返回至第一处理模块。
步骤416,第一处理模块向签名服务发起签名请求。
步骤418,签名服务对签名材料进行签名处理。
步骤420,签名服务将公钥文件以及签名生成的摘要文件返回至第一处理模块。
步骤422,第一处理模块向第二处理模块发起安全域动态库文件生成请求。
步骤424,第二处理模块结合摘要文件、公钥文件、未签名初始动态库文件生成签名的安全域动态库文件。
步骤426,第二处理模块将所述安全域动态库文件返回至第一处理模块。
步骤428,第二处理模块向第三处理模块发送容器启动请求。
步骤430,第三处理模块运行所述安全域动态库文件,创建并启动可信应用容器。
本说明书实施例在接收到可信应用容器创建请求后,即根据所述可信应用容器创建请求中包含的镜像标识在可信应用缓存目录中查找各可信应用缓存分区中是否存储有用于创建所述可信应用容器的可信应用文件,而无需重新进行部分或全部的可信应用文件转换,有利于减少可信应用文件转换的时间开销,以提高容器创建效率。
与上述方法实施例相对应,本说明书还提供了容器创建装置实施例,图5示出了本说明书一个实施例提供的一种容器创建装置的示意图。如图5所示,该装置包括:
接收模块502,被配置为接收可信应用容器创建请求,所述可信应用容器创建请求中包含用于创建所述可信应用容器的镜像标识以及容器运行环境文件;
确定模块504,被配置为根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果;
加载模块506,被配置为将命中的各层级的可信应用缓存分区的缓存数据加载到镜像中,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件,其中所述依赖关系包括下一层级文件的生成依赖于上一层级的文件;
创建模块508,被配置为基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器。
可选地,所述确定模块504,包括:
第一还原子模块,被配置为根据所述镜像标识生成源数据,基于所述源数据还原关键字,并根据所述源数据的文件类型确定所述关键字的目标可信应用缓存分区为第一层级的可信应用缓存分区;
第一比对子模块,被配置为将所述关键字与所述第一层级的可信应用缓存分区对应的关键字列表中包含的关键字进行比对;
第一确定子模块,被配置为若根据比对结果确定所述关键字列表中存在任意一个关键字与所述关键字一致,则确定所述第一层级的可信应用缓存分区被命中。
可选地,所述确定模块504,还包括:
第二比对子模块,被配置为根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件确定第i层级的关键字,并将所述关键字与所述可信应用缓存目录下第i层级的可信应用缓存分区对应的关键字列表进行对比,其中,i为大于等于2的整数;
所述第二确定子模块,被配置为若根据比对结果确定所述关键字列表中存在任意一个关键字与所述关键字一致,则确定所述第i层级的可信应用缓存分区被命中。
可选地,所述确定模块504,还包括:
第三确定子模块,被配置为若根据比对结果确定所述关键字列表的关键字均与所述关键字不一致,则确定所述第i层级的可信应用缓存分区未命中。
可选地,所述加载模块506,包括:
第一生成子模块,被配置为根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件生成第i层级对应的可信应用文件。
可选地,所述第一生成子模块,包括:
生成单元,被配置为根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件生成第i层级对应的未签名的初始动态库文件;
签名单元,被配置为利用签名工具对所述第i层级对应的未签名的初始动态库文件进行签名,生成第i+1层级对应的安全域动态库文件。。
可选地,所述加载模块506,还包括:
第一关键字目录添加子模块,被配置为在可信应用缓存目录下的第i层级添加关键字目录,并将第i层级对应的可信应用文件缓存到所述关键字目录下。
可选地,所述确定模块504,还包括:
第三确定子模块,被配置为若根据比对结果确定所述关键字列表中关键字均与所述关键字不一致,则确定所述第一层级的可信应用缓存分区未命中。
可选地,所述加载模块506,还包括:
第二生成子模块,被配置为根据所述源数据生成初始可信应用文件;
第三生成子模块,被配置为基于所述初始可信应用文件生成未签名的初始动态库文件;
签名子模块,被配置为利用签名工具对所述初始动态库文件进行签名,生成安全域动态库文件。
可选地,所述签名子模块,包括:
导出单元,被配置为从所述初始动态库文件中导出签名材料;
签名单元,被配置为调用签名服务对所述签名材料进行签名处理,并获取签名生成的摘要文件以及公钥文件;
生成单元,被配置为基于所述摘要文件、所述公钥文件以及所述初始动态库文件生成所述安全域动态库文件。
可选地,所述加载模块506,还包括:
第四生成子模块,被配置为根据所述源数据生成第一层级对应的初始可信应用文件。
可选地,所述加载模块506,还包括:
第二关键字目录添加子模块,被配置为在可信应用缓存目录下的第一层级添加关键字目录,并将所述第一层级对应的初始可信应用文件缓存到所述关键字目录下。
可选地,所述加载模块506,还包括:
第五生成子模块,被配置为根据第j-1层级的可信应用缓存分区的缓存数据和第j层级的容器运行环境文件生成第j层级对应的可信应用文件,其中,j为大于等于2的整数;
第三关键字目录添加子模块,被配置为在可信应用缓存目录下的第j层级添加关键字目录,并将第j层级对应的可信应用文件缓存到所述关键字目录下。
可选地,所述第三关键字目录添加子模块,包括:
关键字确定单元,被配置为根据第j-1层级的可信应用缓存分区的缓存数据和第j层级的容器运行环境文件确定第j层级的关键字;
关键字目录添加单元,被配置为将所述第j层级的缓存数据作为键值,与所述关键字构成第j键值对,并基于所述第j层级的可信应用缓存分区的分区标识以及所述第j键值对作为关键字目录添加至所述第j层级。
可选地,所述创建模块508,包括:
第一创建子模块,被配置为将所述未命中层级对应的可信应用文件加载到所述镜像中,并基于所述镜像创建所述可信应用容器。
可选地,所述创建模块508,还包括:
文件创建子模块,被配置为基于所述初始可信应用文件、所述初始动态库文件以及所述安全域动态库文件组合获得用于创建所述可信应用容器的目标可信应用文件;
第二创建子模块,被配置为将所述目标可信应用文件加载到镜像中,并基于所述镜像创建所述可信应用容器。
上述为本实施例的一种容器创建装置的示意性方案。需要说明的是,该容器创建装置的技术方案与上述的容器创建方法的技术方案属于同一构思,容器创建装置的技术方案未详细描述的细节内容,均可以参见上述容器创建方法的技术方案的描述。
图6示出了根据本说明书一个实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。
计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备600还可以是移动式或静止式的服务器。
其中,所述存储器610用于存储计算机可执行指令,处理器620用于执行如下计算机可执行指令以实现上述容器创建方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的容器创建方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述容器创建方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于实现所述容器创建方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的容器创建方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述容器创建方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (18)
1.一种容器创建方法,包括:
接收可信应用容器创建请求,所述可信应用容器创建请求中包含用于创建所述可信应用容器的镜像标识以及容器运行环境文件;
根据所述镜像标识生成源数据,基于所述源数据还原关键字,并根据所述源数据的文件类型确定所述关键字的目标可信应用缓存分区为第一层级的可信应用缓存分区;
将所述关键字与所述第一层级的可信应用缓存分区对应的关键字列表中包含的关键字进行比对;
若根据比对结果确定所述关键字列表中存在任意一个关键字与所述关键字一致,则确定所述第一层级的可信应用缓存分区被命中;
将命中的各层级的可信应用缓存分区的缓存数据加载到镜像中,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件,其中所述依赖关系包括下一层级文件的生成依赖于上一层级的文件;
基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器。
2.根据权利要求1所述的容器创建方法,所述确定所述第一层级的可信应用缓存分区被命中之后,还包括:
根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件确定第i层级的关键字,并将所述关键字与所述可信应用缓存目录下第i层级的可信应用缓存分区对应的关键字列表进行对比,其中,i为大于等于2的整数;
若根据比对结果确定所述关键字列表中存在任意一个关键字与所述关键字一致,则确定所述第i层级的可信应用缓存分区被命中。
3.根据权利要求2所述的容器创建方法,所述将所述关键字与所述可信应用缓存目录下第i层级的可信应用缓存分区对应的关键字列表进行对比之后,还包括:
若根据比对结果确定所述关键字列表的关键字均与所述关键字不一致,则确定所述第i层级的可信应用缓存分区未命中。
4.根据权利要求3所述的容器创建方法,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件包括:
根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件生成第i层级对应的可信应用文件。
5.根据权利要求4所述的容器创建方法,所述根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件生成第i层级对应的可信应用文件,包括:
根据第i-1层级的可信应用缓存分区的缓存数据和第i层级的容器运行环境文件生成第i层级对应的未签名的初始动态库文件;
利用签名工具对所述第i层级对应的未签名的初始动态库文件进行签名,生成第i+1层级对应的安全域动态库文件。
6.根据权利要求4所述的容器创建方法,还包括:
在可信应用缓存目录下的第i层级添加关键字目录,并将第i层级对应的可信应用文件缓存到所述关键字目录下。
7.根据权利要求1所述的容器创建方法,所述根据所述镜像标识以及所述容器运行环境文件确定可信应用缓存目录下各层级的可信应用缓存分区的命中结果,还包括:
若根据比对结果确定所述关键字列表中关键字均与所述关键字不一致,则确定所述第一层级的可信应用缓存分区未命中。
8.根据权利要求7所述的容器创建方法,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件包括:
根据所述源数据生成初始可信应用文件;
基于所述初始可信应用文件生成未签名的初始动态库文件;
利用签名工具对所述初始动态库文件进行签名,生成安全域动态库文件。
9.根据权利要求8所述的容器创建方法,所述利用签名工具对所述初始动态库文件进行签名,生成安全域动态库文件,包括:
从所述初始动态库文件中导出签名材料;
调用签名服务对所述签名材料进行签名处理,并获取签名生成的摘要文件以及公钥文件;
基于所述摘要文件、所述公钥文件以及所述初始动态库文件生成所述安全域动态库文件。
10.根据权利要求8所述的容器创建方法,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件包括:
根据所述源数据生成第一层级对应的初始可信应用文件。
11.根据权利要求10所述的容器创建方法,还包括:
在可信应用缓存目录下的第一层级添加关键字目录,并将所述第一层级对应的初始可信应用文件缓存到所述关键字目录下。
12.根据权利要求11所述的容器创建方法,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件包括:
根据第j-1层级的可信应用缓存分区的缓存数据和第j层级的容器运行环境文件生成第j层级对应的可信应用文件,其中,j为大于等于2的整数;
在可信应用缓存目录下的第j层级添加关键字目录,并将第j层级对应的可信应用文件缓存到所述关键字目录下。
13.根据权利要求11所述的容器创建方法,在可信应用缓存目录下的第j层级添加关键字目录,包括:
根据第j-1层级的可信应用缓存分区的缓存数据和第j层级的容器运行环境文件确定第j层级的关键字;
将所述第j层级的缓存数据作为键值,与所述关键字构成第j键值对,并基于所述第j层级的可信应用缓存分区的分区标识以及所述第j键值对作为关键字目录添加至所述第j层级。
14.根据权利要求1所述的容器创建方法,所述基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器,包括:
将所述未命中层级对应的可信应用文件加载到所述镜像中,并基于所述镜像创建所述可信应用容器。
15.根据权利要求8所述的容器创建方法,所述基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器,包括:
基于所述初始可信应用文件、所述初始动态库文件以及所述安全域动态库文件组合获得用于创建所述可信应用容器的目标可信应用文件;
将所述目标可信应用文件加载到镜像中,并基于所述镜像创建所述可信应用容器。
16.一种容器创建装置,包括:
接收模块,被配置为接收可信应用容器创建请求,所述可信应用容器创建请求中包含用于创建所述可信应用容器的镜像标识以及容器运行环境文件;
确定模块,包括第一还原子模块、第一比对子模块、第一确定子模块,其中,
所述第一还原子模块,被配置为根据所述镜像标识生成源数据,基于所述源数据还原关键字,并根据所述源数据的文件类型确定所述关键字的目标可信应用缓存分区为第一层级的可信应用缓存分区;
所述第一比对子模块,被配置为将所述关键字与所述第一层级的可信应用缓存分区对应的关键字列表中包含的关键字进行比对;
所述第一确定子模块,被配置为若根据比对结果确定所述关键字列表中存在任意一个关键字与所述关键字一致,则确定所述第一层级的可信应用缓存分区被命中;
加载模块,被配置为将命中的各层级的可信应用缓存分区的缓存数据加载到镜像中,根据各层级依赖关系分层级创建未命中层级对应的可信应用文件,其中所述依赖关系包括下一层级文件的生成依赖于上一层级的文件;
创建模块,被配置为基于所述镜像和所述未命中层级对应的可信应用文件创建所述可信应用容器。
17.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令以实现1至15任意一项所述容器创建方法的步骤。
18.一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现权利要求1至15任意一项所述容器创建方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011187216.5A CN113296879B (zh) | 2020-10-29 | 2020-10-29 | 容器创建方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011187216.5A CN113296879B (zh) | 2020-10-29 | 2020-10-29 | 容器创建方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113296879A CN113296879A (zh) | 2021-08-24 |
CN113296879B true CN113296879B (zh) | 2024-03-08 |
Family
ID=77318675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011187216.5A Active CN113296879B (zh) | 2020-10-29 | 2020-10-29 | 容器创建方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113296879B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006031921A2 (en) * | 2004-09-15 | 2006-03-23 | Adesso Systems, Inc. | System and method for managing data in a distributed computer system |
CN107491329A (zh) * | 2017-08-04 | 2017-12-19 | 上海携程商务有限公司 | Docker镜像构建方法、设备、存储介质以及电子装置 |
CN108255675A (zh) * | 2018-01-10 | 2018-07-06 | 北京知道创宇信息技术有限公司 | 一种端口特征提取方法、装置及计算设备 |
CN110069921A (zh) * | 2019-04-12 | 2019-07-30 | 中国科学院信息工程研究所 | 一种面向容器平台的可信软件授权验证系统及方法 |
CN110427322A (zh) * | 2019-07-29 | 2019-11-08 | 国家电网有限公司 | 一种针对业务系统容器镜像的动态安全渗透测试方法、装置及系统 |
CN111124596A (zh) * | 2018-11-01 | 2020-05-08 | 千寻位置网络有限公司 | 基于容器的发布管理方法及其系统 |
CN111190687A (zh) * | 2019-11-28 | 2020-05-22 | 安超云软件有限公司 | 一种容器镜像的构建方法、装置、设备及存储介质 |
CN111382445A (zh) * | 2020-03-03 | 2020-07-07 | 首都师范大学 | 利用可信执行环境系统提供可信服务的方法 |
CN111562970A (zh) * | 2020-07-15 | 2020-08-21 | 腾讯科技(深圳)有限公司 | 容器实例的创建方法、装置、电子设备及存储介质 |
-
2020
- 2020-10-29 CN CN202011187216.5A patent/CN113296879B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006031921A2 (en) * | 2004-09-15 | 2006-03-23 | Adesso Systems, Inc. | System and method for managing data in a distributed computer system |
CN107491329A (zh) * | 2017-08-04 | 2017-12-19 | 上海携程商务有限公司 | Docker镜像构建方法、设备、存储介质以及电子装置 |
CN108255675A (zh) * | 2018-01-10 | 2018-07-06 | 北京知道创宇信息技术有限公司 | 一种端口特征提取方法、装置及计算设备 |
CN111124596A (zh) * | 2018-11-01 | 2020-05-08 | 千寻位置网络有限公司 | 基于容器的发布管理方法及其系统 |
CN110069921A (zh) * | 2019-04-12 | 2019-07-30 | 中国科学院信息工程研究所 | 一种面向容器平台的可信软件授权验证系统及方法 |
CN110427322A (zh) * | 2019-07-29 | 2019-11-08 | 国家电网有限公司 | 一种针对业务系统容器镜像的动态安全渗透测试方法、装置及系统 |
CN111190687A (zh) * | 2019-11-28 | 2020-05-22 | 安超云软件有限公司 | 一种容器镜像的构建方法、装置、设备及存储介质 |
CN111382445A (zh) * | 2020-03-03 | 2020-07-07 | 首都师范大学 | 利用可信执行环境系统提供可信服务的方法 |
CN111562970A (zh) * | 2020-07-15 | 2020-08-21 | 腾讯科技(深圳)有限公司 | 容器实例的创建方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
Semantics-Based Object Caching in Distributed Systems;John E.等;IEEE Transactions on Parallel and Distributed Systems;全文 * |
基于Docker容器的云平台设计与实现;李灿彬;甘宏;;科技广场(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113296879A (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10698885B2 (en) | Method and device for writing service data in block chain system | |
US11836112B2 (en) | Path resolver for client access to distributed file systems | |
US10169348B2 (en) | Using a file path to determine file locality for applications | |
US20210097476A1 (en) | Container Management Method, Apparatus, and Device | |
US10725771B2 (en) | Artifact transformation in network devices | |
WO2020199594A1 (zh) | 业务组件加载方法、装置、计算机设备和存储介质 | |
US11907236B2 (en) | Systems and methods for fuzzy search without full text | |
US11789916B2 (en) | Hash-based duplicate data element systems and methods | |
US10326833B1 (en) | Systems and method for processing request for network resources | |
US20140237087A1 (en) | Service pool for multi-tenant applications | |
CN113296879B (zh) | 容器创建方法以及装置 | |
CN111966994A (zh) | 基于数据库的区块链鉴权方法、系统及存储介质 | |
CN115766173A (zh) | 数据的处理方法、系统及装置 | |
Wang et al. | Reg: An ultra-lightweight container that maximizes memory sharing and minimizes the runtime environment | |
US11727022B2 (en) | Generating a global delta in distributed databases | |
US11720554B2 (en) | Iterative query expansion for document discovery | |
EP3970009B1 (en) | Blockchain transaction processing systems and methods | |
CN116414801A (zh) | 数据迁移方法、装置、计算机设备和存储介质 | |
CN111488286B (zh) | 一种Android模块独立开发的方法及装置 | |
US11507632B2 (en) | System and method to initiate inducive search across multiple products using embedded help files within a trusted domain | |
CN116150116B (zh) | 文件系统共享的方法、装置、电子设备及存储介质 | |
CN116382795A (zh) | 系统资源的调用方法及装置 | |
Dave et al. | A Review for Improving Synchronization Between Clone and Mobile Device In Mobile Cloud Computing | |
CN116737272A (zh) | 一种应用启动方法、装置、电子设备及计算机可读介质 | |
CN117785837A (zh) | 数据存储方法、装置、电子设备及存储介质 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40057562 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |