我最近了解到英特尔 SGX 处理器能够加密飞地以将持久存储到磁盘。之后,我开始编写我的第一个 SGX 应用程序,现在我想知道是否有机会在 Kubernetes 上部署它们?
问问题
182 次
1 回答
3
您的问题可以分为多个步骤:
- 拥有一个将 SGX 公开给您的应用程序的 Kubernetes 集群
您需要具有支持 SGX 的 CPU 的 Kubernetes 节点。Kubernetes 像 SGX 一样处理“特殊设备”的方式是通过Device Plugins。Kubernetes 存在多个 SGX 设备插件:
- 英特尔:https ://intel.github.io/intel-device-plugins-for-kubernetes/cmd/sgx_plugin/README.html
- Azure:https ://github.com/Azure/aks-engine/blob/master/docs/topics/sgx.md
一旦你为节点配备了这样的插件,它们就会为你提供一种将 SGX 设备暴露给你的容器的机制。
- 为 Kubernetes 构建 SGX 应用程序并访问 SGX 资源
您需要将 enclave 捆绑到容器中并编写 Kubernetes 资源定义。云原生应用程序最常用的语言可能是 Go。基于 EdgelessRT Go 运行时和 SDK(link) 的机密微服务应用程序有一个很好的示例,它使用 Azure 设备插件将 SGX 暴露给容器:https ://github.com/edgelesssys/emojivoto
- 为您的 SGX 应用程序管理证明、密封等
在 Kubernetes 上部署 SGX 应用程序时,最有趣的一点可能是 SGX 特定的编排。虽然 Kubernetes 处理所有常规编排,但 SGX 特定的任务(如远程证明、迁移和部署的机密管理)需要单独处理。Marblerun 服务网格解决了这些任务,即:
于 2021-01-05T14:46:53.603 回答