Share via


為 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 節點集區

  1. 使用 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 參數。

  2. 使用 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  
    
  3. 使用 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
    
  4. 在已啟用 FIPS 節點集區的其中一個節點上,使用 kubectl debug 命令以透過互動式工作階段來執行部署。

    kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  5. 從互動式工作階段輸出來確認 FIPS 密碼編譯程式庫已啟用。 您的輸出看起來應類似下列的範例輸出:

    root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled
    1
    

已啟用 FIPS 的節點集區也有 kubernetes.azure.com/fips_enabled=true 標籤,部署可用這些節點集區設為目標。

建立已啟用 FIPS 的 Windows 節點集區

  1. 使用 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
    
  2. 使用 az aks show 命令確認您的節點集區是否已啟用 FIPS,並在 agentPoolProfiles 中查詢 enableFIPS 值。

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    
  3. 在已啟用 FIPS 的節點集區中建立 Windows 節點的 RDP 連線,並檢查登錄,確認 Windows 節點集區可以存取 FIPS 密碼編譯程式庫。 從 [執行] 應用程式中,輸入 regedit

  4. 在登錄中尋找 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy

  5. 如果 Enabled 設為 1,則會啟用 FIPS。

此螢幕快照顯示 FIPS 演算法原則的登錄編輯器圖片,並啟用它。

已啟用 FIPS 的節點集區也有 kubernetes.azure.com/fips_enabled=true 標籤,部署可用這些節點集區設為目標。

下一步

若要深入了解 AKS 安全性,請參閱 Azure Kubernetes Service (AKS) 中叢集安全性和升級的最佳做法