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



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

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

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

您需要具有SGX功能CPU的Kubernetes节点。Kubernetes处理";特殊装置";因为SGX是通过设备插件。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设备暴露给你的容器。

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

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

  1. 管理SGX应用程序的认证、密封等

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

  • 您的服务证明:https://marblerun.sh/docs/features/attestation/
  • 迁移和恢复:https://marblerun.sh/docs/features/recovery/
  • 保密管理:https://marblerun.sh/docs/features/secrets-management/

最新更新