你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

带有 Intel SGX enclave 的 Azure Kubernetes 服务 (AKS) 上的机密容器

机密容器可帮助你在基于 Intel SGX 的可信执行环境 (TEE) 中运行大多数常见编程语言运行时(Python、Node、Java 等)的现有未修改容器应用程序。 这种封装模型通常不需要进行任何源代码修改或重新编译,是在 Intel SGX enclave 中运行的最快方法。 运行标准 docker 容器的典型部署过程需要开源 SGX Wrapper 或 Azure 合作伙伴解决方案。 在此打包和执行模型中,每个容器应用程序都加载在可信边界 (enclave) 中,并具有由 Intel SGX CPU 强制执行的基于硬件的隔离。 在 enclave 中运行的每个容器都会收到从 Intel SGX CPU 提供的自己的内存加密密钥。 此模型非常适合市场上可用的现成容器应用程序或当前在常规用途节点上运行的自定义应用程序。 若要运行现有的 Docker 容器,机密计算节点上的应用程序需要 Intel Software Guard Extensions (SGX) 包装器软件,以帮助容器在特殊 CPU 指令集的界限内执行。 SGX 创建到 CPU 的直接执行,以从信任边界中删除来宾操作系统 (OS)、主机 OS 或虚拟机监控程序。 此步骤减少了整体表面攻击区域和漏洞,同时在单个节点内实现进程级别隔离。

运行未修改容器的整个过程涉及更改你的容器目前的打包方式,如下所述。

机密容器转换关系图,其中包含用于启用 Intel SGX 和 AKS 的新步骤。

帮助运行标准容器所需的 SGX 包装器软件由 Azure 软件合作伙伴或开源软件 (OSS) 解决方案提供。

合作伙伴启用程序

开发人员可以根据功能、与 Azure 服务的集成以及工具支持来选择软件提供商。

重要

Azure 软件合作伙伴通常会在你的 Azure 基础架构上收取许可费用。 请独立验证所有合作伙伴软件条款。

Fortanix

Fortanix 具有门户和命令行接口 (CLI) 体验,可将其容器化应用程序转换为支持 SGX 的机密容器。 无需修改或重新编译应用程序。 Fortanix 提供运行和管理广泛应用程序集所需的灵活性。 可以使用现有的应用程序、新的 enclave 原生应用程序以及预打包的应用程序。 从 Fortanix 的 Enclave Manager UI 或 REST API 开始。 使用 Fortanix 的 AKS 快速入门指南创建机密容器。

Fortanix 部署过程关系图,其中显示了将应用程序移动到机密容器和部署的步骤。

SCONE (Scontain)

SCONE (Scontain) 安全策略生成证书、密钥和机密。 只有具有应用程序证明的服务才会看到这些凭据。 应用程序服务通过 TLS 自动进行彼此证明。 无需修改应用程序或 TLS。 有关更多说明,请参阅 SCONE 的 Flask 应用程序演示

SCONE 可以将现有的大多数二进制文件转换为在 enclave 内运行的应用程序。 SCONE 还通过对数据文件和 Python 代码文件进行加密来保护 Python 之类的解释语言。 可以使用 SCONE 安全策略防止对加密文件进行未经授权的访问、修改和回退。 有关详细信息,请参阅 SCONE 的文档,了解如何将 SCONE 与现有的 Python 应用程序一起使用

SCONE 工作流关系图,其中显示了 SCONE 处理二进制图像的方式。

你可以按照 SCONE 示例 AKS 应用程序部署中所述,在带有 AKS 的 Azure 机密计算节点上部署 SCONE。

Anjuna

Anjuna 提供 SGX 平台软件,可在 AKS 上运行未修改的容器。 有关详细信息,请参阅 Anjuna 的有关功能和示例应用程序的文档

此处开始使用示例 Redis 缓存和 Python 自定义应用程序

Anjuna 进程关系图,其中显示了如何在 Azure 机密计算上运行容器。

OSS 启用程序

注意

Azure 机密计算和 Microsoft 不直接与这些项目和解决方案关联。

Gramine

Gramine 是一种轻型来宾 OS,旨在运行具有最低主机要求的单个 Linux 应用程序。 Gramine 可以在隔离的环境中运行应用程序。 某些工具支持将现有 Docker 容器转换为 SGX 就绪容器。

有关详细信息,请参阅 Gramine 的示例应用程序和 AKS 上的部署

Occlum

Occlum 是适用于 Intel SGX 的、内存安全的多进程库 OS (LibOS)。 OS 使旧版应用程序能够在 SGX 上运行,只需对源代码进行很少的修改,甚至根本不需要进行修改。 Occlum 以透明方式保护用户工作负载的机密性,同时可以让用户轻松地“直接迁移”到现有的 Docker 应用程序。

有关详细信息,请参阅 Occlum 的 AKS 上的部署说明和示例应用

Marblerun

Marblerun 是机密容器的业务流程框架。 可以在支持 SGX 的 Kubernetes 上运行和缩放机密服务。 Marblerun 负责样板任务,例如验证群集中的服务、管理这些服务的机密,以及在这些服务之间建立 enclave 到 enclave 的 mTLS 连接。 Marblerun 还确保机密容器的群集符合以简单 JSON 定义的清单。 外部客户端可以通过远程证明来验证清单。

此框架可将单个 enclave 的机密性、完整性和可验证性属性扩展到 Kubernetes 群集。

Marblerun 支持使用 Graphene、Occlum 和 EGo 创建的机密容器,其中每个 SDK 都包含示例。 此框架在 Kubernetes 上与现有的云原生工具一起运行。 有 CLI 和 helm 图表。 Marblerun 还支持 AKS 上的机密计算节点。 遵循 Marblerun 有关在 AKS 上部署 Marblerun 的指南

机密容器参考体系结构

联系方式

你对实现有疑问吗? 是否要成为机密容器的启用程序? 向 acconaks@microsoft.com 发送电子邮件。

后续步骤