对依赖项扫描进行故障排除
了解如何排查 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])
。