你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍如何通过 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 连接器
登录到 Azure 门户。
转到 Microsoft Defender for Cloud。
从左侧菜单中选择 “环境设置 ”。
选择“添加环境”“Amazon Web Services”>。
配置连接器详细信息
启用 Defender for Containers 功能
在“选择计划”中,将“容器”切换为“开启”。
选择 “设置” 以访问计划配置选项。
选择部署方法:
选项 A:启用所有组件(建议)
若要进行全面的保护,请启用所有功能:
- 将所有切换设置为 “开”
- 此设置为 EKS 环境提供完整的安全覆盖
选项 B:启用特定组件
根据要求仅选择所需的组件:
根据所选的方法配置可用组件:
无代理威胁防护:通过将 Kubernetes 审核日志发送到 Microsoft Defender,为群集容器提供运行时保护。
- 将开关设置为 “打开 ”以启用
- 为审核日志配置保留期
- 发现 AWS 帐户中的所有 EKS 群集
注释
如果禁用此配置,将禁用控制平面威胁检测。 详细了解功能可用性。
Kubernetes API 访问(Kubernetes 的无代理发现):设置权限,以允许基于 API 的 Kubernetes 群集发现。
- 将开关设置为 “打开 ”以启用
- 提供清单和安全状况评估
注册表访问 (无代理容器漏洞评估):设置权限以允许对 ECR 中存储的图像进行漏洞评估。
- 将开关设置为 “打开 ”以启用
- 扫描容器映像中是否存在已知漏洞
自动预配 Defender 的 Azure Arc 传感器 (Defender 守护程序集):自动在已启用 Arc 的群集上部署 Defender 传感器,以便进行运行时威胁检测。
- 将开关设置为 “打开 ”以启用
- 为工作负荷保护提供实时安全警报
小窍门
- 对于生产环境,我们建议启用所有组件。
- 若要测试或逐步推出,请从特定组件开始,稍后再添加更多内容。
- 使用 Defender 传感器自动部署适用于 Kubernetes 的 Azure Policy。
选择 “继续 ”和 “下一步:配置访问权限”。
设置 AWS 权限
按照 “配置访问” 页上的说明进行操作。
从门户下载 CloudFormation 模板。
在 AWS 中部署 CloudFormation 堆栈:
- 打开 AWS CloudFormation 控制台
- 使用下载的模板创建新堆栈
- 查看和创建堆栈
堆栈创建完成后,从堆栈输出复制角色 ARN。
返回到 Azure 门户并粘贴角色 ARN。
选择 “下一步:查看并创建”。
查看配置并选择“ 创建”。
部署所有组件
注释
如果选择在上一部分中启用所有组件,请按照本节中的所有步骤作。 如果选择特定组件,则仅完成与所选功能相关的步骤。
按照以下步骤根据配置启用保护:
授予控制平面权限
启用时必需:无代理威胁防护或 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 建议安装以下扩展:
转到“Microsoft Defender for Cloud”>“建议”。
查找建议: EKS 集群应安装 Microsoft Defender 的 Azure Arc 专用扩展程序。
按照建议提供的修正步骤操作:
部署 Defender 传感器
重要
使用 Helm 部署 Defender 传感器:与自动预配和更新的其他选项不同,Helm 允许灵活部署 Defender 传感器。 此方法在 DevOps 和基础结构即代码方案中特别有用。 使用 Helm,可以将部署集成到 CI/CD 管道中,并控制所有传感器更新。 还可以选择接收预览版和 GA 版本。 有关使用 Helm 安装 Defender 传感器的说明,请参阅 使用 Helm 安装 Defender for Containers 传感器。
启用时必需:为 Azure Arc 自动预配 Defender 传感器
将 EKS 群集连接到 Azure Arc 后,部署 Defender 传感器:
转到“Microsoft Defender for Cloud”>“建议”。
查找有关在已启用 Arc 的群集上安装 Defender 扩展的建议。
选择建议并按照补救步骤进行操作。
传感器为群集提供运行时威胁检测。
注释
还可以使用 Helm 部署 Defender 传感器,以便更好地控制部署配置。 有关 Helm 部署说明,请参阅 使用 Helm 部署 Defender 传感器。
配置 ECR 漏洞扫描
启用时必需:注册表访问
转到 AWS 连接器设置。
选择“容器计划”旁边的 “配置 ”。
验证 注册表访问 是否已启用。
推送到 ECR 的图像会在 24 小时内自动扫描。
启用审核日志记录
启用时必需:无代理威胁防护
为每个 EKS 群集启用审核日志记录:
# Enable audit logs
aws eks update-cluster-config \
--name <cluster-name> \
--logging '{"clusterLogging":[{"types":["audit","authenticator"],"enabled":true}]}'
查看建议和警报
若要查看 EKS 群集的警报和建议,
小窍门
可以按照此博客文章中的说明来模拟容器警报。
部署特定组件(可选)
如果最初选择仅启用某些组件,现在想要添加更多组件,或者需要修复现有部署的问题:
将组件添加到现有部署
转到 “环境设置” 并选择 AWS 连接器。
选择容器右侧的 Defender 计划>设置。
为要添加的组件启用额外的开关:
- 无代理威胁防护:用于运行时保护
- Kubernetes API 访问:用于群集发现
- 注册表访问:对于 ECR 漏洞扫描
- 自动预配 Defender 传感器:用于工作负荷保护
保存更改,并按照新启用组件的部署步骤进行操作。
注释
可以从自动预配中排除特定的 AWS 群集。 对于传感器部署,请在值为 ms_defender_container_exclude_agents 的资源上应用 true 标记。 对于无代理部署,请在值为 ms_defender_container_exclude_agentless 的资源上应用 true 标记。
将 Defender 传感器部署到特定群集
仅将传感器部署到选定的 EKS 群集:
将特定群集连接到 Azure Arc(并非所有群集)。
转到 “建议 ”,找到“已启用 Arc 的 Kubernetes 群集应已安装 Defender 扩展”。
仅选择您希望放置传感器的群集。
仅对所选群集执行纠正步骤。
为现有群集部署组件
如果群集缺少或失败的组件,请执行以下步骤:
检查组件状态
转到 “清单 ”并按 AWS 资源进行筛选。
检查每个 EKS 群集,了解以下情况:
- Arc 连接状态
- Defender 扩展状态
- 策略扩展状态
修复 Arc 连接问题
对于显示为断开连接的群集:
重新运行 Arc 连接脚本。
验证从群集到 Azure 的网络连接。
检查 Arc 代理日志:
kubectl logs -n azure-arc -l app.kubernetes.io/component=cluster-agent
修复传感器部署问题
对于缺少 Defender 传感器的群集:
验证 Arc 连接是否正常。
检查是否存在冲突的策略或准入控制器。
如果需要,请手动部署:使用建议中的补救措施。
为特定注册表配置 ECR 扫描
要仅扫描特定的 ECR 注册表,请执行以下操作:
在连接器配置中,启用 无代理容器漏洞评估。
使用 AWS IAM 策略限制扫描程序对特定注册表的访问。
标记需要包括或排除在扫描中的注册表。
有选择地部署 Azure Policy 扩展
仅将策略评估部署到特定群集:
建立 Arc 连接后,转到 策略>定义。
搜索“在已启用 Arc 的 Kubernetes 上配置 Azure Policy 扩展”。
创建限定于特定资源组或群集的分配。
验证部署:
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}]}'
验证部署
检查连接器运行状况
转到 “环境”设置。
选择 AWS 连接器。
验证:
- 状态: 已连接
- 上次同步:最近时间戳
- 发现的资源数量
查看发现的资源
转到 库存。
按 环境 = AWS 进行筛选。
请确保看到:
- 所有 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
部署问题
如果组件无法部署:
- 检查 Arc 连接:确保群集显示为“已连接”
- 验证 IAM 角色:确认该角色具有所有必需的权限
- 查看网络:检查出站 HTTPS 连接
- 检查配额:验证 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 扫描无法正常工作
验证 IAM 角色是否具有 ECR 权限。
检查扫描程序是否可以访问注册表。
确保映像位于受支持的区域中。
查看 Log Analytics 工作区中的扫描程序日志。
常见验证问题
- 缺少资源:等待 15-30 分钟进行发现。
- 部分覆盖范围:检查排除的资源配置。
- 无警报:验证是否启用了审核日志记录。
- 扫描失败:检查 ECR 权限和网络访问。
最佳做法
- 从非生产开始:首先在开发/测试群集上进行测试,以便进行选择性部署。
- 定期评审:每周检查仪表板。
- 警报响应:及时调查高严重性警报。
- 映像卫生:定期扫描和更新基本映像。
- 符合性:解决 CIS 基准故障。
- 访问控制:查看 IAM 角色和 RBAC 权限。
- 文档排除:跟踪特定群集在选择性部署中排除的原因。
- 以增量方式部署:使用选择性部署时,一次添加一个组件。
- 监视每个步骤:在继续下一步之前验证每个组件。
清理资源
若要禁用 Defender for Containers,请完成以下步骤:
转到 AWS 连接器。
选择以下任一项:
- 关闭容器 以禁用计划
- 删除整个连接器以删除所有配置
删除 AWS 资源:
- 删除 CloudFormation 堆栈
- 断开群集与 Arc 的连接
后续步骤
- 配置 EKS 的高级设置
- 验证部署详细信息
- 以编程方式部署
- 配置通过 Helm 部署的传感器