本文介绍根据支付卡行业数据安全标准(PCI DSS 4.0.1)配置的 Azure Kubernetes 服务(AKS)群集的增强多重身份验证(MFA)注意事项。
本文是一系列文章的其中一篇。 阅读 简介。
PCI DSS 4.0.1 大大扩展了对持卡人数据环境(CDE)和云管理访问权限的所有访问的 MFA 要求。 此体系结构和实现侧重于基础结构,而不是工作负荷。 本文提供了一般注意事项和最佳做法,可帮助你做出设计决策。 请遵循官方 PCI-DSS 4.0.1 标准中的要求,并在适用的情况下使用本文作为其他信息。
重要
该指南和随附的实现基于中心辐射型网络拓扑的 AKS 基线体系结构为基础。 中心虚拟网络包含用于控制出口流量的防火墙、来自本地网络的网关流量,以及用于维护的第三个网络。 辐射虚拟网络包含 AKS 群集,该群集提供卡持有者环境(CDE),并托管 PCI DSS 工作负荷。
参考实现:适用于 PCI DSS 4.0.1 的受管制工作负载参考实现的 Azure Kubernetes 服务(AKS)基线群集目前正在更新,即将推出。 此实现将演示一个受监管的基础结构,该基础结构演示了 CDE 中各种网络安全控制的使用。 这包括本机到 Azure 的网络控件,以及 Kubernetes 的本机控制。 它还将包括一个应用程序,用于演示环境与示例工作负荷之间的交互。 本文的重点在于基础结构。 该示例不会指示实际 PCI-DSS 4.0.1 工作负荷。
根据业务需求限制对持卡人数据的访问
注释
本文已针对 PCI DSS 4.0.1 进行了更新。 主要更改包括对 CDE 的所有访问权限的扩展 MFA 要求、云管理访问权限的增强身份验证,以及对特权访问的更强控制。 确保查看官方 PCI DSS 4.0.1 文档 ,了解完整详细信息和未来日期的要求。
要求 8:识别并验证对系统组件的访问
AKS 功能支持
AKS 提供了多种功能来帮助满足 PCI DSS 4.0.1 MFA 要求:
- Microsoft Entra ID (Azure AD) 集成:通过 Azure AD RBAC 启用 AKS 群集访问的集中式标识管理和 MFA 强制实施。
- 条件访问策略:允许对所有特权角色要求 MFA,并访问 AKS 资源的路径,包括 API、CLI 和门户访问。
- Azure Policy:可用于审核和强制执行 AKS 管理员的 MFA 要求,并确保符合性。
- 实时(JIT)访问:通过 Microsoft Entra Privileged Identity Management(PIM)支持进行时间限制的特权访问。
- 工作负荷标识:为 AKS 中运行的应用程序启用安全身份验证,而无需存储凭据。
要求 8.4
多重身份验证(MFA)是针对 CDE 的所有访问实现的。
你的责任
Requirement | 职责 |
---|---|
要求 8.4.1 | 针对具有管理访问权限的人员对 CDE 的所有非控制台访问实现 MFA。 |
要求 8.4.2 | MFA 是针对 CDE 的所有访问实现的。 |
要求 8.4.3 | MFA 针对源自实体网络外部的所有远程访问实现,这些远程访问可以访问或影响 CDE。 |
要求 8.4.1
针对具有管理访问权限的人员对 CDE 的所有非控制台访问实现 MFA。
你的责任
为 AKS 群集的所有管理访问权限实现 MFA:
- 启用Microsoft Entra ID 集成:配置 AKS 群集以使用 Azure AD 进行身份验证和授权。 有关详细说明,请参阅 在 AKS 中使用 Azure AD。
- 配置条件访问策略:为访问 AKS 资源的所有管理角色创建需要 MFA 的策略。 请参阅 常见条件访问策略。
- 实现 Azure RBAC:使用 Azure 基于角色的访问控制来管理对具有内置角色(如“Azure Kubernetes 服务群集管理员角色”和“Azure Kubernetes 服务 RBAC 群集管理员”)的 AKS 资源的访问权限。 有关详细信息,请参阅使用 Azure RBAC 进行 Kubernetes 授权。
- 监视管理访问权限:使用 Azure Monitor 和 Azure AD 日志跟踪对 AKS 群集的所有管理访问权限。
实现步骤:
为 AKS 群集启用 Azure AD 集成:
az aks update --resource-group myResourceGroup --name myAKSCluster --enable-aad --aad-admin-group-object-ids <admin-group-object-id>
创建要求 AKS 管理员进行 MFA 的条件访问策略:
- 导航到 Azure AD>安全>条件访问。
- 创建面向具有 AKS 管理角色的用户的新策略。
- 设置云应用(Azure Kubernetes 服务)的条件。
- 需要 MFA 作为访问控制。
将适当的 Azure RBAC 角色分配给用户和组,以便进行 AKS 访问。
要求 8.4.2
MFA 是针对 CDE 的所有访问实现的。
你的责任
将 MFA 要求扩展到访问 CDE 的所有用户,而不仅仅是管理员:
- 配置全面的条件访问策略:为访问 AKS 资源的所有用户(包括开发人员和运营人员)创建需要 MFA 的策略。
- 实现工作负荷标识:对 AKS 中运行的应用程序使用工作负荷标识,从而无需存储凭据,同时维护安全身份验证。
- 使用 Azure AD 组:将用户组织到适当的 Azure AD 组,并在组级别应用 MFA 要求。
- 文档访问模式:维护所有访问模式的文档,并确保为每个模式强制实施 MFA。
实现步骤:
为所有 CDE 访问创建条件访问策略:
# Example PowerShell script to create a Conditional Access policy $policy = @{ displayName = "Require MFA for AKS CDE Access" state = "enabled" conditions = @{ applications = @{ includeApplications = @("6dae42f8-4368-4678-94ff-3960e28e3630") # Azure Kubernetes Service } users = @{ includeGroups = @("your-cde-access-group-id") } } grantControls = @{ operator = "AND" builtInControls = @("mfa") } }
为 AKS 应用程序配置工作负荷标识:
# Enable workload identity on AKS cluster az aks update -g myResourceGroup -n myAKSCluster --enable-workload-identity # Create service account with workload identity kubectl create serviceaccount myserviceaccount kubectl annotate serviceaccount myserviceaccount azure.workload.identity/client-id="your-client-id"
要求 8.4.3
MFA 针对源自实体网络外部的所有远程访问实现,这些远程访问可以访问或影响 CDE。
你的责任
确保对所有远程访问 AKS 资源强制实施 MFA:
- 配置基于位置的策略:使用条件访问要求 MFA 才能从外部受信任的网络位置进行访问。
- 实现设备符合性:要求托管设备远程访问 AKS 资源。
- 使用 Azure 专用链接:为 AKS API 服务器访问配置专用终结点以限制远程访问向量。
- 监视远程访问:对所有远程访问尝试实施日志记录和监视。
实现步骤:
配置基于位置的条件访问策略:
- 为受信任的网络范围定义 Azure AD 中的命名位置。
- 创建需要 MFA 从不受信任的位置进行访问的策略。
- 将所有与 AKS 相关的云应用程序应用策略。
实现专用群集配置以提高安全性:
# Create private AKS cluster az aks create \ --resource-group myResourceGroup \ --name myPrivateCluster \ --enable-private-cluster \ --enable-aad \ --aad-admin-group-object-ids <admin-group-object-id>
配置用于安全远程访问的 Azure 专用链接:
# Enable private endpoint for AKS az aks update \ --resource-group myResourceGroup \ --name myPrivateCluster \ --enable-private-cluster \ --private-dns-zone system
要求 8.5
多重身份验证(MFA)系统配置为防止滥用。
你的责任
Requirement | 职责 |
---|---|
要求 8.5.1 | 实施 MFA 系统,以便必须在授予访问权限之前完成 MFA 过程。 |
要求 8.5.1
实施 MFA 系统,以便必须在授予访问权限之前完成 MFA 过程。
你的责任
在授予访问权限之前,请确保无法绕过 MFA 并强制实施:
- 配置会话控件:使用 Azure AD 会话控件来确保每个会话都需要 MFA。
- 实现登录频率控制:将策略配置为需要适当时间间隔重新进行身份验证。
- 仔细使用持久性浏览器会话:限制持久性浏览器会话,并要求对敏感作使用 MFA。
- 监视旁路尝试:针对绕过 MFA 要求的任何尝试实现监视。
实现步骤:
在条件访问中配置会话控制:
{ "sessionControls": { "signInFrequency": { "value": 1, "type": "hours", "isEnabled": true }, "persistentBrowser": { "mode": "never", "isEnabled": true } } }
使用 Azure AD 标识保护检测和响应异常访问模式。
为实时策略强制实施实施持续访问评估。
AKS 的其他 MFA 注意事项
服务帐户和工作负荷身份验证
虽然重点是用户身份验证,但请考虑工作负载如何进行身份验证:
- 使用工作负荷标识:为 AKS 中运行的应用程序实现 Azure AD 工作负荷标识,以消除存储的凭据。
- 避免服务帐户密钥:不要将长期服务帐户密钥用于工作负荷身份验证。
- 实现令牌轮换:确保定期自动轮换工作负荷令牌。
紧急访问过程
在确保 MFA 符合性的同时维护紧急访问过程:
- Break-glass 帐户:使用适当的监视和审批流程配置紧急访问帐户。
- 记录紧急程序:维护紧急访问方案的明确文档。
- 测试紧急过程:定期测试紧急访问过程,以确保在需要时工作。
监视和符合性
针对 MFA 符合性实施全面的监视:
- 使用 Azure Monitor:监视所有 AKS 访问中的 MFA 成功率和失败率。
- 实现警报:为 MFA 绕过尝试或失败设置警报。
- 定期访问评审:定期评审用户访问和 MFA 合规性。
- 审核日志:维护所有身份验证事件的综合审核日志。
监视的实现步骤:
为 MFA 报告配置 Azure Monitor 工作簿:
SigninLogs | where TimeGenerated > ago(30d) | where AppDisplayName contains "Azure Kubernetes Service" | where AuthenticationRequirement == "multiFactorAuthentication" | summarize MFAAttempts = count(), MFASuccesses = countif(ResultType == 0), MFAFailures = countif(ResultType != 0) by UserPrincipalName | extend MFASuccessRate = (MFASuccesses * 100.0) / MFAAttempts
为 MFA 符合性设置 Azure Monitor 警报:
{ "criteria": { "allOf": [ { "query": "SigninLogs | where AppDisplayName contains \"Azure Kubernetes Service\" | where AuthenticationRequirement == \"multiFactorAuthentication\" | where ResultType != 0", "timeAggregation": "Count", "operator": "GreaterThan", "threshold": 5 } ] }, "actions": { "actionGroups": ["your-action-group-id"] } }
后续步骤
为所有系统实施全面的恶意软件防护控制,并定期更新防病毒软件或程序。
相关资源
有关在 AKS 环境中实现 MFA 的详细信息,请参阅:
有关 PCI DSS 4.0.1 要求的详细信息,请查看官方 PCI DSS 4.0.1 文档。