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

设置 GitHub 高级安全与 Microsoft Defender for Cloud 原生集成

本指南提供设置步骤和其他操作,以帮助您将GitHub高级安全性(GHAS)和Microsoft Defender for Cloud集成到一个用例中,以帮助您端到端验证集成。 此集成通过将运行时风险和上下文与原始代码相关联,从而最大程度地提高Microsoft的云原生应用程序安全性,以便更快地进行 AI 支持的修正。

遵循本指南,您可以:

  • 为 Defender for Cloud 覆盖范围设置 GitHub 存储库。
  • 创建运行时风险因素。
  • 在 Defender for Cloud 中测试实际用例。
  • 将代码链接到运行时资源。
  • 在GitHub启动安全活动。 此活动使用运行时上下文优先处理 GHAS 安全警报。
  • 从 Defender for Cloud 创建 GitHub 问题以开始修复。
  • 强化工程和安全团队之间的协作。

先决条件

方面 详细信息
环境要求 - 在 Defender for Cloud 中创建有连接器的 GitHub 帐户
- 连接存储库上的GitHub高级安全性(GHAS)许可证
- 在订阅上启用Defender云安全状况管理(DCSPM)计划
- 智能 Microsoft Security Copilot 副驾驶®(AI支持的自动修正功能可选)
角色和权限 - 安全管理员权限
- Azure 订阅的安全管理员(查看 Defender for Cloud 中的安全检查结果)
- GitHub组织所有者(用于连接存储库和配置安全活动)
云环境 - 仅在商业云中可用(不适用于由世纪互联运营的Azure 政府、Azure或其他主权云)

准备好你的环境

步骤 1:设置GitHub存储库并运行工作流

若要测试集成,请使用自己的存储库或 example 沙盒项目,该项目具有测试GitHub存储库,并包含所有生成易受攻击容器映像的内容。

  1. 登录到 Azure 门户

  2. 转到 Microsoft Defender for Cloud>DevOps security

  3. 在搜索栏中输入代码存储库名称(示例: zava-webshop)。

  4. 验证它是否确实属于你正在监视的组织(示例: zava-corporation 组织)。

  5. 查看存储库中是否有任何结果。

  6. 确保 高级安全状态处于启用,这表明您已在受监控的仓库上启用 GitHub 高级安全性 – >您已接入的仓库。

  7. 如果找不到存储库,请参阅 Microsoft Defender for Cloud 文档,了解故障排除和 GitHub 连接器设置

  8. 确保为 GitHub 连接器启用了无代理扫描。

    Defender CSPM中计划配置的截图,展示启用了无代理代码扫描,并且所有扫描程序选项均已启用。

步骤 2:验证环境是否已准备就绪

验证确认你的环境已正确配置,可以根据运行时建议显示代码并生成可操作的结果。 在此步骤中,Defender 验证:

从完整代码到运行时可见性

  • Microsoft Defender for Cloud持续监视源代码存储库是否存在安全漏洞。
  • 在部署之前,容器注册表会扫描构建工件,例如容器镜像。
  • 将监视部署到 Kubernetes 群集的运行时工作负荷,以防范安全风险。
  • Defender for Cloud将每个工件从代码关联和跟踪,到构建和部署,再到运行时,然后返回代码。

注释

应用上述步骤后,最长可能需要 24 小时才能查看以下结果。

测试GitHub无代理扫描检测存储库。

转到 Microsoft Defender for Cloud>Cloud 安全资源管理器并执行查询。 验证查询测试 Defender 是否可以识别你的管道和工作负荷产生的项目。 如果查询返回结果,则表示扫描和相关性按预期工作。

Defender for Cloud 的 Cloud Security Explorer 截图,显示了 GitHub 存储库推送到容器镜像的查询。

注释

如果未返回任何结果,则可能表示尚未生成项目、未配置扫描或缺少权限。 有关详细信息,请参阅 用户角色和权限

  1. 验证 Defender for Cloud(Azure 容器注册表)是否扫描了容器映像,并使用它来创建容器。

  2. 在查询中,添加适合特定部署的条件。

    用于Cloud云安全的Defender云安全资源管理器的截图,其中显示了有关GitHub仓库推送到具有漏洞的容器映像的查询。

  3. 验证容器是否正在运行,并且 Defender for Cloud 扫描了 AKS 群集。

    Defender for Cloud 的云安全资源管理器截图,其中显示了 GitHub 推送到包含漏洞的容器映像的查询。

  4. 验证是否在 Defender for Cloud 端正确配置了风险因素。 在 Defender for Cloud 清单页上搜索容器名称,应会看到它标记为关键。

注释

仅当环境中尚未配置风险因素时,才需要此步骤。 如果已使用风险因素,则可以在“设置资源关键性” > 下验证其配置。

成功的验证可确保后续步骤(如建议、市场活动以及GitHub问题生成)产生有意义的结果。

注释

将资源分类为关键资源后,Defender for Cloud 最多可能需要 12 小时才能将数据发送到GitHub。 了解详细信息

步骤 3:创建 GitHub 活动

