头图

文/龙蜥社区云原生 SIG

前言部分

机密容器是 Cloud Native Computing Foundation(CNCF)下的一个新的 Sandbox 项目。机密容器项目基于 CPU 可信执行环境(TEE)技术,并与云原生容器以及 Kubernetes 技术结合,构建出新的软件架构,其设计目的是为运行在不受用户控制的云计算基础设施上的敏感数据和应用提供安全可信的计算环境。机密容器项目的目标是标准化机密计算在容器技术层面的实现方式,屏蔽多种 CPU TEE 的底层实现细节,在使用体感上保持与使用普通容器进行开发和部署的一致性。阿里云还将机密解决方案推广到龙蜥社区, 并基于龙蜥社区构建开箱即用的机密容器解决方案。

CPU TEE(如 AMD SEV、Intel SGX 和 Intel TDX)能够提供处理器微架构级内存访问控制与隔离机制,在内存级提供加密和完整性保护,增加新的指令集与处理器运行模式,禁止不可信设备通过 DMA 访问加密内存,目的是防止在计算过程中泄露或篡改敏感数据和代码。CPU TEE 建立了一种新的威胁模型,用户敏感数据和应用的安全性无需由云服务提供商及其基础设施管理员来保证,而仅依赖于硬件级别的TEE 保护技术。机密容器项目的目标是在容器级别标准化机密计算,并简化其在 Kubernetes 的使用。这是为了让 Kubernetes 用户能够使用熟悉的工作流和工具部署机密容器工作负载,而无需深入了解底层机密计算技术。机密容器将支持多种环境,包括公共云、本地和边缘计算。

目前机密容器项目的核心参与者包括阿里云、AMD、ARM、IBM、Intel、Microsoft、Red Hat、Rivos 等在内的软件和硬件公司。阿里云作为该项目核心技术的主要贡献者,在机密容器社区不久前发布的 0.1.0 release 中,阿里云在该项目以及相关依赖项目的贡献比例约占 20%,位居社区第二,仅次于 Intel。该项目 9 个核心子项目中有 5 个由阿里云的 Maintainer 负责,项目的技术指导委员会 10 名成员中,阿里云占有 2 个席位。

技术架构

机密容器有两种典型架构:

  • Pod 级机密容器:该架构基于 Kata Containers 项目,最大区别是将基于普通虚拟化技术实现的轻量级 Sandbox Pod替换为基于机密计算技术实现的轻量级 TEE Pod,目的是将特定租户的整个 Pod 以及其中的容器运行在受 CPU TEE 保护的执行环境中。除此之外,TEE Pod 内部还额外集成了 image-rs 和 attestation-agent 等组件,它们负责实现容器镜像的拉取、授权、验签、解密、远程证明以及秘密注入等安全特性。Pod 级机密容器支持 AMD SEV 以及 Intel TDX 机密虚拟机。
  • 进程级机密容器:该架构基于阿里云、Intel 与蚂蚁合作的 CNCF 项目 Inclavare Containers。租户的容器运行在支持 Intel SGX Enclave 的CPU TEE中。该架构的特别之处在于 Pod 由容器工作负载运行在 LibOS(目前支持蚂蚁 Occlum,将来会支持Intel Gramine)之上,并由 enclave-agent 对容器的生命周期进行管理。除此之外的核心组件 image-rs 和 attestation-agent 组件均与 Pod 级机密容器架构相同。

机密容器的基本运行过程为:

  • 用户使用标准工具制作一个签名和/或加密的受保护的容器镜像,并上传到容器镜像仓库中。
  • 用户命令 Kubernetes 启动这个受保护的容器镜像。kubelet 会向 containerd 发起创建 Pod 的 CRI 请求,containerd 则把请求转发给 kata-runtime/shim-rune,最终调用 QEMU/Dragonball/rune 创建实际的 Pod。在机密容器中,Pod 被映射为CPU TEE。
  • CPU TEE 执行初始化,最终启动 kata-agent/enclave-agent 监听后续请求。
  • kubelet 向 containerd 发起 Image Pulling 的 CRI 请求,containerd 则把请求转发给 kata-runtime/shim-rune,最终 kata-agent/enclave-agent 收到请求并通过 image-rs 子模块提供的容器镜像管理功能,在 TEE 内安全地执行拉取、验签、解密、unpack 以及挂载容器镜像的操作。
  • 如果 TEE 内没有预先在 boot image 中内置验签或解密容器镜像的相关策略文件或密钥,则 image-rs 子模块会请求 attestation-agent 组件通过远程证明协议与远端可信的远程证明服务进行基于CPU TEE 硬件的身份认证与授权,通过attestation-agent 与远程证明服务建立的安全可信信道返回 image-rs 子模块需要的敏感数据。
  • 远程证明服务验证 CPU TEE 硬件认证证据的完整性和真实性。起到比较验证作用的可信参考值由机密计算软件供应链安全基础设施来下发。如果 CPU TEE 通过了身份认证,远程证明服务将授权密钥管理服务(KMS)返回 attestation-agent 请求的敏感数据,比如容器镜像的解密密钥和加密引导过程中用到的磁盘解密密钥。

产品解决方案

作为机密容器项目的核心成员,阿里云除了积极参与社区的开源工作,也一直致力于机密容器产品化和推广工作。阿里云将机密容器解决方案推广至龙蜥社区,基于 Anolis,使用 RunD 沙箱容器,整合云原生套件和机密容器相关组件,构建开源的、开箱即用的 Pod 级机密容器解决方案。

Anolis OS

Anolis OS 是龙蜥社区打造的 Linux 开源发行版。基于 Anolis OS,阿里云联合AMD、Intel 等合作伙伴,已经完成 kernel、KVM 等组件对于 CPU TEE 的支持与适配, 后续我们将支持更多的 HW-TEE 平台。

RunD 沙箱容器

RunD 沙箱容器是由龙蜥社区开源的安全容器,包含 Rust Kata runtime 和Dragonball VMM,已经于 2022 年 10 月 10 日正式作为 Kata Container 3.0.0 release 版本的重要特性发布。此前 RunD 已在工业界多个云产品上落地,也在今年登选 ATC 顶会论文。Kata 3.0.0 版本的发布标志着 RunD 成功定义了安全容器下一代的发展方向并已成为上游安全容器社区的最新事实标准。后续我们将基于 RunD 安全容器打造更完整的机密容器技术,包含支持更多的 HW-TEE 平台,以及构建更完备的机密容器支持能力。

相关链接

云原生 SIG 链接地址:

https://openanolis.cn/sig/clo...

云原生机密计算SIG链接地址:

https://openanolis.cn/sig/coco

机密容器 github 链接地址:

https://github.com/confidenti...

—— 完 ——


龙蜥社区
40 声望12 粉丝

OpenAnolis龙蜥社区由国内外头部企业联合建立的操作系统开源社区。