文 / 龙蜥社区云原生 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…
—— 完 ——