若要创建扫描计划,必须在 GitHub 组织内部操作。 此功能在单个存储库层级不可用。

  1. 在GitHub中,转到用于设置测试的GitHub组织。

  2. 选择“安全>活动>从代码扫描筛选器创建活动>”。

  3. 此活动帮助优先处理属于确实已部署并正在运行的代码的 GHAS 发现。

  4. 为市场活动选择 运行时风险 筛选器。

    GitHub代码扫描活动创建的截图,包含一个筛选栏、筛选按钮,以及关于按工件元数据筛选的工具提示。

    截图展示在创建 GitHub 活动时,打开包含运行时风险筛选器和可选择风险因素菜单的高级筛选器对话框。

  5. 选择“保存>发布为市场活动”。 输入所需的信息,然后发布广告活动。

  6. 跟踪宣传活动进展。  GitHub 活动页面的截图,其中显示了逾期状态、活动进度条、关键警报清单和筛选选项。

步骤 4:建议实施

使用正在运行的容器 VA 建议代码到运行时功能以及已识别的 CVE 与 Dependabot 安全警报的关联,以了解安全问题的状态。 然后,可以根据代码到运行时映射将解决方案的建议分配给相关工程团队。

  1. 在 Defender for Cloud 门户中,转到 “建议 ”选项卡。

  2. 搜索从代码存储库创建的容器的名称。

  3. 打开其中一项 更新软件 建议;建议名称以 Update 开头

  4. 选择 关联的 CVEs 选项卡。“安全警报”会作为建议评估流程的一部分显示。 这些警报显示有关GitHub工程团队已知的高级安全发现的信息。 请注意,某些 CVE ID 在“相关 GitHub 警报”列中具有一个“查看 on GitHub”链接。

    Defender for Cloud“查找结果”选项卡的截图,其中显示了 CVE-2024-21409 警报、修复状态、CVSS 分数和 GitHub 警报详细信息弹窗。

选择链接以打开相关的 GHAS 安全警报。 (若要查看GitHub中的 GHAS 警报内容,必须具有对相关GitHub存储库的访问权限。如果没有访问权限,始终可以复制链接以供后续使用,或联系GitHub管理员。

如果有警报扩充,则会有一个与工程学已知的匹配 Dependabot 警报。 如果状态为 “活动”,则没有人修复它,并且问题需要优先进行修复。

如果没有找到扩充,则表示工程风险未知,需要确定修复的优先级。

下一步是什么? 如何知道哪个团队负责解决问题? 如何知道哪个上下文可以帮助工程团队进行修复?

创建GitHub问题

若要关闭安全团队与工程团队之间的循环,可以创建一个GitHub问题,该问题优先考虑工程团队应关注的安全问题。 此优先级排序可能包括 GHAS 未检测到但 Defender for Cloud 针对非直接依赖项的 CVE ID 检测到的合规结果。 这些发现可能包括基础映像、作系统或软件(如 NGINX)中的漏洞。

在源的代码存储库上自动生成GitHub问题,建议范围中找到所有 CVE ID,包括其他运行时和容器 SDLC 相关上下文,这些上下文有助于修复和测试。

从建议视图中,可以显式生成GitHub问题来跟踪修正工作。

  1. 转到 “修正见解 ”选项卡并查看代码到运行时关系图。 该图将正在运行的容器映射到代码存储库中的容器映像,以及GitHub中源的代码存储库。

    补救分析的屏幕截图,显示了代码到运行时图,该图中风险级别已标出,且“采取行动”菜单在“运行时”框中打开。

    1. 整改洞察选项卡,查看受影响的运行时框。

    2. 验证 GitHub issue 是否已经存在。 如果GitHub问题已存在,则会在框中显示GitHub图标。 将鼠标悬停在图标上以查看问题详细信息。

    3. 如果不存在问题并且拥有所需的权限,则可以生成新的GitHub问题。 选择“执行操作”。

    4. 从弹出窗口中选择 Generate GitHub 问题选项。

    5. 如果问题已成功创建,你将看到一个弹出窗口通知,其中包含指向该问题的链接。 此问题是在源的代码存储库中创建的。

      GitHub 问题列表的截图,显示了带有标签“Defender for Cloud”和“安全”的依赖项的打开问题

    注释

    如果 Generate GitHub 问题选项不可用,则可能缺少所需的GitHub或存储库权限。 请联系GitHub或存储库管理员请求访问权限。

    GitHub问题的截图,其中显示了关于依赖项的打开问题,并标记有像 Defender for Cloud 和安全这样的标签

    1. 跟踪所有权和状态更新 - 在 GitHub 中进行的问题状态或分配变更反映在 Microsoft Defender for Cloud 中,使您可以从 建议 视图中跟踪所有权和修复进度。

      截图显示 Microsoft Defender for Cloud 建议页面,其中包括 GitHub 中高风险问题的详细信息弹窗。

进行主动修复

在GitHub端,如果你有GitHub Copilot许可证,则可以在GitHub编码代理的帮助下解决此问题:

  1. 为该问题分配一个 GitHub 编码代理。
  2. 查看生成的修复。
  3. 如果修补程序看起来很合理,请应用它。
  4. 观察 Defender for Cloud 将问题状态更新为 “已关闭”。