有關 Azure Kubernetes Service (AKS) 上機密運算節點的常見問題集

此文章可解決 Azure Kubernetes Service (AKS) 上 Intel SGX 型機密運算節點的常見問題。 如果您有任何進一步的問題,請傳送電子郵件到 acconaks@microsoft.com

Products

AKS 上的機密運算節點是否可供實際執行環境使用?

是,適用於 Intel SGX 記憶體保護區節點。

我是否可以搭配 Azure 機密運算 AKS 叢集啟用加速網路?

是,DCSv3 VM 節點支援加速網路。 DCSv2 虛擬機器則不支援。

機密節點 AKS 映像上的 Intel SGX 驅動程式是哪個版本?

目前,Azure 機密運算 DCSv2/DCSv3 VM 所安裝的版本是 Intel SGX DCAP 1.33.2

我是否可以插入安裝後指令碼到 AKS 佈建的節點或為 AKS 佈建的節點自訂驅動程式?

否。 以 AKS 引擎為基礎的機密運算節點支援允許自訂安裝,並對您的 Kubernetes 控制平面具有完整控制權的機密運算節點。

我是否可以搭配其他標準 AKS SKU 執行 ACC 節點 (建立異質節點集區叢集)?

是,您可以在相同的 AKS 叢集中執行不同的節點集區,包括 ACC 節點。 若要以特定節點集區上的記憶體保護區應用程式為目標,請考慮新增節點選取器或套用 EPC 限制。 如需詳細資訊,請參閱這裡的機密節點快速入門。

我是否可以搭配 ACC 執行 Windows 節點與 Windows 容器?

目前不能。 如果您有 Windows 節點或容器需求,請透過 acconaks@microsoft.com 與產品小組聯繫。

我是否仍然可以在機密運算節點上排程並執行非記憶體保護區容器?

是。 VM 也有可執行標準容器工作負載的一般記憶體。 在您決定部署模型之前,請先考慮應用程式的安全性與威脅模型。

我應該為機密運算節點選擇的 VM SKU 為何?

DCSv2/DCsv3 SKU。 如需 DCSv2DCSv3 的詳細資訊,請參閱支援的區域

我是否可以透過 Azure 入口網站使用 DCSv2 節點集區佈建 AKS?

是。 Azure CLI 也可以用來做為這裡所述的替代方案。

支援哪些 Ubuntu 版本和 VM 世代?

在第 2 代上支援 18.04。

此產品的已知目前限制有哪些?

  • 僅在第 2 代 VM 節點上支援 Ubuntu 18.04
  • 沒有 Windows 節點支援或 Windows 容器支援
  • 不支援以 EPC 記憶體為基礎的水平 Pod 自動調整。 支援 CPU 和一般記憶體型調整。
  • 目前不支援機密應用程式 AKS 上的 Dev Spaces

我是否可以透過 Azure 入口網站使用 DCSv2/DCSv3 節點集區佈建 AKS?

是。 Azure CLI 也可以用來做為這裡所述的替代方案。

開發及部署

我是否可以使用我現有的容器化應用程式,並透過 Azure 機密運算在 AKS 上加以執行?

是,您將會在 Intel SGX 記憶體保護區中執行自備的 SGX 包裝函式軟體,請參閱機密容器頁面,以取得平台啟用程式的詳細資訊。

我應該使用 Docker 基礎映像來開始使用記憶體保護區應用程式?

不同啟用程式 (ISV 與 OSS 專案) 提供啟用機密容器的方式。 如需實作詳細資訊與個別參考,請參閱機密容器頁面 \(部分機器翻譯\)。

機密容器概念

何謂證明以及如何為在記憶體保護區中執行的應用程式提供證明?

證明是示範及驗證軟體已在特定硬體平台上正確具現化的程序。 其也可確保其辨識項可驗證,以保證其是在安全平台上執行,而且尚未遭到竄改。 深入了解如何為記憶體保護區應用程式完成證明。

如果我的容器大小超過可用的 EPC 記憶體,該怎麼辦?

EPC 記憶體會套用至設計來在記憶體保護區中執行的應用程式部分。 容器的總大小不是與最大可用 EPC 記憶體比較的正確方式。 事實上,具有 SGX 的 DCSv2 機器允許最多 32 GB 的 VM 記憶體,可讓應用程式不受信任的部分利用。 不過,若您的容器取用的記憶體量超過可用 EPC 記憶體,則在記憶體保護區中執行之程式部分的效能可能會受影響。

若要更妥善地管理背景工作節點中的 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

若我的記憶體保護區取用的記憶體量超過可用 EPC 記憶體上限,會發生什麼事?

總可用 EPC 記憶體由相同 VM 或背景工作節點中的所有記憶體保護區應用程式共用。 如果您應用程式的記憶體使用量超過可用 EPC 記憶體,則應用程式效能可能會受影響。 基於這個理由,建議您在部署 yaml 檔案中設定每個應用程式的容忍值,以更妥善地管理每個背景工作節點的可用 EPC 記憶體,如上述範例所示。 或者,您一律都可以選擇增加背景工作節點集區 VM 大小,或新增更多節點。

為什麼我無法在記憶體保護區應用程式中執行分支 () 和 exec 來執行多個處理序?

目前,Azure 機密運算 DCsv2 SKU VM 針對在記憶體保護區中執行的程式支援單一位址空間。 單一處理序是目前針對高安全性而設計的限制。 不過,機密容器啟用程式可能會有替代的實作可克服此限制。

我是否必須在部署 yaml 中掛接驅動程式磁碟區?

否。 產品提供的 ACC 附加元件包括可協助您處理此問題的 (confcom)。 在這裡深入了解部署詳細資料。

我們是否可以變更 AKS 上目前的 Intel SGX DCAP 驅動程式版本?

否。 若要執行任何自訂安裝,我們建議您選擇 AKS 引擎機密運算背景工作節點部署。

在機密運算的記憶體保護區中,是否只會載入已簽署且受信任的映像?

在記憶體保護區初始化期間不會以原生方式載入,但透過證明程序可驗證簽章則為是。 請參閱這裡的資訊。

容器簽署是否可以將程式碼完整性保護帶到機密容器?

機密容器可讓您簽署記憶體保護區程式碼,而不是 Docker 容器本身。 使用記憶體保護區程式碼簽署時 (通常是您以 JAVA 或 Python 等撰寫的核心應用程式程式碼),在透過證明流程以信任程式碼與執行環境之前,您可以先藉由證明記憶體保護區程式碼的 MRSIGNER 詳細資料來進行驗證。

後續步驟

如需有關機密容器的詳細資訊,請檢閱機密容器頁面