Сведения о проверке зависимостей
Проверка зависимостей помогает разобраться в изменениях зависимостей и понять их влияние на безопасность в каждом запросе на вытягивание. Она обеспечивает легко понятную визуализацию изменений зависимостей с широкими возможностями на вкладке "Измененные файлы" запроса на вытягивание. Функция проверки зависимостей позволяет получить следующую информацию:
- Какие зависимости были добавлены, удалены или обновлены вместе с датами выпуска
- Сколько проектов использует эти компоненты
- Данные уязвимости для этих зависимостей
Для запросов на вытягивание, содержащих изменения в манифестах пакета или файлах блокировки, можно отобразить проверку зависимостей, чтобы узнать, что изменилось. Проверка зависимостей содержит сведения об изменениях косвенных зависимостей в файлах блокировки и сообщает, имеются ли известные уязвимости в каких-либо добавленных или обновленных зависимостях.
Примечание.
«Действие проверки зависимостей» относится к конкретному действию, которое может сообщать о различиях в pull-запросе в контексте GitHub Actions и добавлять механизмы применения в GitHub Actions рабочий процесс. Для получения дополнительной информации см. раздел Действие проверки зависимостей «Позже» в этой статье.
Иногда может потребоваться просто обновить версию одной зависимости в манифесте и создать запрос на вытягивание. Однако если обновленная версия этой прямой зависимости также имеет обновленные зависимости, запрос на вытягивание может иметь больше изменений, чем ожидалось. Проверка зависимостей для каждого файла манифеста и блокировки позволяет легко узнать, что изменилось, и содержат ли какие-либо из новых версий зависимостей известные уязвимости.
Просмотрев проверки зависимостей в запросе на вытягивание и изменив все зависимости, помеченные как уязвимые, можно избежать добавления уязвимостей в проект. Дополнительные сведения о том, как работает проверка зависимостей, см. в разделе Проверка изменений зависимостей в запросе на вытягивание.
Dependabot alerts Мы найдём уязвимости, которые уже есть в ваших зависимостях, но гораздо лучше избегать потенциальных проблем, чем решать их позже. Дополнительные сведения см. в Dependabot alertsразделе Dependabot alerts.
Проверка зависимостей поддерживает те же языки и экосистемы управления пакетами, что и граф зависимостей. Дополнительные сведения см. в разделе Поддерживаемые экосистемы пакетов графа зависимостей.
Для получения дополнительной информации о функциях цепочки поставок, доступных на GitHub, см. Безопасность цепочки поставок.
Включение проверки зависимостей
Функция проверки зависимостей становится доступной при включении графа зависимостей. Для получения дополнительной информации см. раздел «Включение графа.»
Сведения о Действие проверки зависимостей
"Действие проверки зависимостей" ссылается на конкретное действие, которое может сообщать о различиях в запросе на вытягивание в контексте GitHub Actions. См. раздел dependency-review-action. Вы можете использовать переменные данных Действие проверки зависимостей в репозитории для принудительного применения проверок зависимостей в запросах на вытягивание. Это действие проверяет наличие уязвимых версий зависимостей, представленных изменениями версии пакета в запросах на вытягивание, и предупреждает о связанных с ними уязвимостях системы безопасности. Это позволяет лучше отслеживать изменения в запросе на вытягивание и предотвращать добавление уязвимостей в репозиторий.

