Skip to main content

Dependency Submission API を使用する

依存関係送信 API を使うと、プロジェクトがビルドまたはコンパイルされるときに解決される依存関係など、プロジェクトの依存関係を送信できます。

依存関係送信 API について

REST API を使って、プロジェクトの依存関係を送信できます。 これにより、ソフトウェアのコンパイル時やビルド時に解決されるものなどの依存関係を GitHub の依存関係グラフ機能に追加し、プロジェクトのすべての依存関係をより完全に把握できます。

依存関係グラフには、リポジトリ内のマニフェストまたはロック ファイル (JavaScript プロジェクトの package-lock.json ファイルなど) から識別された依存関係に加えて、この API を使って送信したすべての依存関係が表示されます。 依存関係グラフの表示の詳細については、「リポジトリの依存関係を調べる」を参照してください。

送信された依存関係は、既知の脆弱性に対する Dependabot alerts と Dependabot security updates を受け取ります。 GitHub Advisory Database のサポートされているエコシステムのいずれかからの依存関係に対する Dependabot alerts のみを受け取ります。 サポートされているこれらのエコシステムについて詳しくは、「GitHub Advisory Database について」をご覧ください。 依存関係送信 API を介して送信された推移的な依存関係の場合、更新プログラムが利用可能な場合は、Dependabot が自動的に pull request を開き、親依存関係を更新します。

送信された依存関係は依存関係レビューに表示されますが、組織の依存関係の分析情報には_表示されません_。

注: 依存関係レビュー API と 依存関係送信 API は連携して動作します。 これは、依存関係レビュー API には、依存関係送信 API を介して送信された依存関係が含まれます。

依存関係は、スナップショットの形式で 依存関係送信 API に送信されます。 スナップショットは、コミット SHA や他のメタデータに関連付けられている依存関係のセットであり、コミットのリポジトリの現在の状態を反映しています。 スナップショットは、ビルド時に検出された依存関係から、またはソフトウェア部品表 (SBOM) から生成できます。 これらのユース ケースのいずれかをサポートする GitHub Actions があります。 依存関係送信 API の詳細については、「依存関係送信用の REST API エンドポイント」を参照してください。

ビルド時に依存関係を送信する

GitHub Actions ワークフローで 依存関係送信 API を使って、プロジェクトのビルド時にプロジェクトの依存関係を送信できます。

事前に作成されたアクションを使用する

依存関係送信 API を使う最も簡単な方法は、依存関係のリストを収集して必要なスナップショット形式に変換したものを API に送信するアクションを事前に作成し、それをリポジトリに追加することです。

これらのアクションについて詳しくは、「依存関係グラフでパッケージ エコシステムをサポート」を参照してください。

独自のアクションを作成する

代わりに、ビルド時にプロジェクトの依存関係を送信する独自のアクションを記述することもできます。 次のようなワークフローにする必要があります。

  1. プロジェクトの依存関係のリストを生成します。
  2. 依存関係のリストを、依存関係送信 API で受け入れられるスナップショット形式に変換します。 形式について詳しくは、「依存関係送信用の REST API エンドポイント」の "リポジトリ スナップショットの作成" API エンドポイントの本文パラメーターをご覧ください。
  3. 適切な形式にした依存関係のリストを 依存関係送信 API に送信します。

GitHub の Dependency Submission Toolkit は、依存関係送信 API に依存関係を送信するための独自の GitHub アクションを構築するのに役立つ TypeScript ライブラリです。 アクションの記述について詳しくは、「自動化の共有」をご覧ください。

ソフトウェア部品表 (SBOM) を生成して送信する

SBOM は、プロジェクトの依存関係と関連情報 (バージョン、パッケージ識別子、ライセンスなど) の、機械で読み取り可能な正式なインベントリです。 SBOM は、次の方法でサプライ チェーンのリスクを軽減するのに役立ちます。

  • リポジトリで使用される依存関係に関する透明性を提供する
  • プロセスの早い段階で脆弱性を特定できるようにする
  • コードベースに存在する可能性があるライセンス コンプライアンス、セキュリティ、または品質の issue に関する分析情報を提供する
  • さまざまなデータ保護基準をより適切に遵守できるようにする

ソフトウェア部品表 (SBOM) を生成する

SBOM を生成する場合、次を使用できます。

アクション詳細
Anchore SBOM アクションSyft を使って、サポートされているエコシステムで SPDX 2.2 互換の SBOM を作成します
Microsoft による sbom-tool依存関係をスキャンし、SPDX 互換の SBOM を作成します

ソフトウェア部品表 (SBOM) を 依存関係送信 API に送信する

既知の脆弱性を持つ依存関係の Dependabot alerts を受信するには、SBOM を 依存関係送信 API にアップロードして送信します。 SBOM を 依存関係送信 API に送信するには、次の表のいずれかのアクションを使用します。

Tip

SPDX 依存関係送信アクションアンカー SBOM アクションは、SBOM の生成と、その 依存関係送信 API への送信の両方に使用できます。

アクション詳細
SPDX 依存関係送信アクションMicrosoft の SBOM ツールを使って、サポートされているエコシステムで SPDX 2.2 互換の SBOM を作成します
Anchore SBOM アクションSyft を使って、サポートされているエコシステムで SPDX 2.2 互換の SBOM を作成します
SBOM 依存関係送信アクション依存関係送信 API に CycloneDX SBOM をアップロードします

たとえば、次の SPDX 依存関係送信アクション ワークフローは、リポジトリの依存関係を計算し、SPDX 2.2 形式でエクスポート可能な SBOM を生成して、依存関係送信 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/"