依存関係グラフについて
依存関係グラフは、リポジトリに格納されているマニフェストおよびロック ファイルの概要です。 それぞれのリポジトリについて、以下が表示されます:依存関係、すなわちリポジトリが依存するエコシステムとパッケージ。
GitHub AE に、デフォルト ブランチでサポートされているマニフェストもしくはロック ファイルを変更もしくは追加するコミットをプッシュすると、依存関係グラフは自動的に更新されます。サポートされているエコシステムとマニフェスト ファイルに関する情報については以下の「サポートされているパッケージエコシステム」を参照してください。
デフォルトブランチをターゲットとする、依存関係の変更を含むPull Requestを作成すると、GitHubは依存関係グラフを使ってそのPull Requestに依存関係のレビューを追加します。 それらは、依存関係が脆弱性を含んでいるか、もしそうならその脆弱性が修復されているバージョンを示しています。 詳しくは、「依存関係の確認について」を参照してください。
依存関係グラフの利用
Enterprise の所有者は、Dependabot alerts を構成できます。 詳細については、「エンタープライズ向けの Dependabot の有効化」を参照してください。
含まれる依存関係
依存関係グラフには、マニフェストとロック ファイルで詳しく説明されているリポジトリのすべての依存関係、またはサポートされているエコシステム を使用して送信されたすべての依存関係が含まれます。 これには次のものが含まれます
- マニフェストまたはロック ファイルに明示的に定義されている直接依存関係
- 直接依存関係の間接依存関係。推移的な依存関係、または下位の依存関係とも言う。
依存関係グラフでは、ロックファイルから間接的な依存関係を識別します。
GitHub AE を使用して環境内の依存関係を理解する方法の詳細については、「サプライ チェーンのセキュリティについて」を参照してください。
依存関係グラフの使用
依存関係グラフを使用する目的は、次のとおりです。
- コードが依存しているリポジトリを調べること。 詳しくは、「リポジトリの依存関係を調べる」を参照してください。
- リポジトリの脆弱な依存関係を表示・更新すること。 詳しくは、「Dependabot アラートについて」を参照してください。
サポートされているパッケージエコシステム
推奨されるフォーマットでは、直接および間接の依存関係すべてに使用されるバージョンを明示的に定義しています。 これらの形式を使う場合、依存関係グラフはより正確になります。 これは、現在のビルドのセットアップも反映し、依存関係グラフが直接および間接の依存関係の両方で脆弱性を報告できるようにしてくれます。
| パッケージ マネージャー | 言語 | 推奨される形式 | サポートされているすべての形式 |
| --- | --- | --- | ---| | Cargo | Rust | Cargo.lock
| Cargo.toml
、Cargo.lock
| | Composer | PHP | composer.lock
| composer.json
、composer.lock
| | NuGet | .NET 言語 (C#、F#、VB)、C++ | .csproj
、.vbproj
、.nuspec
、.vcxproj
、.fsproj
| .csproj
、.vbproj
、.nuspec
、.vcxproj
、.fsproj
、packages.config
| | GitHub Actions ワークフロー | YAML | .yml
、.yaml
| .yml
、.yaml
| | Go モジュール | Go | go.mod
| go.mod
、go.sum
| | Maven | Java、Scala | pom.xml
| pom.xml
| | npm | JavaScript | package-lock.json
| package-lock.json
、package.json
| | pip | Python | requirements.txt
、pipfile.lock
| requirements.txt
、pipfile
、pipfile.lock
、setup.py
| | Python Poetry | Python | poetry.lock
| poetry.lock
、pyproject.toml
| | RubyGems | Ruby | Gemfile.lock
| Gemfile.lock
、Gemfile
、*.gemspec
| | Yarn | JavaScript | yarn.lock
| package.json
、yarn.lock
|
注:
-
setup.py
ファイル内に Python の依存関係を列挙した場合、ユーザーはプロジェクト内のすべての依存関係を解析し、列挙することができない場合があります。 -
マニフェストとして認識するには、GitHub Actions ワークフローをリポジトリの
.github/workflows/
ディレクトリに配置する必要があります。 構文jobs[*].steps[*].uses
またはjobs.<job_id>.uses
を使用して参照されるアクションまたはワークフローは、依存関係として解析されます。 詳しくは、「GitHub Actions のワークフロー構文」を参照してください。 -
GitHub Actions ワークフローの依存関係は、情報提供のために依存関係グラフに表示されます。 Dependabot アラートは、現在、GitHub Actions ワークフローではサポートされていません。
参考資料
- Wikipedia の「依存関係グラフ」
- 「リポジトリの依存関係を調べる」
- 「Dependabot アラートの表示と更新」
- 「脆弱性のある依存関係の検出のトラブルシューティング」