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

通过门户在 AWS 上启用 Defender for Containers(EKS)

本文介绍如何通过 Azure 门户在 Amazon EKS 群集上启用 Microsoft Defender for Containers。 可以选择一次性启用所有安全功能以实现全面的保护,或根据要求有选择地部署特定组件。

何时使用本指南

如果您想使用本指南,请:

  • 首次在 AWS 上设置 Defender for Containers
  • 启用所有安全功能以实现全面保护
  • 有选择地部署特定组件
  • 修复或向现有部署添加缺少的组件
  • 使用受控选择性方法进行部署
  • 从保护中排除某些群集

先决条件

网络要求

验证是否为公有云部署配置了以下终结点以进行出站访问。 配置它们以用于出站访问有助于确保 Defender 传感器可以连接到 Microsoft Defender for Cloud 以发送安全数据和事件。

注释

Azure 域 *.ods.opinsights.azure.com*.oms.opinsights.azure.com 不再需要用于出站访问。 有关详细信息,请查看弃用通知

Azure 域 Azure 政府域 由世纪互联运营的 Azure 域 港口
*.cloud.defender.microsoft.com N/A N/A 443

还需要验证启用了 Azure Arc 的 Kubernetes 网络要求

特定于 AWS 的要求:

  • 具有适当权限的 AWS 帐户
  • 活动 EKS 群集(版本 1.19+)
  • Amazon ECR 中的容器映像
  • AWS CLI 已安装并配置
  • 从 EKS 到 Azure 的出站 HTTPS 连接

创建 AWS 连接器

  1. 登录到 Azure 门户

  2. 转到 Microsoft Defender for Cloud

  3. 从左侧菜单中选择 “环境设置 ”。

  4. 选择“添加环境”“Amazon Web Services”>

    屏幕截图显式用于在 Microsoft Defender for Cloud 中添加 AWS 环境的选择。

配置连接器详细信息

  1. “帐户详细信息 ”部分中,输入:

    • 帐户别名:AWS 帐户的描述性名称
    • AWS 帐户 ID:你的 12 位 AWS 帐户标识符
    • 资源组:选择或创建资源组

    表单的屏幕截图,该表单用于填写 Microsoft Defender for Cloud 中的 AWS 环境的帐户详细信息。

  2. 然后选择“下一步:选择计划”。

启用 Defender for Containers 功能

  1. “选择计划”中,将“容器”切换为“开启”

    Defender for Cloud 环境设置中 AWS 连接器的屏幕截图。

  2. 选择 “设置” 以访问计划配置选项。

    Defender for Cloud 环境设置中容器计划的设置的屏幕截图,其中突出显示了无代理威胁防护。

  3. 选择部署方法:

    选项 A:启用所有组件(建议)

    若要进行全面的保护,请启用所有功能:

    • 将所有切换设置为 “开”
    • 此设置为 EKS 环境提供完整的安全覆盖

    选项 B:启用特定组件

    根据要求仅选择所需的组件:

  4. 根据所选的方法配置可用组件:

    • 无代理威胁防护:通过将 Kubernetes 审核日志发送到 Microsoft Defender,为群集容器提供运行时保护。

      • 将开关设置为 “打开 ”以启用
      • 为审核日志配置保留期
      • 发现 AWS 帐户中的所有 EKS 群集

      注释

      如果禁用此配置,将禁用控制平面威胁检测。 详细了解功能可用性

    • Kubernetes API 访问(Kubernetes 的无代理发现):设置权限,以允许基于 API 的 Kubernetes 群集发现。

      • 将开关设置为 “打开 ”以启用
      • 提供清单和安全状况评估
    • 注册表访问 (无代理容器漏洞评估):设置权限以允许对 ECR 中存储的图像进行漏洞评估。

      • 将开关设置为 “打开 ”以启用
      • 扫描容器映像中是否存在已知漏洞
    • 自动预配 Defender 的 Azure Arc 传感器 (Defender 守护程序集):自动在已启用 Arc 的群集上部署 Defender 传感器,以便进行运行时威胁检测。

      • 将开关设置为 “打开 ”以启用
      • 为工作负荷保护提供实时安全警报

    屏幕截图显示在 Microsoft Defender for Cloud 中为 Azure Arc 启用 Defender 传感器的选择。

    小窍门

    • 对于生产环境,我们建议启用所有组件。
    • 若要测试或逐步推出,请从特定组件开始,稍后再添加更多内容。
    • 使用 Defender 传感器自动部署适用于 Kubernetes 的 Azure Policy。
  5. 选择 “继续 ”和 “下一步:配置访问权限”。

