依存関係グラフについて
依存関係グラフは、リポジトリに格納されているマニフェストおよびロック ファイル、および 依存関係送信 API を使用してリポジトリに送信された依存関係の概要です。 それぞれのリポジトリについて、以下が表示されます:
- リポジトリが依存している依存関係、エコシステム、パッケージ
- 依存、依存するリポジトリ、パッケージ
依存関係ごとに、ライセンス情報と 脆弱性の重大度を確認できます。 検索バーを使用して、特定の依存関係を検索することもできます。 依存関係は、脆弱性の重大度によって自動的に並べ替えられます。
既定のブランチでサポートされているマニフェストまたはロック ファイルを変更または追加するコミットを GitHub に、プッシュすると、依存関係グラフは自動的に更新されます。 さらに、誰かが依存関係にある 1 つのリポジトリに変更をプッシュすると、グラフは更新されます。
サポートされているエコシステムとマニフェスト ファイルについては、「依存関係グラフでパッケージ エコシステムをサポート」を参照してください。
さらに、依存関係送信 API を使用して、マニフェストやロック ファイルの分析で依存関係グラフがサポートされていないエコシステムであっても、任意のパッケージ マネージャーやエコシステムから依存関係を送信することができます。 依存関係送信 API を使用してプロジェクトに送信された依存関係には、送信に使用された検出機能と、それらが送信された日時が表示されます。 依存関係送信 API の詳細については、「Dependency Submission API を使用する」を参照してください。
デフォルトブランチをターゲットとする、依存関係の変更を含むPull Requestを作成すると、GitHubは依存関係グラフを使ってそのPull Requestに依存関係のレビューを追加します。 それらは、依存関係が脆弱性を含んでいるか、もしそうならその脆弱性が修復されているバージョンを示しています。 詳しくは、「依存関係の確認について」を参照してください。
少なくともリポジトリへの読み取りアクセス権がある場合は、GitHub UI または GitHub REST API を使って、リポジトリの依存関係グラフを SPDX 互換のソフトウェア部品表 (SBOM) としてエクスポートできます。 詳しくは、「リポジトリのソフトウェア部品表のエクスポート」を参照してください。
依存関係グラフの利用
依存関係グラフは、すべてのパブリック リポジトリに対して自動的に生成されます。 フォークとプライベート リポジトリに対して、それを有効にすることを選べます。 詳しくは、「リポジトリのセキュリティと分析設定を管理する」を参照してください。
リポジトリ管理者は、プライベート リポジトリの依存関係グラフを有効または無効にすることができます。 詳しくは、「依存関係グラフを設定する」を参照してください。
含まれる依存関係
依存関係グラフには、サポートされているエコシステムのマニフェストファイルとロックファイル またはそれに相当するファイルに記載されている、リポジトリのすべての依存関係と、依存関係送信 API を使用して送信された すべての依存関係が含まれます。 これには、次のものが含まれます。
- マニフェストまたはロック ファイルで明示的に定義されている、または 依存関係送信 API を使って送信された直接依存関係
- 直接依存関係の間接依存関係。推移的な依存関係、または下位の依存関係とも言う。
依存関係グラフでは、間接依存関係が識別されます。ただし、ロック ファイルで定義されているか、依存関係送信 API を使用して送信されている場合にのみ識別されます。 最も信頼性の高いグラフを得るには、ロックファイル (または同等のもの) を使用してください。直接および間接の依存関係のうち現在どのバージョンを使用しているかが正確に定義されているからです。 ロックファイルを使用する場合、リポジトリのすべてのコントリビューターが同じバージョンを使用していることも確認してください。そのほうが、コードのテストとデバッグが容易になります。 エコシステムにロック ファイルがない場合は、多くのエコシステムの推移的な依存関係を解決する、事前に作成されたアクションを使用することができます。 詳しくは、「Dependency Submission API を使用する」を参照してください。
GitHub を使用して環境内の依存関係を理解する方法の詳細については、「サプライ チェーンのセキュリティについて」を参照してください。
含まれる依存物
パブリックリポジトリでは、そのリポジトリに依存しているパブリックリポジトリ、もしくはそのリポジトリが公開しているパッケージのみが報告されます。 この情報は、プライベートリポジトリについては報告されません。
依存関係グラフの使用
依存関係グラフを使用する目的は、次のとおりです。
- コードが依存しているリポジトリ、そしてそのコードに依存しているリポジトリを調べること。 詳しくは、「リポジトリの依存関係を調べる」を参照してください。
- リポジトリの脆弱な依存関係を表示・更新すること。 詳しくは、「Dependabot アラートについて」を参照してください。
- Pull Request中の脆弱性がある依存関係に関する情報を見ること。 詳しくは、「プルリクエスト内の依存関係の変更をレビューする」を参照してください。
参考資料
- Wikipedia の「依存関係グラフ」
- リポジトリの依存関係を調べる
- 「Dependabot アラートの表示と更新」
- 脆弱性のある依存関係の検出のトラブルシューティング