你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

为 Azure Kubernetes 服务 (AKS) 节点池启用美国联邦信息处理标准 (FIPS)

美国联邦信息处理标准 (FIPS) 140-2 是美国政府标准,用于定义信息技术产品和系统中加密模块的最低安全要求。 Azure Kubernetes 服务 (AKS) 允许你创建启用了 FIPS 140-2 的 Linux 和 Windows 节点池。 在已启用 FIPS 的节点池上运行的部署可以使用这些加密模块来增加安全性,并帮助满足 FedRAMP 合规性中的安全控制要求。 有关 FIPS 140-2 的详细信息,请参阅美国联邦信息处理标准 (FIPS) 140

先决条件

  • 安装并配置了 Azure CLI 2.32.0 或更高版本。 运行 az --version 即可查找版本。 若要详细了解如何安装或升级 Azure CLI,请参阅安装 Azure CLI

注意

从代理版本 3.1.17 (Linux)和 Win-3.1.17 (Windows) 开始,AKS 监视加载项通过 Ubuntu、Azure Linux 和 Windows 支持启用了 FIPS 的节点池。

限制

  • 已启用 FIPS 的节点池具有下列限制:

重要

已启用 FIPS 的 Linux 映像与用于基于 Linux 的节点池的默认 Linux 映像不同。 若要在节点池上启用 FIPS,必须创建新的基于 Linux 的节点池。 不能在现有节点池上启用 FIPS。

已启用 FIPS 的节点映像的版本号(如内核版本)可能不同于未启用 FIPS 的映像。 已启用 FIPS 的节点池和节点映像的更新周期可能与未启用 FIPS 的节点池和映像不同。

创建已启用 FIPS 的 Linux 节点池

  1. 使用带有 --enable-fips-image 参数的 az aks nodepool add 命令创建启用 FIPS 的 Linux 节点池。

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name fipsnp \
        --enable-fips-image
    

    注意

    创建群集时,还可以使用 --enable-fips-image 参数和 az aks create 命令,以启用默认节点池上的 FIPS。 向以此方式创建的群集添加节点池时,仍必须使用 --enable-fips-image 参数,以创建已启用 FIPS 的节点池。

  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. 使用 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. 使用带有 --enable-fips-image 参数的 az aks nodepool add 命令创建启用 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 服务 (AKS) 中的群集安全性和升级的最佳做法