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

有关 Azure Kubernetes 服务 (AKS) 上的机密计算节点的常见问题解答

本文解决了有关 Azure Kubernetes 服务 (AKS) 上基于 Intel SGX 的机密计算节点的常见问题。 如果你有任何其他问题,请发送电子邮件至 acconaks@microsoft.com

产品

是否可以在生产环境中使用 AKS 上的机密计算节点?

是。适用于 Intel SGX enclave 节点。

能否使用 Azure 机密计算 AKS 群集启用加速网络?

是的,DCSv3 VM 节点支持加速网络。 DCsv2 虚拟机不支持。

机密节点的 AKS 映像上是哪个版本的 Intel SGX 驱动程序版本?

目前,Azure 机密计算 DCSv2/DCSv3 与 Intel SGX DCAP 1.33.2 一起安装

是否可以将安装后脚本/自定义驱动程序注入到 AKS 预配的节点?

不是。 基于 AKS 引擎的机密计算节点支持可实现自定义安装并对 Kubernetes 控制平面拥有完全控制权的机密计算节点。

能否使用其他标准 AKS SKU 来运行 ACC 节点(生成异构节点池群集)?

能,可以在同一 AKS 群集中运行不同的节点池,包括 ACC 节点。 要使 enclave 应用程序面向特定节点池,可考虑添加节点选择器或应用 EPC 限制。 请参阅此处,了解有关机密节点的快速入门的更多详细信息。

能否通过 ACC 运行 Windows 节点和 Windows 容器?

目前没有。 如果你有 Windows 节点或容器需求,请通过 联系产品团队acconaks@microsoft.com

是否仍可以在机密计算节点上计划并运行非 enclave 容器?

是的。 VM 还具有可运行标准容器工作负载的常规内存。 在确定部署模型之前,请考虑应用程序的安全性和威胁模型。

应该为机密计算节点选择什么 VM SKU?

DCSv2/DCsv3 SKU。 支持的区域中提供了有关 DCSv2DCSv3 的更多信息

是否可以通过 Azure 门户使用 DCSv2 节点池来预配 AKS?

是的。 还可以使用 Azure CLI,如此处所述。

支持哪个 Ubuntu 版本和 VM 代系?

第 2 代上的 18.04。

产品的已知当前限制是什么?

  • 仅支持 Ubuntu 18.04 Gen 2 VM 节点
  • 不支持 Windows 节点或 Windows 容器
  • 不支持基于 EPC 内存的水平 Pod 自动缩放。 支持基于 CPU 和常规内存的缩放。
  • 目前不支持机密应用的 AKS 上的开发空间

是否可以通过 Azure 门户使用 DCSv2/DCSv3 节点池来预配 AKS?

是的。 还可以使用 Azure CLI,如此处所述。

开发和部署

是否可以引入现有容器化应用程序,并通过 Azure 机密计算在 AKS 上运行该应用程序?

是。你将在 Intel SGX enclave 中运行 SGX 包装器软件,请查看机密容器页以了解有关平台启用程序的更多详细信息。

最开始使用 enclave 应用程序时我是否应该使用 Docker 基本映像?

各种启用程序(ISV 和 OSS 项目)提供了各种启用机密容器的方法。 请查看机密容器页,了解更多详细信息以及有关实现的单独参考内容。

机密容器概念

什么是证明,如何对 enclave 中运行的应用进行证明?

证明是指演示和验证某个软件是否已在特定硬件平台上正确实例化的过程。 它还可确保其证据是可验证的,从而确保软件在安全平台中运行且未被篡改。 详细了解如何对 enclave 应用进行证明。

如果容器大小超过可用 EPC 内存,该怎么办?

EPC 内存应用于为了在 enclave 中执行而经过了编程的应用程序部分。 容器的总大小并不是指示最大可用 EPC 内存的指标。 事实上,包含 SGX 的 DCSv2 计算机允许应用程序的不受信任部分可利用的最大 VM 内存为 32 GB。 但是,如果容器使用的内存超出可用的 EPC 内存,则在 enclave 中运行的程序部分的性能可能会受到影响。

若要更好地管理工作器节点中的 EPC 内存,可考虑通过 Kubernetes 实现的基于 EPC 内存的限制管理。 请参考以下示例。

注意

以下示例从 Docker Hub 拉取公共容器映像。 建议设置一个拉取密钥,以使用 Docker Hub 帐户进行身份验证,而不是发出匿名拉取请求。 若要在使用公共内容时提高可靠性,请在专用 Azure 容器注册表中导入和管理映像。 详细了解如何使用公共映像

apiVersion: batch/v1
kind: Job
metadata:
  name: sgx-test
  labels:
    app: sgx-test
spec:
  template:
    metadata:
      labels:
        app: sgx-test
    spec:
      containers:
      - name: sgxtest
        image: oeciteam/sgx-test: 1.0
        resources:
          limits:
            sgx.intel.com/sgx_epc_mem_in_MiB: 10 # This limit will automatically place the job into confidential computing node. Alternatively, you can target deployment to node pools
      restartPolicy: Never
  backoffLimit: 0

如果 enclave 使用的内存超过最大可用 EPC 内存,会发生什么情况?

同一 VM 或工作器节点中的 enclave 应用程序共用全部可用的 EPC 内存。 如果应用程序使用的 EPC 内存超出可用内存,则应用程序性能可能会受到影响。 出于此原因,建议在部署 yaml 文件中设置每个应用程序的容忍度,以更好地管理每个工作器节点的可用 EPC 内存,如以上示例中所示。 或者,始终可以选择提升工作器节点池 VM 大小或添加更多节点。

为什么无法执行 forks () 和 exec 以在 enclave 应用程序中运行多个进程?

目前,Azure 机密计算 DCsv2 SKU VM 支持为 enclave 中执行的程序使用单个地址空间。 单进程是围绕高安全性设计的当前限制。 但是,机密容器启用程序可能具有替代实现来克服此限制。

是否必须在我的部署 yaml 中装载驱动程序卷?

不是。 产品提供包含 (confcom) 的 ACC 附加组件将帮助你解决这些问题。 在此处阅读更多部署详细信息。

能否更改 AKS 上的当前 Intel SGX DCAP 驱动程序版本?

不是。 若要执行任何自定义安装,建议选择 AKS 引擎机密计算工作器节点部署。

是否在 enclave 中仅加载已签名和受信任的映像用于机密计算?

这种情况在 enclave 初始化过程中不是原生存在的,但可以通过证明过程验证签名。 请参阅此处

容器签名是否可以为机密容器提供代码完整性保护?

通过机密容器可对 enclave 代码进行签名,但不能对 docker 容器本身签名。 使用 enclave 代码(通常是 Java、Python 等中的核心应用程序代码)签名,可以通过证明验证 enclave 代码的 MRSIGNER 详细信息,然后才能通过证明流信任代码和执行环境。

后续步骤

查看机密容器页,了解有关机密容器的更多详细信息。