EXERCISE 90分

ストーリー

田中VPoE
SAST、DAST、SCAの理論を学んだ。ここからは実践だ。Step 1の演習で扱ったPayConnectシステムに対して、セキュリティパイプラインを設計・構築してもらう
あなた
PayConnectの決済マイクロサービスに対するパイプラインですね
田中VPoE
そうだ。PCI-DSS準拠が求められるシステムだ。セキュリティパイプラインの品質がそのままコンプライアンスの品質になる。各ツールの選定理由からゲートポリシーまで、運用可能なレベルの設計を出してくれ
あなた
単にツールを並べるだけではなく、なぜその構成なのかの根拠が必要ですね
田中VPoE
その通り。「なぜSemgrepなのか」「なぜこの順序なのか」「閾値はなぜこの値なのか」。すべてに理由があるパイプラインを設計してくれ

ミッション概要

項目内容
演習タイトルセキュリティパイプラインの設計と構築
想定時間90分
成果物セキュリティパイプライン設計書(ツール選定 + 設定 + ゲートポリシー)
対象システムPayConnect(決済連携マイクロサービス)

前提条件

技術スタック:
  - TypeScript / NestJS
  - PostgreSQL(RDS)
  - Docker / ECS Fargate
  - GitHub Actions(CI/CD)
  - Terraform(IaC)

コンプライアンス要件:
  - PCI-DSS Level 2
  - SOC 2 Type II

チーム構成:
  - 開発者: 10名
  - セキュリティエンジニア: 2名
  - DevOpsエンジニア: 3名

予算制約:
  - セキュリティツールの年間予算: 500万円
  - 可能な限りOSSを活用する

Mission 1: ツール選定と比較

要件

SAST、DAST、SCA、シークレットスキャンそれぞれについて、ツールを選定してください。

  1. 各カテゴリで2つ以上のツールを比較する
  2. 選定したツールの選定理由を3つ以上挙げる
  3. コスト見積もり(年間)を算出する
  4. 合計が予算500万円以内に収まることを確認する
解答例

SAST ツール比較

観点SemgrepSonarQubeCodeQL
ライセンスOSS (Community)OSS (Community)無料(GitHub)
TypeScript対応良好良好良好
カスタムルール容易(YAML)中程度(Java)中程度(QL言語)
CI/CD統合容易中程度(サーバー要)GitHubのみ
速度高速(数秒〜数分)中速(数分〜)中速(数分〜)
PCI-DSS対応ルールありありあり
年間コスト0円(Community)0円(Community)0円

選定: Semgrep

選定理由:

  1. カスタムルールの記述がYAMLベースで容易であり、PCI-DSS固有のルールを迅速に追加できる
  2. 実行速度が高速でPRへのフィードバック時間を短縮できる
  3. GitHub Actionsとの統合が標準で提供されている
  4. OSSでコスト0円、予算を他のツールに配分できる

SCA ツール比較

観点TrivySnykDependabot
ライセンスOSSFreemium無料(GitHub)
コンテナスキャンありありなし
SBOM生成ありありなし
自動修正PRなしありあり
IaCスキャンありありなし
年間コスト0円約200万円(Team)0円

選定: Trivy + Dependabot(併用)

選定理由:

  1. Trivyはコンテナスキャン + SBOM生成 + IaCスキャンの統合が可能
  2. DependabotはGitHub標準で自動修正PRを生成できる
  3. 両者の併用でコスト0円で網羅的なSCAを実現できる

全体コスト見積もり

カテゴリツール年間コスト
SASTSemgrep Community0円
DASTOWASP ZAP0円
SCATrivy + Dependabot0円
シークレットスキャンGitleaks0円
コンプライアンスチェックOPA + Checkov0円
結果統合DefectDojo (OSS)0円
インフラコストEC2 for DefectDojo約50万円
合計約50万円

残りの予算450万円は、四半期ごとの外部ペネトレーションテスト(約300万円/年)と、セキュリティ研修(約150万円/年)に配分を推奨。


Mission 2: パイプライン設計

要件

