Dependabot security updates について
Dependabot security updates で、リポジトリ内の脆弱性のある依存関係を簡単に修正できます。 通常は、dependabot.yml
ファイルをリポジトリに追加して、Dependabot security updates を有効にします。 次に、このファイルのオプションを設定して、リポジトリの管理方法を Dependabot に指示します。
サポートされているリポジトリとエコシステムについては、「Dependabot でサポートされているエコシステムとリポジトリ」を参照してください。
Dependabot security updates を有効にすると、リポジトリの依存関係グラフで脆弱性のある依存関係に対して Dependabot アラートが発生すると、Dependabot は自動的にそれを修正しようとします。 詳細については、「Dependabot アラートについて」および「Configuring Dependabot security updates (Dependabot セキュリティ アップデートの構成)」を参照してください。
Note
セキュリティ アップデートのために Dependabot によって生成された関連するプル リクエストがマージされると、アラートが閉じられること以外には、dependabot.yml
ファイルで指定された設定と Dependabot のセキュリティ アラートの間に相互作用はありません。
Dependabot は、コミット署名がリポジトリの要件ではない場合でも、既定では独自のコミットに署名します。 検証済みのコミットに関する詳細は、「コミット署名の検証について」を参照してください。
Note
リポジトリに対して Dependabot security updates が有効になっている場合、Dependabot は、使用可能なパッチを持つすべての開いている Dependabot アラートを解決するために pull request を自動的に開こうとします。 どのアラートに対して Dependabot が pull request を開くかカスタマイズする場合は、Dependabot security updates を [無効] のままにし、オート トリアージ ルールを作成する必要があります。 詳しくは、「自動トリアージ ルールをカスタマイズして Dependabot アラートの優先度を設定する」を参照してください。
GitHub は、最近公開された GitHub セキュリティ アドバイザリによって公開された脆弱性に影響されるリポジトリに Dependabot alerts を送信できます。 詳しくは、「GitHub Advisory Database でのセキュリティ アドバイザリの参照」を参照してください。
Dependabot は、リポジトリの依存関係グラフを中断することなく、脆弱性のある依存関係を修正バージョンにアップグレードできるかどうかを確認します。 次に、 Dependabot は pull request を発生させて、パッチを含む最小バージョンに依存関係を更新し、pull request を Dependabot アラートにリンクするか、アラートのエラーを報告します。 詳しくは、「Dependabot エラーのトラブルシューティング」を参照してください。
Dependabot security updates 機能は、依存関係グラフと Dependabot alerts を有効にしているリポジトリで使用できます。 完全な依存関係グラフで識別されたすべての脆弱性のある依存関係について、Dependabot アラートが表示されます。 ただし、セキュリティアップデートプログラムは、マニフェストファイルまたはロックファイルで指定されている依存関係に対してのみトリガーされます。 詳しくは、「依存関係グラフについて」を参照してください。
Note
npm の場合、明示的に定義された依存関係をセキュリティで保護されたバージョンに更新するための pull request が Dependabot によって生成されます。それにより親の依存関係が更新されたり、その親に不要になったサブ依存関係が削除されたりするとしても同様です。 他のエコシステムの場合、Dependabot は、親依存関係の更新も必要になる場合、間接的なまたは推移的な依存関係を更新できません。 詳しくは、「Dependabot エラーのトラブルシューティング」を参照してください。
関連する機能 Dependabot version updates を有効にして、Dependabot が古い依存関係を検出するたびに、マニフェストを最新バージョンの依存関係に更新する pull request を生成させることができます。 詳しくは、「GitHub Dependabot のバージョンアップデートについて」を参照してください。
Dependabot によって pull request が発生する場合、その pull request は、"セキュリティ" 更新プログラムか "バージョン" アップデートを対象としたものである可能性があります。
- Dependabot security updates は、既知の脆弱性を持つ依存関係を更新するのに役立つ、自動化された pull request です。
- Dependabot version updates は、依存関係に脆弱税がなくても、依存関係を最新の状態に維持する、自動化された pull request です。 バージョンアップデートの状態をチェックするには、リポジトリのInsights(インサイト)タブ、続いてDependency Graph(依存関係グラフ)、そしてDependabotにアクセスしてください。
Dependabot security updates を有効にした場合、構成の一部が、Dependabot version updates に対して作成されたプル リクエストにも影響する可能性があります。 これは、構成の設定の一部が両方のタイプの更新プログラムに共通しているためです。 詳しくは、「dependabot.yml ファイルの構成オプション」を参照してください。
Dependabot によって開かれた pull request は、アクションを実行するワークフローをトリガーできます。 詳細については、「GitHub ActionsでのDependabotの自動化」を参照してください。
新しいリポジトリで Dependabot を有効にし、GitHub Actions を有効にすると、Dependabot は既定では GitHub Actions で実行されます。
新しいリポジトリで Dependabot が有効になっていて、GitHub Actions が無効になっている場合、Dependabot は GitHub Enterprise Cloud のレガシ アプリケーションで実行され、Dependabot updates を実行します。 これにより、Dependabot updates ジョブのパフォーマンス、表示範囲、管理策は、GitHub Actions と同じようには提供されません。 Dependabot を GitHub Actions と共に使用する場合は、リポジトリで GitHub Actions を有効にしてから、リポジトリの [Code security] 設定ページから [Dependabot on Actions runners] を有効にする必要があります。 詳細については、「GitHub Actions ランナーの Dependabot について」を参照してください。
Dependabot security updates を使うと、GitHub Actions の脆弱な依存関係を修正できます。 セキュリティ更新プログラムが有効になっている場合、ワークフローで使用されている脆弱な GitHub Actions を修正プログラムが適用された最小バージョンに更新するための pull request が、Dependabot によって自動的に生成されます。
セキュリティアップデートの pull request について
各 pull request には、提案された修正を迅速かつ安全に確認してプロジェクトにマージするために必要なすべてのものが含まれています。 これには、リリースノート、変更ログエントリ、コミットの詳細などの脆弱性に関する情報が含まれます。 pull request が解決する脆弱性の詳細は、リポジトリの Dependabot alerts にアクセスできないユーザには表示されません。
セキュリティアップデートを含む pull request をマージすると、対応する Dependabot アラートがリポジトリに対して解決済みとしてマークされます。 Dependabot pull request の詳細については「依存関係の更新に関するPull Requestを管理する」をご覧ください。
Note
自動テストと受け入れプロセスを用意しておいて、pull request がマージされる前にチェックが実行されるようにすることをお勧めします。 これは特に、アップグレードが提案されたバージョンに追加機能があったり、プロジェクトのコードを破壊するような変更がある場合に重要です。 継続的インテグレーションの詳細については、「GitHub Actions による継続的インテグレーションについて」を参照してください。
グループ化されたセキュリティ アップデートについて
表示される pull request の数をさらに減らすには、 グループ化されたセキュリティ アップデートを使って、(パッケージ エコシステムごとに) 依存関係のセットをまとめてグループ化できます。 その後、Dependabot により、グループ内のできるだけ多くの依存関係を一度に安全なバージョンに更新する、1 つの pull request が生成されます。
セキュリティ アップデートの場合、Dependabot は、特定の条件と構成の下でエコシステムごとに異なるディレクトリからの依存関係のみをグループ化します。 Dependabot では、異なるパッケージ エコシステムからの依存関係はグループ化されず、セキュリティ アップデートはバージョン更新プログラムとグループ化されません。
Dependabot security updates のグループ化された pull request は、以下の方法のいずれかまたは両方で有効にすることができます。
- ディレクトリ全体とエコシステム単位で、リリースされているセキュリティ更新プログラムをできるだけ多くグループ化するには、リポジトリの [Code security] 設定または organization の [Code security] の下にある [Global settings] でグループ化を有効にします。
- パッケージ名、開発/運用の依存関係によるグループ化、 SemVer レベル、またはエコシステムごとの複数のディレクトリ全体 など、グループ化をより細かく制御するには、リポジトリの
dependabot.yml
構成ファイルに構成オプションを追加します。
Note
dependabot.yml
ファイル内で Dependabot security updates のグループルールを構成した場合、使用できるすべての更新は、指定したルールに従ってグループ化されます。 Dependabot は、Organization またはリポジトリ レベルでグループ化されたセキュリティ アップデートの設定も有効になっている場合、dependabot.yml
で構成されていないディレクトリ間でのみグループ化されます。
詳しくは、「Configuring Dependabot security updates (Dependabot セキュリティ アップデートの構成)」を参照してください。
互換性スコアについて
Dependabot security updates には、互換性スコアが含まれている場合があります。これは、依存関係の更新によってプロジェクトに破壊的変更が発生する可能性があるかどうかを知らせるものです。 これらは、同じセキュリティアップデートプログラムが生成された他のパブリックリポジトリでの CI テストから計算されます。 更新の互換性スコアは、依存関係の特定のバージョンの更新前後で、実行した CI がパスした割合です。
Dependabot updates
の自動非アクティブ化について
リポジトリのメンテナが Dependabot pull request の操作を停止すると、Dependabot はその更新を一時的に停止し、そのことが通知されます。 この自動オプトアウト動作により、Dependabot はバージョンとセキュリティの更新に関する pull request を作成せず、非アクティブなリポジトリに対する Dependabot の pull request をリベースしないため、ノイズが減ります。
Dependabot 更新の自動非アクティブ化は、Dependabot で pull request が開かれたが、pull request はそのまま残っているリポジトリにのみ適用されます。 Dependabot で pull request が開かれていない場合、Dependabot は一時停止されません。
アクティブなリポジトリとは、(Dependabot ではなく) ユーザーが過去 90 日間に以下の "いずれか" のアクションを実行したリポジトリです。__
- リポジトリの Dependabot pull request をマージするか閉じる。
- リポジトリの
dependabot.yml
ファイルに変更を加える。 - セキュリティ更新プログラムまたはバージョン更新プログラムを手動でトリガーする。
- リポジトリの Dependabot security updates を有効にする。
- pull request で
@dependabot
コマンドを使う。
非アクティブなリポジトリとは、少なくとも 1 つの Dependabot pull request が 90 日を超えて開かれ、全期間に渡って有効になっており、上記のどのアクションもユーザーによって実行されていないリポジトリです。
Dependabot が一時停止されると、GitHub によってバナー通知が以下に追加されます。
- すべての開いた Dependabot の Pull Request。
- リポジトリの [Settings] タブの UI ([Code security] の [Dependabot]) に移動します。
- Dependabot alerts の一覧 (Dependabot security updates が影響を受ける場合)。
さらに、セキュリティの概要でDependabot が組織レベルで一時停止されているかどうかを確認できます。 paused
状態は、API を介して表示することもできます。 詳しくは、「リポジトリの REST API エンドポイント」をご覧ください。
メンテナが Dependabot pull request と再びやり取りするとすぐに、Dependabot によりそれ自体の一時停止が解除されます。
- Dependabot alerts のセキュリティ更新プログラムが自動的に再開されます。
- バージョンの更新は、
dependabot.yml
ファイルで指定されたスケジュールで自動的に再開されます。
Dependabot セキュリティアップデートの通知について
GitHub で通知をフィルターして、Dependabot セキュリティアップデートを表示できます。 詳しくは、「インボックスからの通知を管理する」を参照してください。