Skip to main content

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

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

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

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

  • Общедоступные репозитории для GitHub.com
  • Репозитории, принадлежащие организации для GitHub Team с GitHub Code Security включено

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

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

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

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

Примечание.

"Действие проверки зависимостей" ссылается на конкретное действие, которое может сообщать о различиях в запросе на вытягивание в контексте 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)