シフトレフトセキュリティ:CIパイプラインに脆弱性検知を組み込む
セキュリティチェックをリリース直前や運用開始後に行う「後付け」の運用では、修正コストが膨らみやすい。 CI/CDパイプラインの早い段階に脆弱性検知を組み込む「シフトレフト」の考え方により、 問題を開発の初期段階で発見し、修正コストを大幅に抑えることができる。
背景・現状の課題
脆弱性は開発の後半で発見されるほど修正コストが高くなる。本番運用後に見つかった脆弱性の対応は、 緊急パッチのリリース・影響範囲の調査・場合によっては顧客への説明まで必要になり、開発初期段階で 見つける場合の何倍ものコストがかかる。SAST(静的解析)・DAST(動的解析)・SCA(依存関係スキャン)・ IaCスキャンをCI/CDに組み込むことが、この問題への対策になる。
4種類のスキャン手法
| 手法 | 検査対象 | 実行タイミング |
|---|---|---|
| SAST(静的解析) | ソースコード自体の脆弱性パターン | PR作成時・コミット時 |
| DAST(動的解析) | 実際に動作させた状態でのアプリケーションの脆弱性 | ステージング環境デプロイ後 |
| SCA(依存関係スキャン) | 使用しているOSSライブラリの既知の脆弱性(CVE) | 依存関係の追加・更新時、定期スキャン |
| IaCスキャン | Terraform等のインフラ定義ファイルの設定ミス | IaCコードのPR作成時 |
実装上の落とし穴と対策
シフトレフトセキュリティで最もよくある課題は、誤検知(フォールスポジティブ)による開発者の疲弊である。 誤検知が多いまま運用を続けると、開発者が警告を無視する習慣がついてしまい、本来検知すべき 本物の脆弱性も見逃されるようになる。ツール導入初期は誤検知の多いルールを個別に調整し、 信頼できる警告だけが表示される状態にしてから、CIをブロックする厳格な運用に移行するのが定着させるコツになる。
導入の進め方
いきなり全種類のスキャンを一斉導入すると、大量の警告に開発チームが対応しきれなくなる。 まずSCA(依存関係スキャン)のような誤検知が少なく導入しやすいものから始め、チームが運用に慣れてから SASTやIaCスキャンへと対象を広げていくのが現実的な進め方である。
効果の測り方
シフトレフトの効果は、「脆弱性が発見されたフェーズの内訳」で測ると分かりやすい。導入前は 本番運用後やペネトレーションテストで発見される脆弱性が多かったのに対し、導入後はPR作成時の SASTやSCAで大半が検出されるようになれば、修正コストの低い段階へシフトできている証拠になる。
まとめ
シフトレフトセキュリティは、SAST・DAST・SCA・IaCスキャンをCI/CDの早い段階に組み込むことで、 修正コストの低い段階で脆弱性を発見できるようにする。誤検知への対処と段階的な導入が、 運用として定着させる鍵になる。