Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте, как устранять неполадки проверки зависимостей в GitHub Advanced Security для Azure DevOps.
Предпосылки
| Категория | Требования |
|---|---|
| Разрешения | — Чтобы просмотреть сводку всех оповещений для репозитория, нужны разрешения участника для репозитория. — Чтобы отклонить оповещения в Advanced Security: администратор проекта разрешения. — Для управления разрешениями в Расширенной безопасности: быть членом группы Администраторов коллекции проектов или иметь разрешение Расширенная безопасность: управление параметрами установлено на Разрешить. |
Дополнительные сведения о разрешениях расширенной безопасности см. в разделе Управление разрешениями расширенной безопасности.
Настройка задачи проверки зависимостей вручную
Подсказка
Для получения наиболее точных результатов сканирования добавьте задачу проверки зависимостей после шага сборки или этапа восстановления пакета в конвейере, который создает код, который требуется проверить.
Добавьте задачу "Расширенная проверка зависимостей безопасности" (AdvancedSecurity-Dependency-Scanning@1) непосредственно в файл конвейера YAML или выберите задачу "Расширенная проверка зависимостей безопасности" в помощнике по задачам.
Проверка зависимостей без идентификации компонентов
Если задача проверки зависимостей завершается без перетаскивания компонентов и не удалось создать оповещения для компонентов с известными уязвимостями, убедитесь, что перед задачей выполняется шаг 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://dori-uw-1.kuma-moon.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
Настройка каталога сканирования
По умолчанию задача проверки зависимостей обрабатывает Agent.BuildDirectory каталог. Если вы хотите ограничить сканирование определенной папкой, можно задать переменную DependencyScanning.SourcePath конвейера для любого пути к файлу каталога в агенте сборки, который требуется проанализировать. Несколько выполнений задач проверки зависимостей в одном задании конвейера не поддерживаются. Если путь сканирования ограничен подкаталогом, невозможно повторно добавить задачу для сканирования другого каталога.
- task: AdvancedSecurity-Dependency-Scanning@1
env:
DependencyScanning.SourcePath: scan/code/path
Проверка зависимостей при публикации результатов в непредназначенное репозиторий.
Если у вас есть определение конвейера, размещенное в одном репозитории, и исходный код для сканирования с помощью GitHub Advanced Security был в другом, результаты могут обрабатываться и отправляться в неправильный репозиторий, публикуя в репозиторий, содержащий определение конвейера, а не репозиторий исходного кода.
Чтобы включить заданную маршрутизацию результатов, задайте переменную среды конвейера advancedsecurity.publish.repository.infer: true, чтобы определить репозиторий для публикации из рабочего каталога.
trigger:
- main
resources:
repositories:
# PipelineRepo: The repository containing the pipeline definition.
# This is optional and only needed if you plan to reference files or scripts from this repo.
- repository: PipelineRepo
type: git
name: DevOpsPipelineRepo
ref: refs/heads/main
trigger:
- main
# SourceRepo: The repository where scanning and publishing will occur.
- repository: SourceRepo
type: git
name: code-to-analyze-repo
ref: refs/heads/main
trigger:
- main
jobs:
- job: "DependencyScan"
displayName: "Dependency Scanning with Inferred Publishing"
variables:
# Enable repository inference
advancedsecurity.publish.repository.infer: true
steps:
# Checkout the SourceRepo
- checkout: SourceRepo
# Perform Dependency Scanning
- task: AdvancedSecurity-Dependency-Scanning@1
displayName: "Analyze Dependencies for Vulnerabilities"
Отсутствие аннотаций запроса на вытягивание для сканирования зависимостей при изменении места публикации результатов.
Если вы используете advancedsecurity.publish.repository.infer или определяете альтернативу advancedsecurity.publish.repository, может потребоваться задать DependencyScanning.SourcePath: $(System.DefaultWorkingDirectory) , чтобы пути к файлам были точно определены, чтобы заметка запроса на вытягивание отображалась должным образом.
- task: AdvancedSecurity-Dependency-Scanning@1
env:
DependencyScanning.SourcePath: $(System.DefaultWorkingDirectory)
Сценарий чрезвычайных мер для задачи сборки
Если задача проверки зависимостей блокирует успешное выполнение конвейера и необходимо срочно пропустить задачу сборки, можно задать переменную DependencyScanning.Skip: trueконвейера.
Разрешения на сканирование зависимостей
Задача проверки зависимостей использует удостоверение конвейера для вызова REST API расширенной безопасности. По умолчанию конвейеры в одном проекте имеют доступ к получению оповещений. Если эти разрешения удаляются из учетной записи службы сборки или если у вас есть пользовательская настройка, например конвейер, размещенный в проекте, отличном от репозитория, предоставьте эти разрешения вручную.
Предоставьте разрешение для учетной записи службы сборки, используемой в вашем конвейере: для конвейеров с областью проекта — Advanced Security: View Alerts, а для конвейеров с областью коллекции — [Project Name] Build Service ([Organization Name]).