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

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

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

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

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

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

> \[!NOTE]
> «Действие проверки зависимостей» относится к конкретному действию, которое может сообщать о различиях в pull-запросе в контексте GitHub Actions и добавлять механизмы применения в GitHub Actions рабочий процесс. Для получения дополнительной информации см. [раздел Действие проверки зависимостей](#about-the-dependency-review-action) «Позже» в этой статье.

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

Просмотрев проверки зависимостей в запросе на вытягивание и изменив все зависимости, помеченные как уязвимые, можно избежать добавления уязвимостей в проект. Дополнительные сведения о том, как работает проверка зависимостей, см. в разделе [Проверка изменений зависимостей в запросе на вытягивание](/ru/enterprise-server@3.20/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request).

Dependabot alerts Мы найдём уязвимости, которые уже есть в ваших зависимостях, но гораздо лучше избегать потенциальных проблем, чем решать их позже. Дополнительные сведения см. в Dependabot alertsразделе [Dependabot alerts](/ru/enterprise-server@3.20/code-security/dependabot/dependabot-alerts/about-dependabot-alerts#dependabot-alerts-for-vulnerable-dependencies).

Проверка зависимостей поддерживает те же языки и экосистемы управления пакетами, что и граф зависимостей. Дополнительные сведения см. в разделе [Поддерживаемые экосистемы пакетов графа зависимостей](/ru/enterprise-server@3.20/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems).

Для получения дополнительной информации о функциях цепочки поставок, доступных на GitHub, см. [Безопасность цепочки поставок](/ru/enterprise-server@3.20/code-security/supply-chain-security/understanding-your-software-supply-chain/about-supply-chain-security).

## Включение проверки зависимостей

Функция проверки зависимостей становится доступной при включении графа зависимостей. Для получения дополнительной информации см. [зависимостей» Включение графа зависимостей для вашего предприятия](/ru/enterprise-server@3.20/admin/code-security/managing-supply-chain-security-for-your-enterprise/enabling-the-dependency-graph-for-your-enterprise).»

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

"Действие проверки зависимостей" ссылается на конкретное действие, которое может сообщать о различиях в запросе на вытягивание в контексте GitHub Actions. См. раздел [`dependency-review-action`](https://github.com/actions/dependency-review-action). Вы можете использовать переменные данных Действие проверки зависимостей в репозитории для принудительного применения проверок зависимостей в запросах на вытягивание. Это действие проверяет наличие уязвимых версий зависимостей, представленных изменениями версии пакета в запросах на вытягивание, и предупреждает о связанных с ними уязвимостях системы безопасности. Это позволяет лучше отслеживать изменения в запросе на вытягивание и предотвращать добавление уязвимостей в репозиторий.

![Снимок экрана: запуск рабочего процесса, использующий действие проверки зависимостей.](/assets/images/help/graphs/dependency-review-action.png)

По умолчанию проверка Действие проверки зависимостей завершится ошибкой, если она обнаруживает уязвимые пакеты. Ошибка проверки блокирует объединение запроса на вытягивание, если владелец репозитория потребовал обязательную проверку зависимостей. Дополнительные сведения см. в разделе [Сведения о защищенных ветвях](/ru/enterprise-server@3.20/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging).

Действие доступно для всех , которые GitHub Code Security or GitHub Advanced Security были включены.

Владельцы организации могут развертывать проверку зависимостей в масштабе, применяя использование Действие проверки зависимостей в репозиториях в организации. Это включает использование наборов правил репозитория, для которых вы задали Действие проверки зависимостей в качестве обязательного рабочего процесса, что означает, что запросы на вытягивание можно объединить только после передачи всех необходимых проверок. Дополнительные сведения см. в разделе [Применение проверки зависимостей в организации](/ru/enterprise-server@3.20/code-security/supply-chain-security/understanding-your-software-supply-chain/enforcing-dependency-review-across-an-organization).

Владельцы предприятия и пользователи с доступом администратора к репозиторию могут добавить Действие проверки зависимостей в свой корпоративный и репозиторий соответственно.

Действие использует REST API проверки зависимостей, чтобы получить диффы изменений зависимостей между базовой фиксацией и фиксацией головы. Api проверки зависимостей можно использовать для получения диффа изменений зависимостей, включая данные уязвимости между любыми двумя фиксациями в репозитории. Дополнительные сведения см. в разделе [Конечные точки REST API для проверки зависимостей](/ru/enterprise-server@3.20/rest/dependency-graph/dependency-review). Действие также учитывает зависимости, заданные через API отправки зависимостей. Дополнительные сведения см. в API отправки зависимостейразделе [Использование API отправки зависимостей](/ru/enterprise-server@3.20/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api).

Вы можете настроить его Действие проверки зависимостей под свои нужды. Например, вы можете указать уровень тяжести, который приведёт к неудаче лицензий. Дополнительные сведения см. в разделе [Настройка действия проверки зависимостей](/ru/enterprise-server@3.20/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-the-dependency-review-action).

## Лучшие практики использования 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). Таким образом, если заголовок не пуст, рекомендуется повторить попытку.
  * Реализуйте логику повторных попыток с экспоненциальными повторными попытками.
  * Реализуйте разумное количество повторных попыток, чтобы учитывать типичную среду выполнения кода отправки зависимостей.

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

* [Настройка конфигурации действия проверки зависимостей](/ru/enterprise-server@3.20/code-security/supply-chain-security/understanding-your-software-supply-chain/customizing-your-dependency-review-action-configuration)