概要: 段階的アプローチ
この段階的アプローチは、セキュリティツールをスムーズに展開し、ビルドを継続的に実行するのに役立ちます。これは、出荷を保護する一連の小さなステップと考えられ、より信頼性が高く安全な開発プロセスを保証します。
| スキャンモード | 開発者への影響 | 設定 / セットアップ | 目的と結果 |
|---|---|---|---|
| クロールフェイルオープン (監査モード、アラートなし) | 開発者への影響なし; 開発者には見えない | プッシュ/コミットごとにスキャンし、結果をログに記録 | データを収集し、ルールを調整し、誤検知を抑制; ビルドは常に成功 |
| ウォークフェイルオープン (通知モード、アラートあり) | 開発者はPR/IDEで警告を確認 | PRデコレーション/IDEプラグインを有効化 | 開発者は実行可能なフィードバックを受け取り、信頼を築き、自発的に問題を修正 |
| ランフェイルクローズド (ブロックモード) | 高/重大な問題でビルドがブロック | 品質ゲートを有効化し、新たな重大な発見でビルドをブロック | 新たな脆弱性が本番環境に到達するのを防止; 開発者は失敗を尊重 |
はじめに: 「ビッグバン」展開が失敗する理由
DevSecOpsプロジェクトは、「ビッグバン」展開で簡単に軌道を外れることがあります。これは、チームが新しいSASTまたはコンテナスキャナーツールを導入し、すぐに「ブロックモード」をオンにした場合によく発生します。例えば、XYZ社のソフトウェア開発チームは、新しいスキャナーツールの初日に「ブロックモード」を有効にしました。

一晩で、ツールは数百の軽微なセキュリティ問題を緊急対応が必要だとフラグを立て、開発プロセス全体を事実上停止させました。
開発者がこれらの問題を解決しようと奔走する中、重要なプロジェクトの締め切りが守られず、ツールへの信頼が失われる結果となりました。このシナリオはリスクを浮き彫りにし、より段階的なアプローチが必要であることを示しています。
結果として通常、以下の問題が発生します:
- ビルドの破損: 開発者は重要な修正をデプロイできません。
- アラート疲労: 大量の誤検知がチームを圧倒します。
- シャドウIT: フラストレーションを感じたチームがセキュリティチェックを回避して作業を進めます。
これらの問題を避けるために、一度にすべてを変えようとするのではなく、進化的なアプローチを取るべきです。それが「クロール、ウォーク、ラン」フレームワークの目的です。
最近の研究では、段階的な展開を実施する組織が、デプロイ頻度の測定可能な改善と迅速な障害回復を経験し、それによってDevSecOpsの信頼性が向上することが示されています。
このフレームワークを、ダウンタイムの削減やビルド成功率の向上といった実証済みのパフォーマンス結果に結びつけることで、エンジニアリングリーダーがその価値を認識できるようにします。

