Azure Kubernetes Service 的信任啟動 (AKS)
受信任的啟動 可藉由防範進階和持續性的攻擊技術,改善第 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.66.0 版或更新版本。 執行
az --version
以尋找版本,然後執行az upgrade
以升級版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI。 - 安全開機需要已簽署的開機載入器、OS 核心和驅動程式。
限制
- AKS 支援 1.25.2 版和更新版本的受信任啟動。
- 可信啟動僅支援 Azure 第 2 代 VM。
- 不支援執行 Windows Server 作業系統的叢集節點。
- 受信任的啟動不支援已啟用 FIPS 或以 Arm64 為基礎的節點集區。
- 受信任的啟動不支援虛擬節點。
- 不支援可用性設定組,只有虛擬機器擴展集。
- 若要在 GPU 節點集區上啟用安全開機,您必須略過安裝 GPU 驅動程式。 如需詳細資訊,請參閱 略過 GPU 驅動程式安裝。
- 您可以使用可信啟動來建立暫時性 OS 磁碟,並支援所有區域。 不過,並非所有的虛擬機器大小都受到支援。 如需詳細資訊,請參閱暫時性 OS 大小的可信啟動。
部署新的叢集
執行下列步驟,以使用 Azure CLI 部署 AKS 叢集。
使用 az aks create 命令來建立 AKS 叢集。 執行命令之前,請先檢閱下列參數:
- --name:輸入 AKS 叢集的唯一名稱,例如 myAKSCluster。
- --resource-group:輸入現有資源群組的名稱,以裝載 AKS 叢集資源。
- --enable-secure-boot:讓安全開機能夠驗證由信任發行者簽署的映像。
- --enable-vtpm:透過測量 VM 的整個開機鏈來啟用 vTPM 並執行證明。
注意
安全開機需要已簽署的開機載入器、OS 核心和驅動程式。 如果在啟用安全開機之後,您的節點並未啟動,您可以確認哪些開機元件導致 Azure Linux 虛擬機器內的安全開機失敗。 請參閱驗證安全開機失敗。
下列範例會建立名為 myAKSCluster 的叢集,其在 myResourceGroup 中包含一個節點,並且會啟用安全開機和 vTPM:
az aks create \ --name myAKSCluster \ --resource-group myResourceGroup \ --node-count 1 \ --enable-secure-boot \ --enable-vtpm \ --generate-ssh-keys
執行下列命令,取得 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 並執行證明。
注意
根據預設,使用與TL相容的組態建立節點集區會導致受信任的啟動映像。 若未指定 --enable-vtpm
或 --enable-secure-boot
參數,預設會加以停用,您稍後可以使用 az aks nodepool update
命令來啟用。 現有的 nodepool 必須使用可信啟動映像,才能在現有的節點集區上啟用。
注意
安全開機需要已簽署的開機載入器、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
下一步
在本文中,您已了解如何啟用可信啟動。 深入了解可信啟動。