По умолчанию проверка Действие проверки зависимостей завершится ошибкой, если она обнаруживает уязвимые пакеты. Ошибка проверки блокирует объединение запроса на вытягивание, если владелец репозитория потребовал обязательную проверку зависимостей. Дополнительные сведения см. в разделе Сведения о защищенных ветвях.
Действие доступно для всех публичных репозиториев, а также для частных , которые GitHub Code Security or GitHub Advanced Security были включены.
Владельцы организации могут развертывать проверку зависимостей в масштабе, применяя использование Действие проверки зависимостей в репозиториях в организации. Это включает использование наборов правил репозитория, для которых вы задали Действие проверки зависимостей в качестве обязательного рабочего процесса, что означает, что запросы на вытягивание можно объединить только после передачи всех необходимых проверок. Дополнительные сведения см. в разделе Применение проверки зависимостей в организации.
Действие использует REST API проверки зависимостей, чтобы получить диффы изменений зависимостей между базовой фиксацией и фиксацией головы. Api проверки зависимостей можно использовать для получения диффа изменений зависимостей, включая данные уязвимости между любыми двумя фиксациями в репозитории. Дополнительные сведения см. в разделе Конечные точки REST API для проверки зависимостей. Действие также учитывает зависимости, заданные через API отправки зависимостей. Дополнительные сведения см. в API отправки зависимостейразделе Использование API отправки зависимостей.
Примечание.
API проверки зависимостей и API отправки зависимостей работают вместе. Это означает, что API проверки зависимостей будет включать зависимости, отправленные через API отправки зависимостей.
Вы можете настроить его Действие проверки зависимостей под свои нужды. Например, вы можете указать уровень тяжести, который приведёт к неудаче действия, или установить список разрешения или запрета для сканирования лицензий. Дополнительные сведения см. в разделе Настройка действия проверки зависимостей.
Лучшие практики использования API для проверки зависимостей и API отправки зависимостей совместного использования
API для проверки зависимостей и оба работают Действие проверки зависимостей путём сравнения изменений зависимостей в pull request-запросе с состоянием ваших зависимостей в главном коммите целевой ветки.
Если ваш репозиторий зависит только от статически определённых зависимостей в одной из GitHubподдерживаемых экосистем, то API для проверки зависимостей и работа Действие проверки зависимостей последовательно.
Однако, возможно, вы захотите, чтобы ваши зависимости были сканированы во время сборки и затем загружаны в API отправки зависимостей. В таком случае существуют лучшие практики, которым следует следовать, чтобы при запуске процессов для API проверки зависимостей и API отправки зависимостей, так как это может привести к упущенным данным.
Лучшие практики будут зависеть от того, используете GitHub Actions ли вы доступ к API отправки зависимостей API проверки зависимостей или прямой доступ к API.
Использование GitHub Actions для доступа к API отправки зависимостей и API проверки зависимостей
Если вы пользуетесь GitHub Actions доступом к API отправки зависимостей API проверки зависимостей:
- Убедитесь, что все действия по отправке зависимостей вы выполняете в том же GitHub Actions рабочем процессе, что и ваш Действие проверки зависимостей. Это даст вам контроль над порядком выполнения, и это гарантирует, что проверка зависимостей всегда будет работать.
- Если вы решите вести Действие проверки зависимостей их отдельно, вам следует:
- Установите
retry-on-snapshot-warningsнаtrue. - Установите
retry-on-snapshot-warnings-timeoutзначение слегка превышающее обычное время выполнения (в секундах) действия отправки зависимостей.
- Установите
Использование прямого доступа API к API отправки зависимостей API и API для проверки зависимостей
Если вы не используете GitHub Actions, и ваш код зависит от прямого доступа к API отправки зависимостей API проверки зависимостей:
- Убедитесь, что вы запускаете код, который вызывает первым, API отправки зависимостей а затем запускайте код, который вызывает API проверки зависимостей.
- Если вы решите запускать код для API отправки зависимостей API проверки зависимостей параллельно, стоит реализовать логику повторных попыток и обратить внимание на следующее:
- Когда отсутствуют моментальные снимки для любой стороны сравнения, вы увидите объяснение этого в
x-github-dependency-graph-snapshot-warningsзаголовке (как строка в кодировке Base64). Таким образом, если заголовок не пуст, рекомендуется повторить попытку. - Реализуйте логику повторных попыток с экспоненциальными повторными попытками.
- Реализуйте разумное количество повторных попыток, чтобы учитывать типичную среду выполнения кода отправки зависимостей.
- Когда отсутствуют моментальные снимки для любой стороны сравнения, вы увидите объяснение этого в