Skip to main content

Использование API отправки зависимостей

Можно использовать API отправки зависимостей для отправки зависимостей для проектов, например зависимостей, разрешенных при создании или компиляции проекта.

О 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.

Дополнительные сведения об этих действиях см. в разделе Поддерживаемые экосистемы пакетов графа зависимостей.

Создание собственного действия

Кроме того, можно написать собственное действие для отправки зависимостей для проекта во время сборки. Рабочий процесс должен делать следующее:

  1. Создать список зависимостей для проекта.
  2. Преобразуйте список зависимостей в формат моментального снимка, принятый API отправки зависимостей. Дополнительные сведения о формате см. в параметрах текста конечной точки API "Создание моментального снимка репозитория" в Конечные точки REST API для отправки зависимостей.
  3. Отправьте форматированный список зависимостей в API отправки зависимостей.

GitHub поддерживает набор средств отправки зависимостей, библиотеку TypeScript, помогающую создавать собственные действия GitHub для отправки зависимостей в API отправки зависимостей. Дополнительные сведения о написании действия см. в разделе Совместное использование автоматизации.

Создание и отправка счета за программное обеспечение материалов (SBOM)

SBOM — это официальная, читаемая компьютером инвентаризация зависимостей и связанных сведений проекта (например, , идентификаторы пакетов, лицензии и сведения об авторских правах). SBOMs помогает снизить риски цепочки поставок на:

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

Создание счета за программное обеспечение материалов (SBOM)

Чтобы создать 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@v4
      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/"