设置 AWS 权限

  1. 按照 “配置访问” 页上的说明进行操作。

    屏幕截图显示用于在 Microsoft Defender for Cloud 中配置 AWS 环境的访问权限的页面。

  2. 从门户下载 CloudFormation 模板。

  3. 在 AWS 中部署 CloudFormation 堆栈:

    1. 打开 AWS CloudFormation 控制台
    2. 使用下载的模板创建新堆栈
    3. 查看和创建堆栈
  4. 堆栈创建完成后,从堆栈输出复制角色 ARN。

  5. 返回到 Azure 门户并粘贴角色 ARN。

  6. 选择 “下一步:查看并创建”。

  7. 查看配置并选择“ 创建”。

部署所有组件

注释

如果选择在上一部分中启用所有组件,请按照本节中的所有步骤作。 如果选择特定组件,则仅完成与所选功能相关的步骤。

按照以下步骤根据配置启用保护:

授予控制平面权限

启用时必需:无代理威胁防护或 Kubernetes API 访问

如果 为 Kubernetes 启用了无代理发现,请使用以下方法之一授予群集的控制平面权限:

  • 选项 1:使用 Python 脚本

    运行 此 Python 脚本 ,将 Defender for Cloud 角色 MDCContainersAgentlessDiscoveryK8sRole 添加到 aws-auth ConfigMap 要加入的 EKS 群集。

  • 选项 2:使用 eksctl

    为每个 Amazon EKS 群集授予 MDCContainersAgentlessDiscoveryK8sRole 角色:

    eksctl create iamidentitymapping \
        --cluster my-cluster \
        --region region-code \
        --arn arn:aws:iam::account:role/MDCContainersAgentlessDiscoveryK8sRole \
        --group system:masters \
        --no-duplicate-arns
    

    有关详细信息,请参阅 Amazon EKS 用户指南中的通过 EKS 访问条目授予 IAM 用户对 Kubernetes 的访问权限

将 EKS 群集连接到 Azure Arc

启用时必需:为 Azure Arc 自动预配 Defender 传感器

需要在 EKS 群集上安装并运行已启用 Azure Arc 的 Kubernetes、Defender 传感器和适用于 Kubernetes 的 Azure Policy。 有一个专用的 Defender for Cloud 建议安装以下扩展:

  1. 转到“Microsoft Defender for Cloud”>“建议”。

  2. 查找建议: EKS 集群应安装 Microsoft Defender 的 Azure Arc 专用扩展程序。

  3. 按照建议提供的修正步骤操作:

    介绍如何通过安装所需的 Defender for Containers 组件来修正 EKS 群集建议的屏幕截图。

部署 Defender 传感器

重要

使用 Helm 部署 Defender 传感器:与自动预配和更新的其他选项不同,Helm 允许灵活部署 Defender 传感器。 此方法在 DevOps 和基础结构即代码方案中特别有用。 使用 Helm,可以将部署集成到 CI/CD 管道中,并控制所有传感器更新。 还可以选择接收预览版和 GA 版本。 有关使用 Helm 安装 Defender 传感器的说明,请参阅 使用 Helm 安装 Defender for Containers 传感器

启用时必需:为 Azure Arc 自动预配 Defender 传感器