GitHub Actionsを使った統合セキュリティパイプラインを設計してください。

  1. フェーズ別のチェック配置を図示する(プリコミット〜本番デプロイ)
  2. 各フェーズの実行時間の見積もりを算出する
  3. 並列実行と直列実行の判断根拠を説明する
  4. PR作成から結果フィードバックまでの合計時間が10分以内になるようにする
解答例

パイプライン構成図

PR作成 ──→ Phase 1(並列実行、計3分)
            ├── SAST(Semgrep): 約1分
            ├── SCA(Trivy fs): 約1分
            ├── シークレットスキャン(Gitleaks): 約30秒
            └── ライセンスチェック: 約1分

        ──→ Phase 2(Phase 1通過後、計5分)
            ├── Docker Build: 約3分
            └── コンテナスキャン(Trivy image): 約2分
                └── SBOM生成(Syft): 約30秒(並列)

PR合計: 約8分(10分以内達成)

main マージ ──→ Phase 3(計20分)
                 ├── ステージングデプロイ: 約5分
                 └── DAST(ZAP API Scan): 約15分

             ──→ Phase 4(Phase 3通過後、計2分)
                 └── コンプライアンスチェック(OPA): 約2分

             ──→ Phase 5(手動承認)
                 └── 本番デプロイ承認 → デプロイ

並列/直列の判断根拠

実行順序対象根拠
並列SAST, SCA, Secret Scan, License Check相互に依存せず、同時実行で時間短縮
直列Phase 1 → Phase 2Phase 2はDockerビルドが必要。Phase 1で問題があればビルドは無駄
直列Phase 2 → Phase 3Phase 3はステージング環境へのデプロイが必要
並列Trivy Image Scan + SBOM生成同一イメージに対する独立した処理

Mission 3: ゲートポリシーとエスカレーション

要件

セキュリティパイプラインのゲートポリシーを設計してください。

  1. 各フェーズのブロック条件を定義する
  2. 例外処理フローを設計する(緊急リリース時の対応含む)
  3. エスカレーションルールを定義する
解答例

ゲートポリシー

フェーズブロック条件例外申請先
PR マージSAST Critical > 0, SCA Critical > 0, シークレット検出 > 0セキュリティリード
ビルドコンテナ Critical > 0セキュリティリード
ステージングデプロイDAST Critical > 0セキュリティマネージャー
本番デプロイ未解決 Critical > 0, コンプライアンス違反 > 0VPoE

例外処理フロー

脆弱性検出 ──→ 開発者が確認

                ├── 真の脆弱性 ──→ 修正して再スキャン

                ├── 誤検知 ──→ サプレスコメント + レビュー
                │               └── セキュリティリードの承認必須

                └── 修正に時間が必要 ──→ 例外申請
                    ├── JIRAチケット作成(修正期限付き)
                    ├── リスク受容の承認(Critical: VPoE、High: マネージャー)
                    └── security-exceptions.yaml に記録(有効期限90日以内)

緊急リリース時の対応

条件対応
セキュリティパッチの緊急適用SAST + Secret Scanのみ実施、DAST/SCAは事後実施
重大障害の修正VPoEの承認でDASTをスキップ可(ただし24時間以内にDASTを実施)
ゼロデイ脆弱性への対応セキュリティチームの判断でパイプラインの一部をバイパス可

エスカレーションルール

条件エスカレーション先期限
Critical脆弱性が24時間未修正セキュリティマネージャー24時間
Critical脆弱性が48時間未修正VPoE48時間
例外が3回以上連続申請セキュリティマネージャー都度
コンプライアンス違反が検出セキュリティマネージャー + コンプライアンス担当即時

達成度チェック

観点達成基準
ツール選定各カテゴリで2つ以上のツールを比較し、選定理由が明確
コスト年間予算500万円以内に収まっている
パイプライン設計フェーズ別のチェック配置が適切で、PR時のフィードバック時間が10分以内
並列/直列実行順序の判断根拠が論理的
ゲートポリシーブロック条件が明確で、例外処理フローが定義されている
エスカレーション未修正脆弱性のエスカレーションルールが定義されている

推定所要時間: 90分