О API отправки зависимостей
Rest API можно использовать для отправки зависимостей для проекта. Так вы сможете добавлять зависимости, например разрешаемые при компиляции или сборке программного обеспечения, в функцию графа зависимостей GitHub, чтобы создать более полную картину всех зависимостей проекта.
На графе зависимостей отображаются все зависимости, которые вы отправили через этот API, а также те, которые определены в файлах манифеста или блокировки, размещенных в репозитории (например, файл package-lock.json
в проекте JavaScript). Дополнительные сведения о просмотре граф зависимостей см. в разделе Изучение зависимостей репозитория.
Отправленные зависимости будут получать Dependabot alerts и Dependabot security updates по всем известным уязвимостям. Вы получите только Dependabot alerts для зависимостей, которые находятся из одной из поддерживаемых экосистем для GitHub Advisory Database. Дополнительные сведения об этих экосистемах см. в разделе Сведения о базе данных GitHub Advisory. Для транзитивных зависимостей, отправленных через API отправки зависимостей, Dependabot автоматически открывает запросы на вытягивание для обновления родительской зависимости, если обновление доступно.
Отправленные зависимости будут отображаться в проверке зависимостей, но недоступны в аналитике зависимостей вашей организации.
Note
API проверки зависимостей и API отправки зависимостей работают вместе. Это означает, что API проверки зависимостей будет включать зависимости, отправленные через API отправки зависимостей.
Зависимости отправляются в API отправки зависимостей в виде моментального снимка. Моментальный снимок — это набор зависимостей, связанных с SHA фиксации и другими метаданными, которые отражают текущее состояние репозитория для фиксации. Моментальные снимки можно создать из зависимостей, обнаруженных во время сборки или из счета за программное обеспечение материалов (SBOM). Существует GitHub Actions для поддержки любого из этих вариантов использования. Дополнительные сведения о API отправки зависимостейсм. в разделе Конечные точки REST API для отправки зависимостей.
Отправка зависимостей во время сборки
Вы можете использовать API отправки зависимостей в рабочем процессе GitHub Actions для отправки зависимостей для проекта при создании проекта.
Использование готовых действий
Самый простой способ использования API отправки зависимостей заключается в добавлении предварительно созданного действия в репозиторий, которое собирает и преобразует список зависимостей в требуемый формат моментального снимка и отправляет список в API.
Дополнительные сведения об этих действиях см. в разделе Поддерживаемые экосистемы пакетов графа зависимостей.
Создание собственного действия
Кроме того, можно написать собственное действие для отправки зависимостей для проекта во время сборки. Рабочий процесс должен делать следующее:
- Создать список зависимостей для проекта.
- Преобразуйте список зависимостей в формат моментального снимка, принятый API отправки зависимостей. Дополнительные сведения о формате см. в параметрах текста конечной точки API "Создание моментального снимка репозитория" в Конечные точки REST API для отправки зависимостей.
- Отправьте форматированный список зависимостей в API отправки зависимостей.
GitHub поддерживает набор средств отправки зависимостей, библиотеку TypeScript, помогающую создавать собственные действия GitHub для отправки зависимостей в API отправки зависимостей. Дополнительные сведения о написании действия см. в разделе Совместное использование автоматизации.
Создание и отправка счета за программное обеспечение материалов (SBOM)
SBOM — это официальная, читаемая компьютером инвентаризация зависимостей и связанных сведений проекта (например, версии и идентификаторы пакетов). SBOMs помогает снизить риски цепочки поставок на:
- Предоставление прозрачности зависимостей, используемых репозиторием
- Разрешение выявления уязвимостей в начале процесса
- Предоставление аналитических сведений о соответствии лицензий, безопасности или проблемах с качеством, которые могут существовать в базе кода
- Повышение соответствия различным стандартам защиты данных
Создание счета за программное обеспечение материалов (SBOM)
Чтобы создать SBOM, можно использовать следующее:
- Пользовательский интерфейс GitHub. Дополнительные сведения о том, как экспортировать SBOM для репозитория с помощью сведений из граф зависимостей, см. в разделе Экспорт программного счета за материалы для репозитория.
- REST API Дополнительные сведения см. в разделе Конечные точки REST API для выставления счетов за программное обеспечение (SBOM).
- GitHub Actions. Следующие действия создают SBOM для репозитория и присоединяют его как артефакт рабочего процесса, который можно скачать и использовать в других приложениях. Дополнительные сведения о скачивании артефактов рабочего процесса см. в разделе Скачивание артефактов рабочего процесса.
Действие | Сведения |
---|---|
Действие Привязки SBOM | Использует Syft для создания совместимых SBOM spDX 2.2 с поддерживаемыми экосистемами |
sbom-tool by Microsoft | Сканирует зависимости и создает совместимый SBOM с SPDX |
Отправка счета за программное обеспечение материалов (SBOM) в API отправки зависимостей
Чтобы получить Dependabot alerts для зависимостей, имеющих известные уязвимости, можно отправить и отправить SBOM в API отправки зависимостей. Чтобы отправить SBOM в API отправки зависимостей, можно использовать одно из действий в следующей таблице.
Tip
Действие отправки зависимостей SPDX и действие привязки SBOM можно использовать для создания SBOM и отправки его в API отправки зависимостей.
Действие | Сведения |
---|---|
Действие отправки зависимостей SPDX | Использует средство SBOM Корпорации Майкрософт для создания совместимых SBOM-серверов SPDX 2.2 с поддерживаемыми экосистемами |
Действие Привязки SBOM | Использует Syft для создания совместимых SBOM spDX 2.2 с поддерживаемыми экосистемами |
Действие отправки зависимостей SBOM | Отправляет SBOM циклонаDX в API отправки зависимостей |
Например, следующий рабочий процесс действия отправки зависимостей SPDX вычисляет зависимости для репозитория, создает экспортируемый SBOM в формате SPDX 2.2 и отправляет его в API отправки зависимостей.
name: SBOM upload
on:
workflow_dispatch:
push:
branches: ["main"]
jobs:
SBOM-upload:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v4
- name: Generate SBOM
# generation command documentation: https://github.com/microsoft/sbom-tool#sbom-generation
run: |
curl -Lo $RUNNER_TEMP/sbom-tool https://github.com/microsoft/sbom-tool/releases/latest/download/sbom-tool-linux-x64
chmod +x $RUNNER_TEMP/sbom-tool
$RUNNER_TEMP/sbom-tool generate -b . -bc . -pn $ -pv 1.0.0 -ps OwnerName -nsb https://sbom.mycompany.com -V Verbose
- uses: actions/upload-artifact@v3
with:
name: sbom
path: _manifest/spdx_2.2
- name: SBOM upload
uses: advanced-security/spdx-dependency-submission-action@5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e
with:
filePath: "_manifest/spdx_2.2/"