如何在 Kubernetes 上部署 SGX 应用程序?

How can I deploy SGX apps on Kubernetes?

我最近了解到英特尔 SGX 处理器能够加密 enclave 以永久存储到磁盘。之后,我开始编写我的第一个 SGX 应用程序,现在我想知道是否有机会将它们部署到 Kubernetes 上?

您的问题可以分为多个步骤:

  1. 拥有一个向您的应用程序公开 SGX 的 Kubernetes 集群

您需要具有支持 SGX 的 CPU 的 Kubernetes 节点。 Kubernetes 像 SGX 一样处理“特殊设备”的方式是通过 Device Plugins。 Kubernetes 存在多个 SGX 设备插件:

一旦您为节点配备了此类插件,它们就会为您提供一种将 SGX 设备暴露给您的容器的机制。

  1. 为 Kubernetes 构建 SGX 应用并访问 SGX 资源

您需要将 enclave 捆绑到容器中并编写 Kubernetes 资源定义。云原生应用程序最常用的语言可能是 Go。基于 EdgelessRT Go 运行时和 SDK(link) 的机密微服务应用程序有一个很好的示例,它使用 Azure 设备插件将 SGX 暴露给容器:https://github.com/edgelesssys/emojivoto

  1. 为您的 SGX 应用程序管理证明、密封等

在 Kubernetes 上部署 SGX 应用程序时最有趣的一点可能是特定于 SGX 的编排。虽然 Kubernetes 处理所有一般编排,但 SGX 特定任务(如部署的远程认证、迁移和机密管理)需要单独处理。 Marblerun 服务网格解决了这些任务,即: