你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍如何通过 Azure 门户在 Google Kubernetes 引擎 (GKE) 群集上启用 Microsoft Defender for Containers。 可以选择一次性启用所有安全功能以实现全面的保护,或根据要求有选择地部署特定组件。
何时使用本指南
如果您想使用本指南,请:
- 首次在 GCP 上设置 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 网络要求。
针对 GCP 的特定要求:
- 具有合适权限的 GCP 项目
- GKE 群集(版本 1.19+)
- Google 容器注册表或制品库中的容器镜像
- 具有所需 IAM 角色的服务帐户
- 配置的 Cloud Shell 或 gcloud CLI
创建 GCP 连接器
登录到 Azure 门户。
转到 Microsoft Defender for Cloud。
从左侧菜单中选择 “环境设置 ”。
选择 “添加环境>Google Cloud Platform”。
如果有多个连接器,请选择相关的 GCP 连接器:
配置连接器详细信息
启用 Defender for Containers 功能
在“选择计划”中,将“容器”切换为“开启”。
选择“ 配置 ”以访问计划设置。
选择部署方法:
- 启用所有组件 (建议):启用所有功能以实现全面保护
- 启用特定组件:仅选择所需的组件
可用组件:
- Kubernetes 的无代理发现 - 发现所有 GKE 群集
- 无代理容器漏洞评估 - 扫描注册表映像
- Defender DaemonSet - 运行时威胁检测
- 适用于 Kubernetes 的 Azure Policy - 安全建议
选择 “继续 ”和 “下一步:配置访问权限”。
设置 GCP 权限
从门户下载安装脚本。
打开已经配置了 gcloud 的 Google Cloud Shell 或本地终端。
运行安装脚本以创建所需的服务帐户和权限:
# The portal provides a script similar to this bash defender-for-containers-setup.sh \ --project-id <project-id> \ --workload-identity-pool <pool-name>该脚本生成以下内容:
- 具有必要 IAM 角色的服务帐户
- 工作负载标识联合
- API 启用与配置
从脚本输出复制服务帐户电子邮件。
返回到 Azure 门户并粘贴服务帐户电子邮件。
选择 “下一步:查看并创建”。
部署所有组件
按照以下步骤为所有 GKE 群集启用全面保护。
将 GKE 群集连接到 Azure Arc
创建连接器后:
转到“Microsoft Defender for Cloud”>“建议”。
查找建议“GKE 群集应连接到 Azure Arc”。
选择建议以查看受影响的集群。
按照修复步骤连接每个集群:
# Connect GKE cluster to Arc az connectedk8s connect \ --name <cluster-name> \ --resource-group <resource-group> \ --location <location>
部署 Defender 传感器
重要
使用 Helm 部署 Defender 传感器:与自动预配和更新的其他选项不同,Helm 允许灵活部署 Defender 传感器。 此方法在 DevOps 和基础结构即代码方案中特别有用。 使用 Helm,可以将部署集成到 CI/CD 管道中,并控制所有传感器更新。 还可以选择接收预览版和 GA 版本。 有关使用 Helm 安装 Defender 传感器的说明,请参阅 使用 Helm 安装 Defender for Containers 传感器。
将 GKE 群集连接到 Azure Arc 后:
转到“Microsoft Defender for Cloud”>“建议”。
搜索“已启用 Arc 的 Kubernetes 群集应已安装 Defender 扩展”。
选择 GKE 群集。
选择 “修复” 以部署传感器。
注释
还可以使用 Helm 部署 Defender 传感器,以便进行更多控制。 有关详细信息,请参阅 使用 Helm 部署 Defender 传感器。
配置容器注册表扫描
对于 Google 容器注册表 (GCR) 和 Artifact 注册表:
转到 GCP 连接器设置。
选择“容器计划”旁边的“配置”。
验证是否启用了 无代理容器漏洞评估 。
将映像推送到注册表时会自动扫描。
启用审核日志记录
为运行时保护启用 GKE 审核日志记录:
# Enable audit logs for existing cluster
gcloud container clusters update <cluster-name> \
--zone <zone> \
--enable-cloud-logging \
--logging=SYSTEM,WORKLOAD,API_SERVER
部署特定组件(可选)
如果需要选择性部署或修复现有部署的问题:
将 Defender 传感器部署到特定群集
若要仅将传感器部署到选定的 GKE 群集,请执行以下作:
仅将特定群集连接到 Azure Arc(并非所有群集)。
转到 “建议 ”,找到“已启用 Arc 的 Kubernetes 群集应已安装 Defender 扩展”。
仅选择您希望放置传感器的群集。
按照所选群集的修正步骤进行操作。
仅启用漏洞扫描
若要仅启用注册表扫描而不使用运行时保护,请执行以下作:
在连接器配置中,仅启用 无代理容器漏洞评估。
禁用其他组件。
保存配置。
按群集类型配置
标准 GKE 群集
无需特殊配置。 按照默认部署步骤进行。
GKE Autopilot
对于 Autopilot 群集:
Defender 传感器会自动调整资源请求。
资源限制不需要手动配置。
私有 GKE 群集
对于私有集群:
确保群集可以访问 Azure 终结点。
根据需要配置防火墙规则:
gcloud compute firewall-rules create allow-azure-defender \ --allow tcp:443 \ --source-ranges <cluster-cidr> \ --target-tags <node-tags>
配置排除项
若要从自动预配中排除特定 GKE 群集,请执行以下步骤:
转到 GCP 控制台中的 GKE 集群。
将标签添加到群集:
- 对于 Defender 传感器:
ms_defender_container_exclude_agents=true - 对于无代理部署:
ms_defender_container_exclude_agentless=true
- 对于 Defender 传感器:
注释
对于连接 Arc 的群集,还可以使用 Azure 标记:
ms_defender_container_exclude_sensors=truems_defender_container_exclude_azurepolicy=true
最佳做法
- 从非生产开始:首先在开发/测试群集上进行测试,以便进行选择性部署。
- 启用所有组件:尽可能获得全面的保护。
- 使用工作负荷标识:使用工作负荷标识增强安全性。
- 常规监视:每周检查仪表板是否有发现。
- 映像签名:为生产实现二进制授权。
- 文档排除:跟踪特定群集在选择性部署中排除的原因。
- 以增量方式部署:使用选择性部署时,一次添加一个组件。
- 监视每个步骤:在继续下一步之前验证每个组件。
清理资源
若要禁用 Defender for Containers,请执行以下步骤:
转到 “环境”设置。
选择 GCP 连接器。
选择以下选项之一:
- 将 容器 设置为 Off 以禁用计划。
- 删除整个连接器以删除所有配置。
清理 GCP 资源:
# Delete service account gcloud iam service-accounts delete <service-account-email> # Disconnect clusters from Arc az connectedk8s delete --name <cluster-name> --resource-group <rg>