为 Azure DevOps 配置GitHub高级安全性

GitHub advanced Security for Azure DevOps向Azure Repos添加了GitHub Advanced Security 的安全功能套件,并包含以下功能:

  • 机密扫描推送保护:检查代码推送是否包含可公开机密(如凭据)的提交
  • 机密扫描存储库扫描:扫描你的存储库并查找意外提交的公开机密
  • 依赖项扫描 - 搜索开放源代码依赖项中的已知漏洞(直接和可传递)
  • 代码扫描 - 使用 CodeQL 静态分析引擎识别代码级应用程序漏洞,如 SQL 注入和身份验证绕过

可以灵活地为企业提供高级安全性保护,以便为存储库启用适当的保护级别。 GitHub高级安全性适用于Azure DevOps,包括GitHub机密保护和GitHub代码安全性。

机密保护包括以下功能:

  • 推送保护,防止机密泄露发生
  • 带有通知的机密扫描警报,以在问题发生前捕捉到潜在的泄露
  • 安全概述,提供组织风险和安全保护级别的见解

代码安全性包括以下功能:

  • 依赖项警报,用于查找开源依赖项中的漏洞
  • CodeQL 扫描,以直接在代码中检测漏洞
  • 第三方工具的安全发现
  • 安全概述,提供组织风险和安全保护级别的见解

GitHub Azure DevOps 的高级安全性仅适用于 Azure DevOps 服务,特别是适用于代码 Git 存储库。

Azure DevOps 的 GitHub 高级安全性支持 Azure Repos。 若要将 GitHub Advanced Security 与 GitHub 存储库配合使用,请参阅 GitHub Advanced Security

先决条件

类别 要求
权限 - 若要查看存储库的所有警报的摘要:存储库的 参与者 权限。
- 若要消除高级安全性中的警报:需有项目管理员权限。
- 若要管理高级安全性中的权限:需为项目集合管理员组成员或将高级安全性:管理设置权限设置为允许

有关高级安全权限的详细信息,请参阅 “管理高级安全”权限

自托管代理的额外先决条件

如果组织使用自承载代理,请将以下 URL 添加到 Allowlist,以便依赖项扫描任务可以提取漏洞咨询数据。 有关详细信息,请参阅 允许的 IP 地址和域 URL

域名网址 说明
https://governance.dev.azure.com 对于使用 dev.azure.com 域访问其 DevOps 实例环境的组织
https://dev.azure.com 对于使用 dev.azure.com 域访问其 DevOps 实例的组织
https://advsec.dev.azure.com 对于使用 dev.azure.com 域访问其 DevOps 实例的组织
https://{organization_name}.governance.visualstudio.com 对于使用 {organization_name}.visualstudio.com 域访问其 DevOps 实例的组织
https://{organization_name}.visualstudio.com  对于使用 {organization_name}.visualstudio.com 域访问其 DevOps 实例的组织
https://{organization_name}.advsec.visualstudio.com 对于使用 {organization_name}.visualstudio.com 域访问其 DevOps 实例的组织
  • 运行.NET运行时的兼容版本。 截至 2026 年 4 月,当前版本仍.NET 8.x。 如果代理上不存在兼容版本,依赖项扫描生成任务将下载 .NET

  • 确保将 CodeQL 捆绑包安装到代理上的代理工具缓存中。 可以将 enableAutomaticCodeQLInstall: true 变量与 YAML 管道的 AdvancedSecurity-Codeql-Init@1 管道任务一起使用,或选中 Enable automatic CodeQL detection and installation 经典管道的复选框。 或者,有关手动安装说明,请参阅 用于 Azure DevOps 的 GitHub 高级安全代码扫描

启用GitHub高级安全性

可以在组织、项目或存储库级别启用 Advanced Security。 要访问每个扫描工具和结果,需要先启用 Advanced Security。 启用 Advanced Security 后,将阻止任何包含机密的未来推送到已启用此策略的存储库,并且存储库机密扫描将在后台进行。

存储库级加入

  1. 请进入你的 Azure DevOps project 的 项目设置
  2. 选择 Repos>Repositories
  3. 选择要为其启用 Advanced Security 的存储库。
  4. 选择“启用”“开始计费以激活 Advanced Security”。 对于启用了 Advanced Security 的任何存储库,防火墙图标现在显示在存储库视图中。

启用 GitHub Advanced Security 的截图。

项目级启动

  1. 请进入你的 Azure DevOps project 的 项目设置
  2. 选择 Repos
  3. 选择“设置”选项卡。
  4. 选择全部启用,你会看到项目的活跃提交者数量的估计值显示出来。 此操作仅针对现有存储库启用产品。
  5. 选择“开始计费”,为项目中的每个现有存储库激活 Advanced Security。
  6. (可选)选择为新存储库自动启用高级安全性,以便将来任何新创建的存储库在创建时即启用高级安全性。 此设置与 “启用所有” 操作 独立存在,必须单独选择。

高级安全性项目启用的截图。

