Confidential Containers:云原生机密计算基础设施

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 后续将基于RunD安全容器打造更完整的机密容器技术,包含支持更多的 HW-TEE 平台,以及构建更完备的机密容器支持能力。

640.png

文/龙蜥社区云原生 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 个席位。

技术架构

机密容器有两种典型架构:640 (3).png

  • 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 级机密容器解决方案。640 (4).png

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/cloud-native

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

https://openanolis.cn/sig/coco

机密容器 github 链接地址:

https://github.com/confidential-containers


—— 完 ——

加入龙蜥社群

加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。欢迎开发者/用户加入龙蜥社区(OpenAnolis)交流,共同推进龙蜥社区的发展,一起打造一个活跃的、健康的开源操作系统生态!

640 (5).png

关于龙蜥社区

龙蜥社区(OpenAnolis)是由企业单位、事业单位、社会团体、个人等在共建、共治、共享的基础上组成的非营利性开源社区。龙蜥社区成立于 2020 年 9 月,旨在构建一个开放、平等、协作、创新的 Linux 上游发行版社区及创新平台。


龙蜥社区成立的短期目标是开发龙蜥操作系统(Anolis OS)作为 CentOS 停服后的应对方案,构建一个兼容国际 Linux 主流厂商的社区发行版。中长期目标是探索打造一个面向未来的操作系统,建立统一的开源操作系统生态,孵化创新开源项目,繁荣开源生态。


目前,Anolis OS 8.6已发布,更多龙蜥自研特性,支持 X86_64 、RISC-V、Arm64、LoongArch 架构,完善适配 Intel、兆芯、鲲鹏、龙芯等芯片,并提供全栈国密和机密计算支持。


欢迎下载:https://openanolis.cn/download

加入我们,一起打造面向未来的开源操作系统!https://openanolis.cn

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
运维 Cloud Native 云计算
云原生技术:探索未来计算的无限可能
【10月更文挑战第8天】 云原生技术,作为云计算领域的一次革新性突破,正引领着企业数字化转型的新浪潮。它不仅重塑了应用的构建、部署和运行方式,还通过极致的弹性、敏捷性和可扩展性,解锁了未来计算的无限潜力。本文将深入浅出地解析云原生技术的核心理念、关键技术组件及其在不同行业中的实际应用案例,展现其如何赋能业务创新,加速企业的云化之旅。
64 7
|
2月前
|
Kubernetes Cloud Native 开发者
探秘云原生计算:Kubernetes与Docker的协同进化
在这个快节奏的数字时代,云原生技术以其灵活性和可扩展性成为了开发者们的新宠。本文将带你深入了解Kubernetes和Docker如何共同塑造现代云计算的架构,以及它们如何帮助企业构建更加敏捷和高效的IT基础设施。
|
4月前
|
Kubernetes Cloud Native 关系型数据库
云原生数据基础设施之kubeblocks
云原生数据基础设施之kubeblocks
|
4月前
|
运维 安全 Cloud Native
核心系统转型问题之保障云原生分布式转型中的基础设施和应用层面如何解决
核心系统转型问题之保障云原生分布式转型中的基础设施和应用层面如何解决
|
4月前
|
Cloud Native 安全 中间件
核心系统转型问题之云原生架构下的基础资源设施应重点考虑什么方面
核心系统转型问题之云原生架构下的基础资源设施应重点考虑什么方面
|
4月前
|
Kubernetes Cloud Native API
Kubernetes云原生问题之Kubernetes帮助业务应用较少关注底层基础设施差异如何解决
Kubernetes云原生问题之Kubernetes帮助业务应用较少关注底层基础设施差异如何解决
45 1
|
4月前
|
运维 Cloud Native 云计算
云原生架构的演进:从微服务到无服务器计算
在数字化转型的浪潮中,云原生技术以其灵活性、可扩展性和成本效益性,成为推动现代软件开发和运维的关键力量。本文将探讨云原生概念的演变,特别是从微服务架构到无服务器计算的转变,揭示这一进化如何影响应用程序的开发、部署和管理。通过分析实际案例,我们旨在提供对云原生技术未来趋势的洞察,同时指出企业在这一转变过程中可能面临的挑战和机遇。
49 2
|
5月前
|
运维 Cloud Native 持续交付
云原生架构的演进:从微服务到无服务器计算
【7月更文挑战第28天】在数字化浪潮的推动下,云原生技术不断演进,引领着软件开发和运维模式的革新。本文将深入探讨云原生架构的发展历程,着重分析微服务架构与无服务器计算模型如何相互补充,共同推动现代应用的开发与部署。我们将从微服务的基本原则出发,探索其如何赋能团队快速迭代和扩展应用,进而阐述无服务器计算如何简化资源管理,降低运营成本。通过对比分析,揭示两者结合的优势,为读者提供构建未来云原生应用的洞见。
|
5月前
|
存储 运维 监控
云原生时代的数据存储与计算优化策略
【7月更文挑战第15天】在数字化转型的浪潮中,云原生技术成为企业创新和效率提升的关键。本文将探索如何通过云原生架构实现数据存储和计算的优化,旨在为开发者和企业决策者提供实用的指导和建议,以应对日益增长的数据挑战。
|
5月前
|
运维 Cloud Native 开发者
云原生架构的演进之路:从微服务到无服务器计算
在数字化转型的浪潮中,企业不断追求更高效、灵活的IT解决方案。云原生技术作为推动现代软件部署的关键力量,其发展经历了从微服务到无服务器计算的转变。本文将深入探讨这一演进过程,揭示它如何重塑应用开发与运维模式,并展望云原生技术的未来趋势。