你当前正在访问 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 的节点池需要 Kubernetes 1.19 及更高版本。
- 若要更新用于 FIPS 的基础包或模块,必须使用 节点映像升级。
- 尚未评估 FIPS 节点上的容器映像的 FIPS 符合性。
- 装载 CIFS 共享失败,因为 FIPS 会禁用某些身份验证模块。 若要解决此问题,请参阅在启用了 FIPS 的节点池上装载文件共享时出现错误。
重要
已启用 FIPS 的 Linux 映像与用于基于 Linux 的节点池的默认 Linux 映像不同。 若要在节点池上启用 FIPS,必须创建新的基于 Linux 的节点池。 不能在现有节点池上启用 FIPS。
已启用 FIPS 的节点映像的版本号(如内核版本)可能不同于未启用 FIPS 的映像。 已启用 FIPS 的节点池和节点映像的更新周期可能与未启用 FIPS 的节点池和映像不同。
创建已启用 FIPS 的 Linux 节点池
使用带有
--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 的节点池。使用
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
使用
kubectl debug
命令在已启用 FIPS 的节点池中的某个节点上以交互会话运行部署。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 节点池
使用带有
--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
使用
az aks show
命令验证节点池是否已启用 FIPS,并在 agentPoolProfiles 中查询 enableFIPS 值。az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
验证 Windows 节点池是否有权访问 FIPS 加密库,方法是:在已启用 FIPS 的节点池中创建与 Windows 节点的 RDP 连接并检查注册表。 在“运行”应用程序中,输入
regedit
。在注册表中查找
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy
。如果
Enabled
设置为 1,则 FIPS 已启用。
已启用 FIPS 的节点池还具有 kubernetes.azure.com/fips_enabled=true 标签,可供部署用来针对这些节点池。
后续步骤
若要详细了解 AKS 安全性,请参阅有关 Azure Kubernetes 服务 (AKS) 中的群集安全性和升级的最佳做法。