组织级别的入职培训

  1. 请转到你在 Azure DevOps 中的 组织设置
  2. 选择“存储库”
  3. 选择全部启用,会看到组织的活跃提交者数量的估计值显示出来。 此操作仅针对现有存储库启用产品。
  4. 选择“开始计费”,为组织的每个项目中的每个现有存储库激活 Advanced Security。
  5. (可选)选择 自动为新项目启用高级安全性,以便将来创建的任何新项目在创建时自动启用高级安全性。 此设置与 “启用所有” 操作 独立存在,必须单独选择。

高级安全性的组织级启用的屏幕截图。

可以在组织、项目或存储库级别启用机密保护或代码安全性。

存储库级加入

  1. 请进入你的 Azure DevOps project 的 项目设置
  2. 选择 Repos>Repositories
  3. 选择要为其启用 Advanced Security 的存储库。
  4. 切换 机密保护代码安全性
  5. 选择 “开始计费”。 现在,任何启用了产品的存储库的存储库视图中会显示一个盾牌图标。
  6. 若要选择启用 依赖项扫描默认设置,请选择“ 选项 ”并启用“依赖项扫描默认设置”复选框。

启用 GitHub Advanced Security 的截图。

项目级启动

  1. 请进入你的 Azure DevOps project 的 项目设置
  2. 选择 Repos
  3. 选择“设置”选项卡。
  4. 选择“全部启用”,然后就会显示您的项目中每个产品的活跃提交者数的估计。 此操作仅为现有存储库启用所选产品。
  5. 切换 机密保护代码安全性 的所需产品以及所有关联的子功能。
  6. 选择 “开始计费 ”以激活项目中每个现有存储库的机密保护和/或代码安全性。
  7. (可选)切换 “自动为新存储库启用高级安全性 ”,以便将来任何新创建的存储库在创建时启用 机密保护代码安全性 。 此设置与 “启用所有” 操作 独立存在,必须单独选择。

高级安全性项目启用的截图。

组织级别的入职培训

  1. 请转到你在 Azure DevOps 中的 组织设置
  2. 选择“存储库”
  3. 选择“ 启用所有 ”,然后查看组织中各个产品的活跃贡献者数量的估计值。 此操作仅为现有存储库启用所选产品。
  4. 切换 机密保护代码安全性 的所需产品以及所有关联的子功能。
  5. 选择“开始计费”,为组织的每个项目中的每个现有存储库激活 Advanced Security。
  6. (可选)切换 “自动为新项目启用高级安全性 ”,以便将来任何新创建的项目在创建时启用 机密保护代码安全性 。 此设置与 “启用所有” 操作 独立存在,必须单独选择。

高级安全性的组织级启用的屏幕截图。

设置机密扫描

当你打开 Advanced Security 时,将自动启用机密扫描推送保护和存储库扫描。 可以从存储库设置页启用或禁用机密推送保护。

启用推送保护的屏幕截图。

为所选存储库启用“高级安全性”(Advanced Security)后,将自动启动机密扫描。

启用机密保护时,会自动启用机密扫描推送保护和存储库扫描。 可以从存储库设置页启用或禁用机密推送保护。

启用推送保护的屏幕截图。

为所选存储库启用机密保护后,机密扫描会自动启动。

设置依赖项扫描

若要获取对依赖项扫描功能的访问权限,需要为存储库启用 Code Security 产品。

依赖扫描是一种管道为基础的扫描工具。 结果按存储库聚合。 若要扫描默认分支,可以使用存储库设置页中的“扫描易受攻击的依赖项”设置。 此功能将自动将依赖性扫描任务包含到任何针对默认分支的管道中,或任何针对默认分支的拉取请求构建中。

若要进行更高级的设置,或者如果要扫描所有分支,建议将依赖项扫描任务添加到要扫描的所有管道。 有关更多详细信息,请参阅 Azure DevOps 的 GitHub 高级安全功能中的依赖性扫描

设置代码扫描

若要访问代码扫描功能,需要为存储库启用 代码安全 产品。

代码扫描是一种基于管道的扫描工具,可在其中按存储库聚合结果。 可以通过将 CodeQL 任务直接添加到Azure Pipelines来配置代码扫描。

若要设置代码扫描,请按顺序将以下任务添加到管道:

  1. AdvancedSecurity-Codeql-Init@1 - 初始化 CodeQL
  2. 自定义构建步骤(适用于已编译语言)
  3. AdvancedSecurity-Codeql-Analyze@1 — 运行 CodeQL 分析

指定在初始化 CodeQL 任务中分析的语言。 支持的语言包括: csharp, cpp, go, java, javascript, python, ruby, swift

提示

建议将代码扫描任务添加到主生产管道的单独克隆管道或创建新管道。 有关配置选项的更多详细信息,请参阅 “设置代码扫描”。

设置拉取请求注释

对于依赖项扫描和代码扫描,注释会自动配置到包含依赖项扫描和/或代码扫描任务的生成验证策略的拉取请求中。 有关配置生成验证策略的详细信息,请参阅生成验证

在扫描源分支(拉取请求)之前,拉取请求注释还需要对默认分支和目标分支进行高级安全扫描。 有关解决拉取请求分支警报的详细信息,请参阅管理有关拉取请求的依赖项扫描警报管理拉取请求的代码扫描警报

若要禁用高级安全性,当您下次为存储库重新启用高级安全性时,所有警报及其状态将保留在“高级安全性”选项卡中。