Dependabot について
Dependabot は、依存関係エコシステムを常に把握するのに役立ちます。 Dependabot を使用すると、依存している依存関係を最新の状態に保ち、サプライ チェーン内の潜在的なセキュリティの問題に対処できます。
Dependabot は、依存関係の管理に役立つ 3 つの異なる機能で構成されています。
- Dependabot alerts — リポジトリで使っている依存関係に内在する脆弱性について通知します。
- Dependabot security updates — 使っている依存関係のうち、既知のセキュリティ脆弱性があるものを更新するための pull request を自動的に生成します。
- Dependabot version updates — 依存関係を最新に保つための pull request を自動的に発行します。
Dependabot について詳しくは、「Dependabot クイックスタート ガイド」をご覧ください。
この記事では、サポートされているエコシステムとリポジトリについて説明します。
サポートされているエコシステムとリポジトリ
サポートされているパッケージ マネージャーのいずれかの依存関係マニフェストまたはロック ファイルを含むリポジトリの更新を設定できます。 一部のパッケージマネージャーでは、依存関係のベンダーを設定することもできます。 詳細については、vendor
を参照してください。
Dependabot でも、個人用レジストリの依存関係がサポートされています。 詳細については、registries
を参照してください。
Note
GitHub Enterprise Server が、サポートされている最新のエコシステム バージョンの Dependabot updates を確実にサポートするには、Enterprise の所有者が Dependabot アクションの最新バージョンをダウンロードする必要があります。 アクションの詳細と、最新バージョンをダウンロードする方法の手順については、「公式のバンドルされたアクションの最新バージョンを使用する」を参照してください。
Note
- セキュリティあるいはバージョンアップデートを実行する際に、エコシステムによってはアップデートが成功したことを検証するためにすべての依存関係をソースから解決できなければならないことがあります。 マニフェストあるいはロックファイルにプライベートの依存関係が含まれているなら、Dependabotはそれらの依存関係がホストされている場所にアクセスできなければなりません。 Organizationのオーナーは、同じOrganization内のプロジェクトに対する依存関係を含むプライベートリポジトリへのアクセス権をDependabotに付与できます。 詳しくは、「組織のセキュリティおよび分析設定を管理する」を参照してください。 リポジトリの
dependabot.yml
構成ファイルで、プライベート レジストリへのアクセスを構成できます。 詳しくは、「dependabot.yml ファイルの構成オプション」を参照してください。 - Dependabot は、すべてのパッケージマネージャーに対してプライベートな GitHub 依存関係をサポートしません。 詳細は、以下の表をご覧ください。
リポジトリですでに依存関係管理にインテグレーションを使用している場合は、Dependabot を有効にする前にそれを無効にする必要があります。
パッケージ マネージャー | YAML値 | サポートされているバージョン | バージョン アップデート | セキュリティ更新プログラム | プライベートリポジトリ | プライベート レジストリ | ベンダー |
---|---|---|---|---|---|---|---|
Bundler | bundler | v1, v2 | |||||
Cargo | cargo | v1 | (Git only) | ||||
Composer | composer | v1, v2 | |||||
Docker | docker | v1 | 適用できません | ||||
Hex | mix | v1 | |||||
elm-package | elm | v0.19 | |||||
Gitサブモジュール | gitsubmodule | 適用なし | 適用できません | ||||
GitHub Actions | github-actions | 適用なし | 適用できません | ||||
Go モジュール | gomod | v1 | |||||
Gradle | gradle | 適用なし | |||||
Maven | maven | 適用なし | |||||
npm | npm | v6, v7, v8, v9 | |||||
NuGet | nuget | <= 6.7.0 | |||||
pip | pip | v21.1.2 | |||||
pipenv | pip | <= 2021-05-29 | |||||
pip-compile | pip | 6.1.0 | |||||
pnpm | npm | v7、v8、v9 | |||||
poetry | pip | v1 | |||||
pub | pub | v2 | |||||
Swift | swift | v5 | (git only) | ||||
Terraform | terraform | >= 0.13, <= 1.8.x | 適用なし | ||||
yarn | npm | v1、v2、v3 |
ヒント: pipenv
や poetry
などのパッケージ マネージャでは、pip
の YAML 値を使う必要があります。 たとえば Python の依存関係を管理するのに poetry
を使用しており、Dependabot に新しいバージョンのために依存関係のマニフェスト ファイルを監視させたい場合は、dependabot.yml
ファイル中で package-ecosystem: "pip"
を使用してください。
Dependabot security updates のエコシステム サポートの詳細については、「依存関係グラフについて」も参照してください。
Cargo
プライベート レジストリのサポートは Git レジストリに適用され、cargo レジストリは含まれません。
Docker
Dependabot は、バージョンの更新に関する pull request に Docker イメージからのメタデータを追加できます。 メタデータには、リリース ノート、変更ログ、コミット履歴が含まれます。 リポジトリ管理者は、このメタデータを使って、依存関係の更新の安定性リスクをすばやく評価できます。
Dependabot で Docker のメタデータをフェッチするには、Docker イメージのメンテナーが Dockerfile に org.opencontainers.image.source
ラベルを追加し、ソース リポジトリの URL を含める必要があります。 さらに、メンテナーは、発行された Docker イメージと同じタグでリポジトリにタグを付ける必要があります。 例については、dependabot-fixtures/docker-with-source
リポジトリをご覧ください。 Docker のラベルについて詳しくは、Docker のドキュメントの「拡張イメージ ラベル」と「BUILDX_GIT_LABELS」をご覧ください。
Dependabot は、Kubernetes マニフェストの Docker イメージ タグを更新できます。 Docker Image タグを参照する Kubernetes マニフェストを含むディレクトリごとに、dependabot.yml
ファイルの Docker package-ecosystem
要素に入力を追加します。 Kubernetes マニフェストは、Kubernetes Deployment YAML ファイルまたは Helm チャートにすることができます。 dependabot.yml
ファイルをdocker
に構成する情報提供については、「dependabot.yml ファイルの構成オプション」の「package-ecosystem
」を参照してください。
Dependabot では、パブリックとプライベートの両方の Docker レジストリがサポートされています。 サポートされているレジストリの一覧については、「dependabot.yml ファイルの構成オプション」の「docker-registry
」を参照してください。
Dependabot では、セマンティック バージョニング (SemVer) の Docker イメージ タグを解析します。 Dependabot でプレリリースを含むタグが検出された場合、最新バージョンへの更新はマッチするプレリリースでのみ提案され、異なるプレリリース ラベルを使用する新しいバージョンは提案されません。 詳細については、dependabot/dependabot-core
リポジトリの dependabot-docker
README.md ファイルを参照してください。
GitHub Actions
Dependabot では、GitHub Actions のバージョン更新がサポートされていますが、次の点に注意してください。
- Dependabot は、
actions/checkout@v4
などの GitHub リポジトリ構文を使って、GitHub Actions に対する更新のみをサポートします。 Dependabot は、ローカルで参照されているアクションまたは再利用可能なワークフロー (たとえば、./.github/actions/foo.yml
) を無視します。 - Docker Hub と GitHub Packages Container registry URL は現在、サポートされていません。 たとえば、
docker://
構文を使用した Docker コンテナー アクションへの参照はサポートされていません。 - Dependabot では、GitHub Actions のパブリック リポジトリとプライベート リポジトリの両方がサポートされます。 プライベート レジストリの構成オプションについては、「dependabot.yml ファイルの構成オプション」の「
git
」を参照してください。
GitHub Actions での Dependabot version updates の使用について詳しくは、「GitHub のセキュリティ機能を使用して GitHub Actions の使用をセキュリティで保護する」をご覧ください。
Gradle
Dependabot では Gradle は実行されませんが、次のファイルの更新はサポートされます。
build.gradle
、build.gradle.kts
(Kotlin プロジェクト)gradle/libs.versions.toml
(標準 Gradle バージョン カタログを使用するプロジェクトの場合)apply
宣言を介して追加され、ファイル名にdependencies
が含まれるファイル。apply
では、apply to
、再帰、または高度な構文 (たとえば、ファイル名がプロパティで定義された、Kotlin のmapOf
付きapply
) はサポートされていないことに注意してください。
Dependabot security updates の場合、Gradle のサポートは、依存関係送信 API を使用した依存関係グラフ データの手動アップロードに限定されます。 依存関係送信 API の詳細については、「Dependency Submission API を使用する」を参照してください。
注:
- 依存関係送信 API を使用して Gradle 依存関係を依存関係グラフにアップロードすると、依存関係ファイルで明示的に言及されていない推移的な依存関係であっても、すべてのプロジェクトの依存関係がアップロードされます。 推移的な依存関係でアラートが検出されると、Dependabot はリポジトリ内の脆弱な依存関係を見つけることができないため、そのアラートのセキュリティ更新プログラムを作成しません。
- ただし、Dependabot version updates は、親依存関係がプロジェクトのマニフェスト ファイルで直接依存関係として明示的に宣言されている場合に pull request を作成します。
Maven
Dependabot では Maven は実行されませんが、pom.xml
ファイルの更新はサポートされます。
NuGet CLI
Dependabot は NuGet CLI を実行しませんが、バージョン 6.7.0 までのほとんどの機能をサポートしています。
pip と pip-compile
requirements.txt
ファイルの更新のサポートに加え、Dependabot は、PEP 621 標準に従っている pyproject.toml
ファイルの更新をサポートします。
pnpm
pnpm は、Dependabot version updates と Dependabot security updates でサポートされています。
pub
Dependabot は、以前のバージョンが使用可能な場合でも、更新を試みるバージョンが無視されているときは pub
の更新を実行しません。
Swift
プライベート レジストリのサポートは、git レジストリにのみ適用されます。 Swift レジストリはサポートされていません。 非宣言型マニフェストはサポートされていません。 非宣言型マニフェストの詳細については、Swift Evolution ドキュメントの「非宣言型マニフェストの編集」を参照してください。
Terraform
Terraform のサポートには、次のものが含まれます。
- Terraform レジストリまたは一般アクセス可能な Git リポジトリでホストされているモジュール。
- Terraform プロバイダー。
- 個人用 Terraform レジストリ。
dependabot.yml
ファイルで Git レジストリを指定することで、個人用 Git リポジトリのアクセスを構成できます。 詳細については、git
を参照してください。
yarn
Dependabot では、v2 以降のベンダー依存関係がサポートされています。