適用於 Azure Kubernetes Service 的信任啟動 (預覽版)

受信任的啟動 (預覽版)藉由防範進階和持續性的攻擊技術,改善第 2 代虛擬機 (VM) 的安全性。 它可讓系統管理員部署包含基礎虛擬機的AKS節點,其中包含已驗證和簽署的開機載入器、OS 核心和驅動程式。 藉由使用安全且測量的開機,系統管理員會取得整個開機鏈結完整性的見解和信心。

本文可協助您了解這項新功能,以及如何實作這項功能。

概觀

可信啟動是由數種可獨立啟用的協調基礎結構技術組成。 每個技術都會針對複雜的威脅提供另一層防禦。

  • vTPM - 信任的啟動引進硬體信賴平臺模組 (TPM) 的虛擬化版本,符合 TPM 2.0 規格。 其可作為金鑰和度量的專用安全保存庫。 可信啟動提供 VM 專用的 TPM 執行個體,在任何 VM 外部的安全環境中執行。 vTPM 可透過測量 VM 的整個開機鏈 (UEFI、OS、系統和驅動程式),啟用證明。 受信任的啟動會使用 vTPM 來執行雲端的遠程證明。 它用於平臺健康情況檢查,以及做出信任型決策。 進行健康情況檢查時,可信啟動可藉密碼編譯方式認證您的 VM 已正確開機。 如果進程失敗,可能是因為您的 VM 正在執行未經授權的元件,適用於雲端的 Microsoft Defender 會發出完整性警示。 警示包含無法通過完整性檢查之元件的詳細資料。

  • 安全開機 - 在受信任啟動的根目錄是 VM 的安全開機。 此模式會在平臺韌體中實作,可防範惡意代碼型 Rootkit 和開機套件的安裝。 安全開機的運作方式是確保只有已簽署的作業系統和驅動程式可以開機。 安全開機會在 VM 上建立軟體堆疊的「信任根目錄」。 啟用安全開機后,所有OS開機組件(開機載入器、核心、核心驅動程式)都必須由受信任的發行者簽署。 Windows 和精選 Linux 發行版本都支援安全開機。 如果安全開機無法驗證受信任的發行者所簽署的映像,則不允許 VM 開機。 如需詳細資訊,請參閱安全開機

開始之前

  • Azure CLI 2.44.1 版或更新版本。 執行 az --version 以尋找版本,然後執行 az upgrade 以升級版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI

  • aks-preview Azure CLI 擴充功能 1.0.0b6 版或更新版本。

  • 在 Azure 訂用帳戶中註冊 TrustedLaunchPreview 功能。

  • AKS 支援 1.25.2 版和更新版本的受信任啟動(預覽)。

  • 受信任的啟動僅支援 Azure 第 2 代 VM

  • 安全開機需要已簽署的開機載入器、OS 核心和驅動程式。

安裝 aks-preview Azure CLI 延伸模組

重要

AKS 預覽功能可透過自助服務,以加入方式使用。 預覽會以「現狀」和「可供使用時」提供,其其不受服務等級協定和有限瑕疵擔保所保護。 客戶支援部門會盡最大努力,部分支援 AKS 預覽。 因此,這些功能不適合實際執行用途。 如需詳細資訊,請參閱下列支援文章:

若要安裝 aks-preview 延伸模組,請執行下列命令:

az extension add --name aks-preview

執行下列命令,以更新為發行的最新版延伸模組:

az extension update --name aks-preview

註冊 TrustedLaunchPreview 功能旗標

使用 az feature register 命令以註冊 TrustedLaunchPreview 功能旗標,如下列範例所示:

az feature register --namespace "Microsoft.ContainerService" --name "TrustedLaunchPreview"

狀態需要幾分鐘的時間才會顯示「已註冊」。 使用 az feature show 命令以驗證註冊狀態:

az feature show --namespace "Microsoft.ContainerService" --name "TrustedLaunchPreview"

當狀態顯示為 [已註冊] 時,請使用 az provider register 命令重新整理 Microsoft.ContainerService 資源提供者的註冊:

az provider register --namespace "Microsoft.ContainerService"

限制

  • 不支援執行 Windows Server 作業系統的叢集節點。
  • 受信任的啟動 (預覽) 不支援已啟用 FIPS 或以 ARM64 為基礎的節點集區。
  • 不支援可用性設定組,僅 虛擬機器擴展集。
  • 若要在 GPU 節點集區上啟用安全開機,您必須略過安裝 GPU 驅動程式。 如需詳細資訊,請參閱略過 GPU 驅動程式安裝
  • 您可以透過信任啟動建立暫時的OS磁碟,並支援所有區域。 不過,並非所有的虛擬機大小都受到支援。 如需詳細資訊,請參閱 受信任的啟動暫時操作系統大小

部署新的叢集

