对依赖项扫描进行故障排除

了解如何排查 Azure DevOps 的 GitHub 高级安全性中的依赖项扫描问题。

未标识任何组件的依赖项扫描

如果在完成依赖项扫描任务时没有标记任何组件,也没有为存在已知漏洞的组件生成警报,请确保在 AdvancedSecurity-Dependency-Scanning@1 任务之前执行包还原步骤。

例如,下面是 C# (.NET Core) 项目的一个示例 YAML 代码片段:

- task: DotNetCoreCLI@2
  displayName: 'Restore NuGet packages'
  inputs:
    command: 'restore'
    projects: '**/*.csproj'

    # If you are using a private package feed such as Azure Artifacts, you will need additional variables.
    # For more information, see https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/dotnet-core-cli-v2?view=azure-pipelines 
    feedsToUse: 'select'
    ...

- task: AdvancedSecurity-Dependency-Scanning@1

下面是 JavaScript 项目的一个示例 YAML 代码片段:

- task: Npm@1
  displayName: 'npm install'
  inputs:
    command: 'install'
    workingDir: '$(System.DefaultWorkingDirectory)'

- task: AdvancedSecurity-Dependency-Scanning@1

依赖项扫描任务超时

依赖项扫描任务在超时前将运行的默认时间为 300 秒(5 分钟)。 如果任务在完成之前超时,你可以设置一个管道变量 DependencyScanning.Timeout,它需要一个表示秒的整数,例如 DependencyScanning.Timeout: 600。 在默认的 300 秒超时以下的任何设置都不会生效。

要使用此变量,需添加 DependencyScanning.Timeout 作为管道变量:

- task: AdvancedSecurity-Dependency-Scanning@1
  env:
    DependencyScanning.Timeout: 600

生成任务的破窗方案

如果依赖项扫描生成任务正在阻止管道的成功执行,而你需要紧急跳过生成任务,则可以设置管道变量 DependencyScanning.Skip: true

依赖项扫描任务权限

依赖项扫描生成任务使用管道标识来调用高级安全 REST API。 默认情况下,同一项目中的管道有权提取警报。 如果从生成服务帐户中删除这些权限,或者拥有自定义设置(例如,托管在与存储库不同的项目中的管道),则必须手动授予这些权限。

向管道中使用的生成服务帐户授予 Advanced Security: View Alerts 权限。对于项目范围的管道,该帐户为 [Project Name] Build Service ([Organization Name]);对于集合范围的管道,该帐户为 Project Collection Build Service ([Organization Name])