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

По умолчанию проверка завершится ошибкой, если она обнаруживает уязвимые пакеты. Ошибка проверки блокирует объединение запроса на вытягивание, если владелец репозитория потребовал обязательную проверку зависимостей. Дополнительные сведения см. в разделе Сведения о защищенных ветвях.
Действие доступно для всех public repositories, а также частных репозиториев, имеющих GitHub Code Security or GitHub Advanced Security включено.
Владельцы организации могут развертывать проверку зависимостей в масштабе, применяя использование Действие проверки зависимостей в репозиториях в организации. Это включает использование наборов правил репозитория, для которых вы задали Действие проверки зависимостей в качестве обязательного рабочего процесса, что означает, что запросы на вытягивание можно объединить только после передачи всех необходимых проверок. Дополнительные сведения см. в разделе Применение проверки зависимостей в организации.
Действие использует REST API проверки зависимостей, чтобы получить диффы изменений зависимостей между базовой фиксацией и фиксацией головы. Api проверки зависимостей можно использовать для получения диффа изменений зависимостей, включая данные уязвимости между любыми двумя фиксациями в репозитории. Дополнительные сведения см. в разделе Конечные точки REST API для проверки зависимостей. Действие также учитывает зависимости, отправленные через API отправки зависимостей. Дополнительные сведения о API отправки зависимостейсм. в разделе Использование API отправки зависимостей.
Примечание.
API проверки зависимостей и API отправки зависимостей работают вместе. Это означает, что API проверки зависимостей будет включать зависимости, отправленные через API отправки зависимостей.
Вы можете настроить переменные данных Действие проверки зависимостей в соответствии с вашими потребностями. Например, можно указать уровень серьезности, при котором действие будет завершаться сбоем, или задать список разрешенных или запрещенных лицензий. Дополнительные сведения см. в разделе Настройка действия проверки зависимостей.
Рекомендации по использованию API проверки зависимостей и API отправки зависимостей вместе
API проверки зависимостей и Действие проверки зависимостей работают, сравнивая изменения зависимостей в запросе на вытягивание с состоянием зависимостей в головной фиксации целевой ветви.
Если репозиторий зависит только от статически определенных зависимостей в одной из поддерживаемых экосистем 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 проверки зависимостей
Если вы не используете GitHub Actions, а код использует прямой доступ к API отправки зависимостей и API проверки зависимостей:
- Сначала выполните код, который вызывает API отправки зависимостей, а затем запустите код, вызывающий API проверки зависимостей после этого.
- Если вы решили запустить код для API отправки зависимостей и API проверки зависимостей параллельно, необходимо реализовать логику повторных попыток и отметить следующее:
- Когда отсутствуют моментальные снимки для любой стороны сравнения, вы увидите объяснение этого в
x-github-dependency-graph-snapshot-warningsзаголовке (как строка в кодировке Base64). Таким образом, если заголовок не пуст, рекомендуется повторить попытку. - Реализуйте логику повторных попыток с экспоненциальными повторными попытками.
- Реализуйте разумное количество повторных попыток, чтобы учитывать типичную среду выполнения кода отправки зависимостей.
- Когда отсутствуют моментальные снимки для любой стороны сравнения, вы увидите объяснение этого в
Дополнительные материалы
-
[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/customizing-your-dependency-review-action-configuration)