為 Azure Kubernetes Service (AKS) 節點集區啟用聯邦資訊處理標準 (FIPS)
聯邦資訊處理標準 (FIPS) 140-2 是美國政府標準,定義資訊技術產品和系統中密碼編譯模組的最低安全性需求。 Azure Kubernetes Service (AKS) 可讓您建立已啟用 FIPS 140-2 的 Linux 和 Windows 節點集區。 在已啟用 FIPS 的節點集區上執行的部署可以使用這些密碼編譯模組來提供更高的安全性,並協助符合 FedRAMP 合規性的安全性控制。 如需 FIPS 140-2 的詳細資訊,請參閱聯邦資訊處理標準 (FIPS) 140。
必要條件
- 已安裝及設定的 Azure CLI 2.32.0 版或更新版本。 執行
az --version
以尋找版本。 如需安裝或升級 Azure CLI 的詳細資訊,請參閱安裝 Azure CLI。
注意
AKS 監視附加元件支援啟用 FIPS 的節點集區,使用 Ubuntu、Azure Linux 和 Windows,從代理程式 3.1.17 版(Linux) 和 Win-3.1.17 (Windows) 開始。
限制
- 已啟用 FIPS 的節點集區有下列限制:
- 已啟用 FIPS 的節點集區需要 Kubernetes 1.19 版和更新版本。
- 若要更新 FIPS 所使用的基礎套件或模組,您必須使用節點映像升級。
- FIPS 節點上的容器映像尚未評估 FIPS 合規性。
- CIFS 共用的掛接失敗,因為 FIPS 會停用某些驗證模組。 若要解決此問題,請參閱 在已啟用 FIPS 的節點集區上掛接檔案共享時發生錯誤。
重要
已啟用 FIPS 的 Linux 映像與用於 Linux 節點集區的預設 Linux 映像不同。 若要在節點集區上啟用 FIPS,您必須建立新的 Linux 節點集區。 您無法在現有的節點集區上啟用 FIPS。
已啟用 FIPS 的節點映像可能會有不同的版本號碼,例如核心版本,而不是未啟用 FIPS 的映像。 已啟用 FIPS 的節點集區和節點映像的更新週期可能與未啟用 FIPS 的節點集區和映像不同。
支援的OS版本
您可以在所有支援的作業系統類型、Linux 和 Windows 上建立已啟用 FIPS 的節點集區。 不過,並非所有操作系統版本都支援啟用 FIPS 的 nodepools。 發行新的 OS 版本之後,通常會有等候期間,才符合 FIPS 規範。
下表包含支援的 OS 版本:
OS 類型 | OS SKU | FIPS 合規性 |
---|---|---|
Linux | Ubuntu | 支援 |
Linux | Azure Linux | 支援 |
Windows | Windows Server 2019 | 支援 |
Windows | Windows Server 2022 | 支援 |
當要求啟用 FIPS 的 Ubuntu 時,如果預設的 Ubuntu 版本不支援 FIPS,AKS 會預設為最新支援的 Ubuntu FIPS 版本。 例如,Linux 節點集區的 Ubuntu 22.04 預設為 。 由於 22.04 目前不支援 FIPS,因此 AKS 預設為已啟用 Linux FIPS 的 Nodepools Ubuntu 20.04。
注意
先前,您可以使用 GetOSOptions API 來判斷指定的 OS 是否支援 FIPS。 從 2024-05-01 開始,GetOSOptions API 現在已過時,且不再包含在新的 AKS API 版本中。
建立已啟用 FIPS 的 Linux 節點集區
使用
az aks nodepool add
命令搭配--enable-fips-image
參數,建立已啟用 FIPS 的 Linux 節點集區。az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name fipsnp \ --enable-fips-image
注意
您也可以在建立叢集以在預設節點集區上啟用 FIPS 時,使用
--enable-fips-image
參數搭配az aks create
命令。 以這種方式將節點集區新增至建立的叢集時,您仍然必須在新增節點集區以建立已啟用 FIPS 的節點集區時,使用--enable-fips-image
參數。使用
az aks show
命令確認您的節點集區是否已啟用 FIPS,並在 agentPoolProfiles 中查詢 enableFIPS 值。az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
下列範例輸出顯示 fipsnp 節點集區已啟用 FIPS:
Name enableFips --------- ------------ fipsnp True nodepool1 False
使用
kubectl get nodes
命令列出節點。kubectl get nodes
下列範例輸出顯示叢集中的節點清單。 開頭為
aks-fipsnp
的節點是已啟用 FIPS 節點集區的一部分。NAME STATUS ROLES AGE VERSION aks-fipsnp-12345678-vmss000000 Ready agent 6m4s v1.19.9 aks-fipsnp-12345678-vmss000001 Ready agent 5m21s v1.19.9 aks-fipsnp-12345678-vmss000002 Ready agent 6m8s v1.19.9 aks-nodepool1-12345678-vmss000000 Ready agent 34m v1.19.9
在已啟用 FIPS 節點集區的其中一個節點上,使用
kubectl debug
命令以透過互動式工作階段來執行部署。kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
從互動式工作階段輸出來確認 FIPS 密碼編譯程式庫已啟用。 您的輸出看起來應類似下列的範例輸出:
root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled 1
已啟用 FIPS 的節點集區也有 kubernetes.azure.com/fips_enabled=true 標籤,部署可用這些節點集區設為目標。
建立已啟用 FIPS 的 Windows 節點集區
使用
az aks nodepool add
命令搭配--enable-fips-image
參數,建立已啟用 FIPS 的 Windows 節點集區。 與以 Linux 為基礎的節點集區不同,Windows 節點集區會共用相同的映像集。az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name fipsnp \ --enable-fips-image \ --os-type Windows
使用
az aks show
命令確認您的節點集區是否已啟用 FIPS,並在 agentPoolProfiles 中查詢 enableFIPS 值。az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
在已啟用 FIPS 的節點集區中建立 Windows 節點的 RDP 連線,並檢查登錄,確認 Windows 節點集區可以存取 FIPS 密碼編譯程式庫。 從 [執行] 應用程式中,輸入
regedit
。在登錄中尋找
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy
。如果
Enabled
設為 1,則會啟用 FIPS。
已啟用 FIPS 的節點集區也有 kubernetes.azure.com/fips_enabled=true 標籤,部署可用這些節點集區設為目標。
下一步
若要深入了解 AKS 安全性,請參閱 Azure Kubernetes Service (AKS) 中叢集安全性和升級的最佳做法。