securityopsweb
Dependabot運用チェックリスト|週次バッチ・グルーピング・安全な更新ゲート
|
4 min read
依存更新は放置すると脆弱性、雑に回すとサプライチェーン事故。Dependabotを運用として成立させるために、対象範囲(npm+Actions)、週次バッチ、グルーピング、自動マージ方針、CIゲートまでをチェックリスト化する。
目次
- 結論(Conclusion)
- 背景(Explanation)
- 実務手順(Practical Guide)
- 手順1:対象範囲を決める(最低:npm + GitHub Actions)
- 手順2:週次バッチに寄せる(原則)
- 手順3:グルーピングでレビュー単位を作る
- 手順4:自動マージは基本OFF(やるなら条件を固定)
- 手順5:ActionsはSHA pinへ寄せ、DependabotでSHA更新を回す
- 手順6:危険な更新PRをCIゲートで止める
- 失敗パターン(Pitfalls)
- チェックリスト(Checklist)
- FAQ
- Q1. なぜ毎日じゃなく週次?
- Q2. 自動マージはセキュリティ的に正しい?
- Q3. Actions更新まで含める理由は?
- 内部リンク(Internal links)
- 参考(一次/準一次)
Dependabotを“安全に回る運用”にするには、何を決めればいい?
結論(Conclusion)
依存更新はOps。最小で回る方針はこう。
- 対象:npm + GitHub Actions
- 頻度:週次バッチが原則
- 粒度:グルーピングでレビュー単位を作る
- 自動マージ:原則OFF(やるなら厳格条件)
- ゲート:新規依存とinstall scriptはCIで止める
「無限に自動化」ではなく「安全に自動化」が正解。
背景(Explanation)
よくある失敗:
- 毎日PRが出て見なくなる
- 更新を止めて脆弱性が溜まる
- patch自動マージで地味な破壊が混ざる
- Actionsをtag参照のままでCIの中身が後から変わる
良い方針は、更新作業を“予測可能”にする。
- 時間帯が決まっている
- バッチサイズが読める
- 危険イベントは機械的に止まる
実務手順(Practical Guide)
手順1:対象範囲を決める(最低:npm + GitHub Actions)
- npm(アプリ/ツールの依存)
- GitHub Actions(CIのサプライチェーン)
手順2:週次バッチに寄せる(原則)
- 週1(例:月曜)
- 緊急セキュリティ修正は例外として即対応
手順3:グルーピングでレビュー単位を作る
例:
- lint/format/test
- build
- runtime依存(重点レビュー)
判断基準:
- “爆発半径とレビュー工数”で分ける。
手順4:自動マージは基本OFF(やるなら条件を固定)
安全寄り:
- patchでも自動マージしない
どうしてもやるなら、全部満たす:
- 差分が小さくグループ内に閉じる
- CIが全部green
- CODEOWNERS承認
手順5:ActionsはSHA pinへ寄せ、DependabotでSHA更新を回す
uses: owner/action@v4→ commit SHA pin- その後、Dependabotで週次更新
手順6:危険な更新PRをCIゲートで止める
ハードストップ:
- 新規依存の追加
- install scriptの導入(
preinstall/install/postinstall)
ここがサプライチェーン上の最強シグナル。
失敗パターン(Pitfalls)
- PR数が無制限でレビューが崩壊
- 関係ない更新が同じグループに混ざってレビュー不能
- 条件なしの自動マージ
- Actions更新を無視
チェックリスト(Checklist)
- [ ] Dependabotでnpmを更新対象にしている
- [ ] DependabotでGitHub Actionsを更新対象にしている
- [ ] 更新頻度は週次がデフォルト
- [ ] open PR上限を設定している(PR洪水防止)
- [ ] グルーピング方針がある(tooling vs runtime)
- [ ] 自動マージはOFF(原則)
- [ ] 自動マージする場合、CODEOWNERS + CI green が条件
- [ ] Actionsはcommit SHAでpinしている
- [ ] 新規依存はCIで止まる(承認が必要)
- [ ] install script導入はCIで止まる(承認が必要)
- [ ] 緊急パッチの例外手順がある
FAQ
Q1. なぜ毎日じゃなく週次?
レビュー能力がボトルネックだから。週次に寄せると疲労が減り、更新が継続する。
Q2. 自動マージはセキュリティ的に正しい?
条件付きなら有効。ただし無条件の自動マージは攻撃経路になり得る。まずは手動レビューから。
Q3. Actions更新まで含める理由は?
CIは第三者コードを実行する。Actionsを放置/未pinのままにするとサプライチェーンリスクが残る。
内部リンク(Internal links)
参考(一次/準一次)
- GitHub Docs: Dependabot: https://docs.github.com/code-security/dependabot
- GitHub Docs: Dependabot version updates: https://docs.github.com/code-security/dependabot/dependabot-version-updates
- GitHub Docs: Dependabot security updates: https://docs.github.com/code-security/dependabot/dependabot-security-updates