Skip to main content

Анализ зависимостей

Проверка зависимостей позволяет выявлять небезопасные зависимости до их внедрения в вашу среду и предоставляет информацию о лицензиях, зависящих компонентах и возрасте зависимостей.

Кто может использовать эту функцию?

Проверка зависимостей доступна для следующих типов репозитория:

  • Репозитории, принадлежащие организации, с GitHub Code Security включено

Сведения о проверке зависимостей

Проверка зависимостей помогает разобраться в изменениях зависимостей и понять их влияние на безопасность в каждом запросе на вытягивание. Она обеспечивает легко понятную визуализацию изменений зависимостей с широкими возможностями на вкладке "Измененные файлы" запроса на вытягивание. Функция проверки зависимостей позволяет получить следующую информацию:

  • Какие зависимости были добавлены, удалены или обновлены вместе с датами выпуска
  • Сколько проектов использует эти компоненты
  • Данные уязвимости для этих зависимостей

Для запросов на вытягивание, содержащих изменения в манифестах пакета или файлах блокировки, можно отобразить проверку зависимостей, чтобы узнать, что изменилось. Проверка зависимостей содержит сведения об изменениях косвенных зависимостей в файлах блокировки и сообщает, имеются ли известные уязвимости в каких-либо добавленных или обновленных зависимостях.

Примечание.

«Действие проверки зависимостей» относится к конкретному действию, которое может сообщать о различиях в 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 для проверки зависимостей и оба работают Действие проверки зависимостей путём сравнения изменений зависимостей в 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). Таким образом, если заголовок не пуст, рекомендуется повторить попытку.
    • Реализуйте логику повторных попыток с экспоненциальными повторными попытками.
    • Реализуйте разумное количество повторных попыток, чтобы учитывать типичную среду выполнения кода отправки зависимостей.

Дополнительные материалы