将 EKS 群集连接到 Azure Arc 后,部署 Defender 传感器:

  1. 转到“Microsoft Defender for Cloud”>“建议”。

  2. 查找有关在已启用 Arc 的群集上安装 Defender 扩展的建议。

  3. 选择建议并按照补救步骤进行操作。

  4. 传感器为群集提供运行时威胁检测。

注释

还可以使用 Helm 部署 Defender 传感器,以便更好地控制部署配置。 有关 Helm 部署说明,请参阅 使用 Helm 部署 Defender 传感器

配置 ECR 漏洞扫描

启用时必需:注册表访问

  1. 转到 AWS 连接器设置。

  2. 选择“容器计划”旁边的 “配置 ”。

  3. 验证 注册表访问 是否已启用。

  4. 推送到 ECR 的图像会在 24 小时内自动扫描。

启用审核日志记录

启用时必需:无代理威胁防护

为每个 EKS 群集启用审核日志记录:

# Enable audit logs
aws eks update-cluster-config \
    --name <cluster-name> \
    --logging '{"clusterLogging":[{"types":["audit","authenticator"],"enabled":true}]}'

查看建议和警报

若要查看 EKS 群集的警报和建议,

  1. 转到警报、建议或清单页。

  2. 使用筛选器按资源类型 AWS EKS 群集进行筛选。

    有关在 Microsoft Defender for Cloud 安全警报页上使用筛选器的选择的屏幕截图,该页用于查看与 AWS EKS 群集相关的警报。

小窍门

可以按照此博客文章中的说明来模拟容器警报。

部署特定组件(可选)

如果最初选择仅启用某些组件,现在想要添加更多组件,或者需要修复现有部署的问题:

将组件添加到现有部署

  1. 转到 “环境设置” 并选择 AWS 连接器。

  2. 选择容器右侧的 Defender 计划>设置

  3. 为要添加的组件启用额外的开关:

    • 无代理威胁防护:用于运行时保护
    • Kubernetes API 访问:用于群集发现
    • 注册表访问:对于 ECR 漏洞扫描
    • 自动预配 Defender 传感器:用于工作负荷保护
  4. 保存更改,并按照新启用组件的部署步骤进行操作。

注释

可以从自动预配中排除特定的 AWS 群集。 对于传感器部署,请在值为 ms_defender_container_exclude_agents 的资源上应用 true 标记。 对于无代理部署,请在值为 ms_defender_container_exclude_agentless 的资源上应用 true 标记。

将 Defender 传感器部署到特定群集

仅将传感器部署到选定的 EKS 群集:

  1. 将特定群集连接到 Azure Arc(并非所有群集)。

  2. 转到 “建议 ”,找到“已启用 Arc 的 Kubernetes 群集应已安装 Defender 扩展”。

  3. 仅选择您希望放置传感器的群集。

  4. 仅对所选群集执行纠正步骤。

为现有群集部署组件

如果群集缺少或失败的组件,请执行以下步骤:

检查组件状态

  1. 转到 “清单 ”并按 AWS 资源进行筛选。

  2. 检查每个 EKS 群集,了解以下情况:

    • Arc 连接状态
    • Defender 扩展状态
    • 策略扩展状态

修复 Arc 连接问题

对于显示为断开连接的群集:

  1. 重新运行 Arc 连接脚本。

  2. 验证从群集到 Azure 的网络连接。

  3. 检查 Arc 代理日志: kubectl logs -n azure-arc -l app.kubernetes.io/component=cluster-agent

修复传感器部署问题

对于缺少 Defender 传感器的群集:

  1. 验证 Arc 连接是否正常。

  2. 检查是否存在冲突的策略或准入控制器。

  3. 如果需要,请手动部署:使用建议中的补救措施。

为特定注册表配置 ECR 扫描

要仅扫描特定的 ECR 注册表,请执行以下操作:

  1. 在连接器配置中,启用 无代理容器漏洞评估

  2. 使用 AWS IAM 策略限制扫描程序对特定注册表的访问。

  3. 标记需要包括或排除在扫描中的注册表。

有选择地部署 Azure Policy 扩展

