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

通过门户在 GCP(Google Kubernetes Engine, GKE)上启用 Defender for Containers

本文介绍如何通过 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 连接器

  1. 登录到 Azure 门户

  2. 转到 Microsoft Defender for Cloud

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

  4. 选择 “添加环境>Google Cloud Platform”。

    显示如何将 GCP 项目连接到 Microsoft Defender for Cloud 的屏幕截图。

    显示添加 GCP 环境的屏幕截图。

  5. 如果有多个连接器,请选择相关的 GCP 连接器:

    屏幕截图显示 GCP 连接器示例。

配置连接器详细信息

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

    • 连接器名称:GCP 项目的描述性名称
    • GCP 项目 ID:您的 GCP 项目标识符
    • 资源组:选择或创建资源组

    显示 GCP 帐户详细信息配置的屏幕截图。

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

启用 Defender for Containers 功能

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

    为 GCP 连接器启用 Defender for Containers 的屏幕截图。

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

    屏幕截图显示 Defender for Cloud 环境设置中“容器”计划的设置。

  3. 选择部署方法:

    • 启用所有组件 (建议):启用所有功能以实现全面保护
    • 启用特定组件:仅选择所需的组件

    可用组件:

    • Kubernetes 的无代理发现 - 发现所有 GKE 群集
    • 无代理容器漏洞评估 - 扫描注册表映像
    • Defender DaemonSet - 运行时威胁检测
    • 适用于 Kubernetes 的 Azure Policy - 安全建议
  4. 选择 “继续 ”和 “下一步:配置访问权限”。

设置 GCP 权限

  1. 从门户下载安装脚本。

  2. 打开已经配置了 gcloud 的 Google Cloud Shell 或本地终端。

  3. 运行安装脚本以创建所需的服务帐户和权限:

    # The portal provides a script similar to this
    bash defender-for-containers-setup.sh \
        --project-id <project-id> \
        --workload-identity-pool <pool-name>
    
  4. 该脚本生成以下内容:

    • 具有必要 IAM 角色的服务帐户
    • 工作负载标识联合
    • API 启用与配置
  5. 从脚本输出复制服务帐户电子邮件。

    显示复制按钮位置的屏幕截图。

  6. 返回到 Azure 门户并粘贴服务帐户电子邮件。

    显示 GCP 访问配置的屏幕截图。

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

部署所有组件

按照以下步骤为所有 GKE 群集启用全面保护。

将 GKE 群集连接到 Azure Arc

创建连接器后:

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

  2. 查找建议“GKE 群集应连接到 Azure Arc”。

  3. 选择建议以查看受影响的集群。

  4. 按照修复步骤连接每个集群:

    # 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 后:

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

  2. 搜索“已启用 Arc 的 Kubernetes 群集应已安装 Defender 扩展”。

    显示搜索建议的屏幕截图。

    显示为 Arc 连接的 GKE 群集启用传感器的屏幕截图。

  3. 选择 GKE 群集。

  4. 选择 “修复” 以部署传感器。

    显示“修复”按钮位置的屏幕截图。

注释

还可以使用 Helm 部署 Defender 传感器,以便进行更多控制。 有关详细信息,请参阅 使用 Helm 部署 Defender 传感器

配置容器注册表扫描

对于 Google 容器注册表 (GCR) 和 Artifact 注册表:

  1. 转到 GCP 连接器设置。

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

  3. 验证是否启用了 无代理容器漏洞评估

  4. 将映像推送到注册表时会自动扫描。

启用审核日志记录

为运行时保护启用 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 群集,请执行以下作:

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

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

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

  4. 按照所选群集的修正步骤进行操作。

仅启用漏洞扫描

若要仅启用注册表扫描而不使用运行时保护,请执行以下作:

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

  2. 禁用其他组件。

  3. 保存配置。

按群集类型配置

标准 GKE 群集

无需特殊配置。 按照默认部署步骤进行。

GKE Autopilot

对于 Autopilot 群集:

  1. Defender 传感器会自动调整资源请求。

  2. 资源限制不需要手动配置。

私有 GKE 群集

对于私有集群:

  1. 确保群集可以访问 Azure 终结点。

  2. 根据需要配置防火墙规则:

    gcloud compute firewall-rules create allow-azure-defender \
        --allow tcp:443 \
        --source-ranges <cluster-cidr> \
        --target-tags <node-tags>
    

配置排除项

若要从自动预配中排除特定 GKE 群集,请执行以下步骤:

  1. 转到 GCP 控制台中的 GKE 集群。

  2. 将标签添加到群集:

    • 对于 Defender 传感器: ms_defender_container_exclude_agents = true
    • 对于无代理部署: ms_defender_container_exclude_agentless = true

注释

对于连接 Arc 的群集,还可以使用 Azure 标记:

  • ms_defender_container_exclude_sensors = true
  • ms_defender_container_exclude_azurepolicy = true

最佳做法

  1. 从非生产开始:首先在开发/测试群集上进行测试,以便进行选择性部署。
  2. 启用所有组件:尽可能获得全面的保护。
  3. 使用工作负荷标识:使用工作负荷标识增强安全性。
  4. 常规监视:每周检查仪表板是否有发现。
  5. 映像签名:为生产实现二进制授权。
  6. 文档排除:跟踪特定群集在选择性部署中排除的原因。
  7. 以增量方式部署:使用选择性部署时,一次添加一个组件。
  8. 监视每个步骤:在继续下一步之前验证每个组件。

清理资源

若要禁用 Defender for Containers,请执行以下步骤:

  1. 转到 “环境”设置

  2. 选择 GCP 连接器。

  3. 选择以下选项之一:

    • 容器 设置为 Off 以禁用计划。
    • 删除整个连接器以删除所有配置。
  4. 清理 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>
    

后续步骤