為 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 的節點集區和映射不同。

建立已啟用 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
    

    注意

    您也可以在建立叢集時搭配 az aks create 命令使用 --enable-fips-image 參數,在默認節點集區上啟用 FIPS。 以這種方式將節點集區新增至建立的叢集時,您仍然必須在新增節點集區以建立已啟用 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
    

    下列範例輸出顯示 已啟用 FIPS 的 fipsnp 節點集區:

    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. 使用 kubectl debug 命令,在已啟用 FIPS 的節點集區中的其中一個節點上執行具有互動式會話的部署。

    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. 確認 Windows 節點集區能夠存取 FIPS 密碼編譯連結庫,方法是 在已啟用 FIPS 的節點集區中建立 Windows 節點 的 RDP 連線,並檢查登錄。 從[ 執行 ] 應用程式,輸入 regedit

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

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

Screenshot shows a picture of the registry editor to the FIPS Algorithm Policy, and it being enabled.

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

下一步

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