PCI DSS 4.0.1 的 AKS 管控群集的增强多重身份验证(MFA)

本文介绍根据支付卡行业数据安全标准(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 工作负荷。

即将推出 GitHub 徽标 参考实现:适用于 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 群集的所有管理访问权限。

实现步骤:

  1. 为 AKS 群集启用 Azure AD 集成:

    az aks update --resource-group myResourceGroup --name myAKSCluster --enable-aad --aad-admin-group-object-ids <admin-group-object-id>
    
  2. 创建要求 AKS 管理员进行 MFA 的条件访问策略:

    • 导航到 Azure AD>安全>条件访问
    • 创建面向具有 AKS 管理角色的用户的新策略。
    • 设置云应用(Azure Kubernetes 服务)的条件。
    • 需要 MFA 作为访问控制。
  3. 将适当的 Azure RBAC 角色分配给用户和组,以便进行 AKS 访问。

要求 8.4.2

MFA 是针对 CDE 的所有访问实现的。

你的责任

将 MFA 要求扩展到访问 CDE 的所有用户,而不仅仅是管理员:

  • 配置全面的条件访问策略:为访问 AKS 资源的所有用户(包括开发人员和运营人员)创建需要 MFA 的策略。
  • 实现工作负荷标识:对 AKS 中运行的应用程序使用工作负荷标识,从而无需存储凭据,同时维护安全身份验证。
  • 使用 Azure AD 组:将用户组织到适当的 Azure AD 组,并在组级别应用 MFA 要求。
  • 文档访问模式:维护所有访问模式的文档,并确保为每个模式强制实施 MFA。

实现步骤:

  1. 为所有 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")
        }
    }
    
  2. 为 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 服务器访问配置专用终结点以限制远程访问向量。
  • 监视远程访问:对所有远程访问尝试实施日志记录和监视。

实现步骤:

  1. 配置基于位置的条件访问策略:

    • 为受信任的网络范围定义 Azure AD 中的命名位置。
    • 创建需要 MFA 从不受信任的位置进行访问的策略。
    • 将所有与 AKS 相关的云应用程序应用策略。
  2. 实现专用群集配置以提高安全性:

    # 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>
    
  3. 配置用于安全远程访问的 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 要求的任何尝试实现监视。

实现步骤:

  1. 在条件访问中配置会话控制:

    {
      "sessionControls": {
        "signInFrequency": {
          "value": 1,
          "type": "hours",
          "isEnabled": true
        },
        "persistentBrowser": {
          "mode": "never",
          "isEnabled": true
        }
      }
    }
    
  2. 使用 Azure AD 标识保护检测和响应异常访问模式。

  3. 为实时策略强制实施实施持续访问评估。

AKS 的其他 MFA 注意事项

服务帐户和工作负荷身份验证

虽然重点是用户身份验证,但请考虑工作负载如何进行身份验证:

  • 使用工作负荷标识:为 AKS 中运行的应用程序实现 Azure AD 工作负荷标识,以消除存储的凭据。
  • 避免服务帐户密钥:不要将长期服务帐户密钥用于工作负荷身份验证。
  • 实现令牌轮换:确保定期自动轮换工作负荷令牌。

紧急访问过程

在确保 MFA 符合性的同时维护紧急访问过程:

  • Break-glass 帐户:使用适当的监视和审批流程配置紧急访问帐户。
  • 记录紧急程序:维护紧急访问方案的明确文档。
  • 测试紧急过程:定期测试紧急访问过程,以确保在需要时工作。

监视和符合性

针对 MFA 符合性实施全面的监视:

  • 使用 Azure Monitor:监视所有 AKS 访问中的 MFA 成功率和失败率。
  • 实现警报:为 MFA 绕过尝试或失败设置警报。
  • 定期访问评审:定期评审用户访问和 MFA 合规性。
  • 审核日志:维护所有身份验证事件的综合审核日志。

监视的实现步骤:

  1. 为 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
    
  2. 为 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 文档