仅将策略评估部署到特定群集:

  1. 建立 Arc 连接后,转到 策略>定义

  2. 搜索“在已启用 Arc 的 Kubernetes 上配置 Azure Policy 扩展”。

  3. 创建限定于特定资源组或群集的分配。

  4. 验证部署: kubectl get pods -n kube-system -l app=azure-policy

为特定群集配置审核日志记录

有选择地启用审核日志记录:

# For specific cluster
aws eks update-cluster-config \
    --name <specific-cluster> \
    --logging '{"clusterLogging":[{"types":["audit"],"enabled":true}]}'

验证部署

检查连接器运行状况

  1. 转到 “环境”设置

  2. 选择 AWS 连接器。

  3. 验证:

    • 状态: 已连接
    • 上次同步:最近时间戳
    • 发现的资源数量

查看发现的资源

  1. 转到 库存

  2. 环境 = AWS 进行筛选。

  3. 请确保看到:

    • 所有 EKS 群集(或仅选择性部署的群集)
    • ECR 注册表
    • 容器映像

安全检测测试

生成测试安全警报:

# Connect to an EKS cluster
aws eks update-kubeconfig --name <cluster-name> --region <region>

# Trigger a test alert
kubectl run test-alert --image=nginx --rm -it --restart=Never -- sh -c "echo test > /etc/shadow"

在 5 到 10 分钟内检查 Defender for Cloud 中的警报。

Troubleshooting

部署问题

如果组件无法部署:

  1. 检查 Arc 连接:确保群集显示为“已连接”
  2. 验证 IAM 角色:确认该角色具有所有必需的权限
  3. 查看网络:检查出站 HTTPS 连接
  4. 检查配额:验证 AWS 服务配额是否未超过

传感器 Pod 未启动

# Check pod status
kubectl describe pods -n kube-system -l app=microsoft-defender

# Common issues:
# - Image pull errors: Check network connectivity
# - Permission denied: Verify RBAC settings
# - Resource constraints: Check node resources

Arc 扩展卡住

# Check extension status
az k8s-extension show \
    --cluster-name <cluster-name> \
    --resource-group <rg> \
    --cluster-type connectedClusters \
    --name microsoft.azuredefender.kubernetes

# If stuck, delete and recreate
az k8s-extension delete \
    --cluster-name <cluster-name> \
    --resource-group <rg> \
    --cluster-type connectedClusters \
    --name microsoft.azuredefender.kubernetes

ECR 扫描无法正常工作

  1. 验证 IAM 角色是否具有 ECR 权限。

  2. 检查扫描程序是否可以访问注册表。

  3. 确保映像位于受支持的区域中。

  4. 查看 Log Analytics 工作区中的扫描程序日志。

常见验证问题

  • 缺少资源:等待 15-30 分钟进行发现。
  • 部分覆盖范围:检查排除的资源配置。
  • 无警报:验证是否启用了审核日志记录。
  • 扫描失败:检查 ECR 权限和网络访问。

最佳做法

  1. 从非生产开始:首先在开发/测试群集上进行测试,以便进行选择性部署。
  2. 定期评审:每周检查仪表板。
  3. 警报响应:及时调查高严重性警报。
  4. 映像卫生:定期扫描和更新基本映像。
  5. 符合性:解决 CIS 基准故障。
  6. 访问控制:查看 IAM 角色和 RBAC 权限。
  7. 文档排除:跟踪特定群集在选择性部署中排除的原因。
  8. 以增量方式部署:使用选择性部署时,一次添加一个组件。
  9. 监视每个步骤:在继续下一步之前验证每个组件。

清理资源

若要禁用 Defender for Containers,请完成以下步骤:

  1. 转到 AWS 连接器。

  2. 选择以下任一项:

    • 关闭容器 以禁用计划
    • 删除整个连接器以删除所有配置
  3. 删除 AWS 资源:

    • 删除 CloudFormation 堆栈
    • 断开群集与 Arc 的连接

后续步骤