在 Azure Kubernetes Service (AKS) 叢集中使用機密虛擬機器 (CVM)

機密虛擬機器(CVMs)為租戶提供強大的安全性與機密性。 CVM 提供以 VM 為基礎的硬體可信任執行環境 (TEE),利用 SEV-SNP 安全功能來拒絕 Hypervisor 和其他主機管理程式碼存取 VM 記憶體和狀態,從而提供針對操作員存取的深度防禦保護。 這些功能使擁有 CVM 的節點池能夠針對高度敏感的容器工作負載遷移至 AKS,而無需重構程式碼,同時享有 AKS 的功能。 例如,如果你具備以下條件,可能需要CVM:

  • 處理安全關鍵資料和/或敏感客戶資料的工作負載
  • 滿足各種合規性要求所需的服務,尤其是政府合約。 若沒有可擴展的資料安全解決方案,可能會導致認證與合約的喪失。

在本文中,您將瞭解如何使用機密 VM 大小來建立 AKS 節點集區。

AKS 支援的機密 VM 大小

Azure 提供 AMD 和 Intel 中 信任執行環境 (TEE) 選項的選擇。 這些 TEE 可讓您建立具有絕佳性價比的機密 VM 環境,而不需要變更任何程式碼。

  • AMD 架構機密虛擬機器使用 AMD SEV-SNP 技術,該技術隨第三代 AMD EPYC™ 處理器一起引入。
  • 基於 Intel 的機密 VM 使用 Intel TDX,配備第四代 Intel® Xeon® 處理器。

備註

基於 Intel TDX 的機密虛擬機目前不支援 AKS。

如需詳細資訊,請參閱 CVM VM 大小

安全特徵

與其他虛擬機器 (VM) 大小相比,CVM 提供下列安全性增強功能:

  • 虛擬機器、Hypervisor 和主機管理程式碼之間的健全硬體式隔離。
  • 可自訂的證明原則,確保主機在部署之前符合規範。
  • 平台或客戶 (選擇性) 可擁有和管理 VM 加密金鑰。
  • 透過平台成功證明與 VM 加密金鑰之間的密碼編譯繫結保護金鑰發行。
  • 專用的虛擬信任平台模組 (TPM) 執行個體,用於證明和保護虛擬機器中的金鑰和秘密。
  • 類似於 Azure 虛擬機器信任啟動的安全開機功能

其運作方式為何?

如果您執行的工作負載需要增強的機密性和完整性,則可以從記憶體加密和增強的安全性中受益,而無需變更應用程式中的程式碼。 CVM 節點上的所有 Pod 都是相同信任界限的一部分。 由 CVM 建立的節點池中的節點會使用專為 CVM 特別設定的 客製化節點映像

支援的 OS 版本

您可以在 Linux 作業系統類型 (Ubuntu 和 Azure Linux) 上建立 CVM 節點集區。 不過、並非所有作業系統版本都支援 CVM 節點集區。

下表包含支援的 OS 版本:

OS 類型 作業系統 SKU CVM 支援 CVM 預設值
Linux Ubuntu 支援 Ubuntu 20.04 是 Kubernetes 1.24-1.34 版本的預設版本。 Ubuntu 24.04 是 Kubernetes 1.35-1.38 版本的預設版本。
Linux Ubuntu2204 不支援 AKS 不支援 Ubuntu 22.04 的 CVM。
Linux Ubuntu2404 支援 CVM 在 Kubernetes 1.32-1.38 的 Ubuntu2404 上支援。
Linux AzureLinux 支援於 Azure Linux 3.0 針對 Kubernetes 1.28 至 1.36 版啟用 CVM 時,預設會使用 Azure Linux 3。
Linux flatcar 不支援 適用於 AKS 的 Flatcar 容器 Linux 不支援 CVM。
Linux AzureLinuxOSGuard 不支援 具有適用於 AKS 的 OS Guard 的 Azure Linux 不支援 CVM。
Linux AzureContainerLinux 不支援 Azure Container Linux(ACL)不支援 CVM。
窗戶 所有 Windows 作業系統的 SKU 不支援 N/A

使用 UbuntuAzureLinux 作為 osSKU時,若預設作業系統版本不支援 CVM,AKS 會預設使用最新支援 CVM 的作業系統版本。 例如,Ubuntu 22.04 為 Linux 節點集區的預設值。 由於 22.04 目前不支援 CVM,AKS 預設使用 Ubuntu 20.04 來支援 Linux 的 CVM 節點池。

限制

將具有 CVM 的節點集區新增至 AKS 時,適用下列限制:

  • 您無法使用 FIPS、ARM64、信任啟動或 Pod 沙箱。
  • 您無法更新現有的節點集區以移轉至 CVM 大小。 若要移轉,您必須 調整節點集區的大小
  • 你不能用 CVM 搭配 Windows 節點池。
  • Azure Container Linux(ACL)目前不支援 AKS 中的 CVM 節點池。

先決條件

開始之前,請確定您具備下列項目:

  • 現有的 AKS 叢集。
  • 在建立叢集的區域中,您的訂用帳戶必須有 CVM 大小。 您必須有足夠的配額、才能建立具有 CVM 大小的節點集區。

將具有 CVM 的節點集區新增至 AKS 叢集

使用命令 az aks nodepool add 將具有 CVM 的節點集區新增至 AKS 叢集,並將 設定 node-vm-size 為支援的 VM 大小

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name cvmnodepool \
    --node-count 3 \
    --node-vm-size Standard_DC4as_v5 

如果您未指定 osSKUosType,AKS 預設為 --os-type Linux--os-sku Ubuntu

要建立使用 Azure Linux 的 CVM 節點池,請設定 --os-sku AzureLinux

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name cvmnodepool \
    --node-count 3 \
    --node-vm-size Standard_DC4as_v5 \
    --os-sku AzureLinux

將現有的節點池與 CVM 升級到 Ubuntu 24.04

用指令 az aks nodepool update 將現有的節點池和 CVM 從 Ubuntu 20.04 升級到 Ubuntu 24.04。 設定為 os-skuUbuntu2404

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name cvmnodepool \
    --os-sku Ubuntu2404

確認節點池是否使用 CVM

  1. 用指令 az aks nodepool show 驗證節點池使用 CVM,並驗證 vmSize 是否為 Standard_DCa4_v5

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'vmSize'
    

    以下指令與輸出範例顯示節點池使用 CVM:

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'vmSize'
    
    "Standard_DC4as_v5"
    
  2. 使用命令 az aks nodepool list 驗證節點集區是否使用 CVM 映像。

    az aks nodepool list \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'nodeImageVersion'
    

    下列範例命令和輸出顯示節點集區使用 Ubuntu 20.04 CVM 映像:

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'nodeImageVersion'
    
    "AKSUbuntu-2004cvmcontainerd-202507.02.0"
    

從 AKS 叢集移除包含 CVM 的節點池

請使用 指令 az aks nodepool delete 移除 AKS 叢集中包含 CVM 的節點池。

az aks nodepool delete \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name cvmnodepool

在這篇文章中,你學會了如何在 AKS 叢集中加入一個包含 CVM 的節點池。