執行下列步驟,以使用 Azure CLI 部署 AKS 叢集。

  1. 使用 az aks create 命令來建立 AKS 叢集。 執行命令之前,請先檢閱下列參數:

    • --name:輸入 AKS 叢集的唯一名稱,例如 myAKSCluster
    • --resource-group:輸入現有資源群組的名稱,以裝載 AKS 叢集資源。
    • --enable-secure-boot:讓安全開機能夠驗證由受信任發行者簽署的映射。
    • --enable-vtpm:藉由測量 VM 的整個開機鏈結,啟用 vTPM 並執行證明。

    注意

    安全開機需要已簽署的開機載入器、OS 核心和驅動程式。 如果在啟用安全開機之後,您的節點未啟動,您可以確認哪些開機組件負責 Azure Linux 虛擬機內的安全開機失敗。 請參閱 確認安全開機失敗

    下列範例會使用 myResourceGroup 中的一個節點建立名為 myAKSCluster叢集,並啟用安全開機和 vTPM:

    az aks create --name myAKSCluster --resource-group myResourceGroup --node-count 1 --enable-secure-boot --enable-vtpm --enable-managed-identity --generate-ssh-keys
    
  2. 執行下列命令,取得 Kube 叢集的存取認證。 使用 az aks get-credentials 命令,並取代叢集名稱和資源群組名稱的值。

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

新增已啟用受信任啟動的節點集區

使用 az aks nodepool add 命令部署已啟用受信任啟動的節點集區。 執行命令之前,請先檢閱下列參數:

  • --cluster-name:輸入 AKS 叢集的名稱。
  • --resource-group:輸入現有資源群組的名稱,以裝載 AKS 叢集資源。
  • --name:輸入節點集區的唯一名稱。 節點集區的名稱只能包含小寫英數字元,且開頭必須為小寫字母。 如果是 Linux 節點集區,長度必須介於 1 到 11 個字元之間。
  • --node-count:Kubernetes 代理程式集區中的節點數目。 預設為 3。
  • --enable-secure-boot:讓安全開機能夠驗證由受信任的發行者簽署的映射。
  • --enable-vtpm:藉由測量 VM 的整個開機鏈結,啟用 vTPM 並執行證明。

注意

安全開機需要已簽署的開機載入器、OS 核心和驅動程式。 如果在啟用安全開機之後,您的節點未啟動,您可以確認哪些開機組件負責 Azure Linux 虛擬機內的安全開機失敗。 請參閱 確認安全開機失敗

下列範例會在名為 myAKSCluster 且具有三個節點的叢集上部署已啟用 vTPM 的節點集區:

az aks nodepool add --resource-group myResourceGroup -–cluster-name myAKSCluster --name mynodepool --node-count 3 --enable-vtpm  

下列範例會在名為 myAKSCluster 且具有三個節點的叢集上部署 vTPM 且已啟用安全開機的節點集區:

az aks nodepool add --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-count 3 --enable-vtpm --enable-secure-boot

更新叢集並啟用受信任的啟動

使用 az aks nodepool update 命令來更新已啟用受信任啟動的節點集區。 執行命令之前,請先檢閱下列參數:

  • --resource-group:輸入裝載現有 AKS 叢集的現有資源群組名稱。
  • --cluster-name:AKS 叢集的唯一名稱,例如 myAKSCluster
  • --name:輸入節點集區的名稱,例如 mynodepool
  • --enable-secure-boot:讓安全開機能夠驗證映射是否已由受信任的發行者簽署。
  • --enable-vtpm:藉由測量 VM 的整個開機鏈結,啟用 vTPM 並執行證明。

注意

現有的 nodepool 必須使用受信任的啟動映像,才能在現有的節點集區上啟用。 因此,對於註冊 TrustedLaunchPreview 功能之前建立的 nodepool,您無法使用啟用信任的啟動來更新它們。

根據預設,使用與 TL 相容的組態建立節點集區,且註冊的功能旗標會導致受信任的啟動映像。 若未指定 --enable-vtpm--enable-secure-boot 參數,預設會停用它們,您稍後 az aks nodepool update 可以使用 命令來啟用。

注意

安全開機需要已簽署的開機載入器、OS 核心和驅動程式。 如果在啟用安全開機之後,您的節點未啟動,您可以確認哪些開機組件負責 Azure Linux 虛擬機內的安全開機失敗。 請參閱 確認安全開機失敗

下列範例會更新 myResourceGroup 中 myAKSCluster上的節點集區 mynodepool,並啟用安全開機和 vTPM:

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --enable-secure-boot --enable-vtpm 

將 Pod 指派給已啟用受信任啟動的節點

您可以限制 Pod,並將它限制在特定節點上執行,或喜好設定為已啟用受信任啟動的節點。 您可以使用 Pod 指令清單中的下列節點集區選取器來控制此動作。

針對執行 vTPM 的節點集區,請套用下列專案:

spec:
  nodeSelector:
        kubernetes.azure.com/trusted-launch: true

針對執行安全開機的節點集區,請套用下列專案:

spec:
  nodeSelector:
        kubernetes.azure.com/secure-boot: true

停用安全開機

若要停用 AKS 叢集上的安全開機,請執行下列命令:

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --disable-secure-boot 

注意

更新 自動啟動節點重新映像,而此作業可能需要幾分鐘的時間。每個節點可能需要幾分鐘的時間。

停用 vTPM

若要停用 AKS 叢集上的 vTPM,請執行下列命令:

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --disable-vtpm

下一步

在本文中,您已瞭解如何啟用受信任的啟動。 深入瞭解 受信任的啟動