フェーズ1: クロール (可視性とベースライニング)
目標: 開発者のワークフローを妨げることなく、既存の技術的負債を完全に可視化すること。最初の2週間で90%のリポジトリカバレッジを達成し、測定可能な成功と明確な進捗ベンチマークを確保することを目指します。
- この初期段階では、セキュリティツールをCI/CDパイプラインに非侵入的に統合することでデータ収集に集中します。
- 設定: ツールをAudit ModeでFail Openに設定し、すべての発見をログに記録し、開発者に通知せずビルドをブロックしないようにします。
- アクション: コードのプッシュまたはコミットごとにスキャンをトリガーします。
- 結果: スキャナーはすべての発見をダッシュボードにログし、重大な脆弱性が検出されてもすべてのビルドが正常に通過するようにします。
💡 プロのヒント: このフェーズを利用してスキャナーを慎重に調整してください。特定のルール(例: “コード内のマジックナンバー”)が過剰なノイズを引き起こす場合(例: リポジトリ全体で500回)、調整または一時的に無効化して、次に進む前に実行可能な問題に集中することを検討してください。
なぜこれが重要なのか: この「安全基準」を確立することで、セキュリティチームは既存の技術的負債の量と性質を理解し、デプロイメントに影響を与えることなくルール設定を洗練することができます。
フェーズ2: 歩く(フィードバックと教育)
目標: 開発進捗を妨げることなく、開発者の日常のワークフローに統合された実行可能でタイムリーなセキュリティフィードバックを提供すること。
- ノイズが減少したら、開発者に発見を見える化します。ツールをFail Openモードに保ちつつ、通知モードに切り替えてアラートを有効にします。
- 設定: フィードバックをプルリクエストの装飾(コメント)やIDEプラグインなどの開発ツールに統合します。
- 結果: 開発者はコードレビューの過程でリアルタイムのセキュリティフィードバックを受け取ります。例:「⚠️ 高重大度: ハードコードされた秘密が42行目に導入されました。」
開発者は問題を即座に修正するか、後で解決するために誤検知を文書化することができます。
なぜこれが重要なのか: このフェーズはセキュリティと開発者の間に信頼を築きます。セキュリティは協力的なガイドとして見られ、ゲートキーパーではありません。開発者はツールの存在に慣れ、フィードバックループが直接的で実行可能であるため、自発的に問題を修正し始めます。
これらのポジティブな行動を強化するために、チームが早期の成功を祝うことを奨励します。「高重大度の発見がゼロの最初のPRがマージされた」などの迅速な成功事例を共有することで、勢いをつけ、より多くの開発者が自発的な修正に向かうよう促します。
フェーズ3: 実行(ゲートと施行)
目標: セキュリティゲートを施行することで、新しい高リスクの脆弱性がプロダクションに到達するのを防ぎます。
- 開発者の調整と教育を行った後、ビルドブレーカーまたは品質ゲートを有効化し、重大な問題があるビルドをブロックすることでポリシーを強制します。
- 設定: ツールをFail Closedモードに設定し、高および重大な脆弱性を持つビルドを停止します。中程度および低程度の問題は警告として残し、過度の混乱を避けます。
- 重要なニュアンス: 現在の変更によって導入された新しい脆弱性(例: 現在のPRで)に対してのみブロックを検討し、既存の問題はバックログ項目として追跡し、時間をかけて修正します。
- 結果: 例えば、開発者が重大なSQLインジェクション脆弱性を導入した場合、ビルドは失敗し、修正されるか、文書化された免除が承認されるまでマージできません。
なぜこれが重要か: ツールとチームが十分に調整され教育されているため、誤検知率は低く、開発者はビルドの失敗を真のセキュリティ信号として尊重し、対抗することはありません。
次に進む
ビルドをブロックする段階的な戦略を持った今、次のステップはこれらのツールを統合する場所を決定し、開発者の生産性を最大化することです。
次の記事では、摩擦のないセキュリティについて探求し、開発者のIDEやPRワークフローにセキュリティツールをシームレスに組み込む方法を紹介し、コンテキストの切り替えを減らし、採用を促進します。
よくある質問 (FAQ)
「Crawl, Walk, Run」フレームワークとは何ですか?
新しいセキュリティツールを問題なく使い始めるための簡単なステップバイステップの方法です。まず、静かに情報を収集します(クロール)。次に、開発者に問題を示して学び、修正できるようにします(ウォーク)。最後に、悪いコードをブロックしてソフトウェアを安全に保ちます(ラン)。これにより、チームはセキュリティツールをスムーズに採用し、信頼を得ることができます。
なぜすぐにビルドをブロックしてはいけないのか?
初日からビルドをブロックすると、ツールが一度に多くの問題を指摘し、開発者の作業を止めてしまう可能性があります。これにより、フラストレーションが生じ、プロジェクトが遅れることがあります。ゆっくりと始めることで、まずノイズの多いアラートを見つけて修正し、ツールが正確で信頼できる状態になったときにのみブロックが行われます。
各ステップにどれくらいの時間がかかるのか?
通常、クロールフェーズはデータを十分に収集するために数週間続きます。ウォークフェーズは、開発者がアラートを見て問題を修正することに慣れるまでにもっと時間がかかります。ツールが十分に調整され、チームがコードがマージされる前に問題を修正することに慣れたときにのみランに移行します。
「Fail Open」とは何で、いつ使用するのか?
「Fail Open」とは、ツールが問題を見つけてもコードのマージを止めないことを意味します。クロールとウォークフェーズでこれを使用し、データを収集し、開発者に問題について教える間に邪魔をしないようにします。



