CurrentStack
#security#identity#supply-chain#ci/cd#devops

GitHub OIDC対応でCI秘密情報を削減する, Dependabot/Code Scanningの安全運用移行ガイド

GitHub Changelogの2026年4月更新で、DependabotとCode Scanningが組織レベルのプライベートレジストリに対してOIDC認証を使えるようになりました。これは単なる新機能ではなく、CIに残り続けてきた「長期シークレット依存」を減らす転換点です。

参考: https://github.blog/changelog/month/04-2026/

なぜ長期シークレットは事故を生むのか

多くの漏えい事故は暗号方式の破綻ではなく、運用の破綻です。

  • リポジトリ間で資格情報が使い回される
  • ローテーションが後回しになる
  • ログや成果物に混入しやすい
  • 侵害時に「どのジョブが使ったか」を追いにくい

OIDCは万能ではありませんが、短命トークンとクレーム制御により、リスク面積を確実に縮小できます。

目指すべき状態

「必要な時だけ、必要なジョブにだけ」権限を与える構成です。認可条件は最低でも次を含めます。

  • 組織 / リポジトリ情報
  • ブランチやref条件
  • ワークフロー種別(Dependabot更新、スキャン実行など)
  • 実行イベント種別

これらをIdP側ロールにマッピングし、最小権限を徹底します。

実務向け移行ステップ

1. 棚卸し

  • どのレジストリにアクセスしているか一覧化
  • 静的シークレット利用中のリポジトリ抽出
  • 重要度と影響範囲で優先順位付け

2. 信頼ポリシー定義

  • org/repoの許可範囲
  • 高権限操作時のref制約
  • 本番系は保護ブランチ必須

3. 併走検証

  • OIDCと旧認証を短期間並行
  • 成功率、認証遅延、拒否理由を比較
  • 偽陽性(必要ジョブが拒否)を潰す

4. 静的シークレット廃止

  • リポジトリ秘密情報を段階削除
  • 静的資格情報の使用をCIで禁止
  • 監査ルールで再流入を検出

運用で効く監視指標

  • OIDCトークン発行成功率
  • レジストリアクセスp95
  • クレーム不一致の拒否件数
  • ブレークグラス利用回数

特に拒否理由を構造化して残すと、調整が圧倒的に速くなります。

ポリシー設計例

  1. Dependabotは依存取得のみ許可(公開は禁止)
  2. Code Scanningは解析依存取得のみ
  3. リリース公開は保護ref + 署名コミット条件
  4. プレビュー環境は低権限ロールを分離

インシデント対応の改善点

OIDCに切り替えると、調査単位が「共有シークレット」から「特定ジョブの信頼関係」に変わります。

  • どのワークフローが発行要求したか追跡可能
  • どのコミット・実行者と紐づくか明確
  • 必要箇所のみ無効化でき、全体ローテーションを避けやすい

結果として復旧時間と誤影響を抑えられます。

失敗しやすい設計

  • 便利さ優先でワイルドカード許可を多用
  • 全リポジトリで同一ロールを使う
  • 旧シークレットを無期限で残す
  • 拒否理由の監視を実装しない

まとめ

Dependabot/Code ScanningのOIDC対応は、サプライチェーン防御を現実的に強化できる機会です。クレーム厳格化、短命権限、運用監視をセットで実装すれば、開発速度を落とさずにCIの攻撃面を大きく削減できます。

おすすめ記事