EXERCISE 60分

ストーリー

田中VPoE
脅威分析、セキュリティ要件、コンプライアンスマッピング。理論は一通り学んだ。ここからは実践だ。実際の組織シナリオを使って、セキュリティ要件定義書を作成してもらう
あなた
具体的なシステムの情報が与えられるんですね
田中VPoE
そうだ。BtoB SaaS企業が新しいマイクロサービスを立ち上げるシナリオだ。脅威モデリングからコンプライアンスマッピングまで、一気通貫で要件を定義してくれ
あなた
Step 1で学んだすべてを統合する演習ですね
田中VPoE
経営層やセキュリティ監査で使える品質のドキュメントを目指してくれ。「なんとなく安全」ではなく「なぜ安全なのか」を説明できる要件書だ

ミッション概要

項目内容
演習タイトルセキュリティ要件定義書の作成
想定時間60分
成果物セキュリティ要件定義書(脅威分析 + 要件一覧 + コンプライアンスマッピング)
対象システム決済連携マイクロサービス

前提条件

システムの概要

対象システム: PayConnect(決済連携マイクロサービス)

機能概要:
  - 複数の決済プロバイダ(Stripe, PayPay, 銀行振込)との連携
  - 請求書の自動生成・送付
  - サブスクリプション課金管理
  - 売上レポートの生成

技術スタック:
  - TypeScript / Node.js(NestJS)
  - PostgreSQL(RDS)
  - Redis(ElastiCache)
  - AWS Lambda + API Gateway
  - Docker / ECS Fargate
  - GitHub Actions(CI/CD)

データフロー:
  [ユーザー] → [API Gateway] → [PayConnect API] → [決済プロバイダAPI]

                                      ├── [PostgreSQL] ← 顧客情報、取引履歴
                                      ├── [Redis] ← セッション、キャッシュ
                                      └── [S3] ← 請求書PDF

取り扱うデータ:
  - 顧客の氏名、メールアドレス、住所(PII)
  - クレジットカードのトークン(PCI-DSSスコープ)
  - 銀行口座情報
  - 取引履歴・売上データ
  - APIキー・シークレット

利用者:
  - エンドユーザー(顧客企業の管理者) -- 約3,000社
  - 社内管理者 -- 約20名
  - 社内開発者 -- 約10名
  - 外部パートナー(決済プロバイダ) -- 3社

組織のセキュリティ状況

項目現状
セキュリティチーム3名(マネージャー1名、エンジニア2名)
既存のセキュリティポリシー基本的なセキュリティガイドラインあり
コンプライアンス要件PCI-DSS Level 2 準拠が必要、SOC 2 Type II取得を目指している
過去のインシデントAPIキーのGitHub公開(半年前)、XSS脆弱性(1年前)
セキュリティテスト年1回の外部ペネトレーションテスト

Mission 1: 脅威モデリングの実施

要件

PayConnectシステムに対して、STRIDEモデルを使った脅威モデリングを実施してください。

  1. **データフロー図(DFD)**の信頼境界を特定する(最低3つ)
  2. STRIDEの6カテゴリそれぞれに対して、最低1つの具体的な脅威を特定する
  3. 各脅威についてDREADスコアを算出し、優先順位を付ける
解答例

信頼境界

境界名内側外側
TB-1: インターネット境界API Gatewayエンドユーザー
TB-2: アプリケーション境界PayConnect APIAPI Gateway
TB-3: データ境界PostgreSQL / RedisPayConnect API
TB-4: 外部サービス境界PayConnect API決済プロバイダAPI

STRIDE脅威分析

IDSTRIDE脅威対象コンポーネントDREAD (D/R/E/A/D)スコア
T-S-001Spoofing攻撃者がAPIトークンを窃取し正規ユーザーとしてアクセスAPI Gateway8/7/6/8/56.8
T-T-001Tampering決済金額パラメータの改ざんPayConnect API9/6/5/7/46.2
T-R-001Repudiation取引の否認(「購入していない」と主張)取引ログ7/5/4/6/35.0
T-I-001Info DisclosureSQLインジェクションによる顧客PII漏洩PostgreSQL10/8/7/10/68.2
T-I-002Info DisclosureAPIキーのログ出力による漏洩ログシステム8/9/3/5/76.4
T-D-001DoSAPI Gatewayへの大量リクエスト攻撃API Gateway6/9/8/8/87.8
T-E-001Elevation一般ユーザーが管理者APIにアクセスPayConnect API9/6/5/9/46.6

優先順位

優先度脅威IDスコア対応期限
CriticalT-I-0018.2即時
HighT-D-0017.81週間以内
HighT-S-0016.82週間以内
HighT-E-0016.62週間以内
MediumT-I-0026.41ヶ月以内
MediumT-T-0016.21ヶ月以内
MediumT-R-0015.0次の四半期

Mission 2: セキュリティ要件の定義

要件

Mission 1で特定した脅威に基づいて、以下のセキュリティ要件を定義してください。

  1. 要件を5つのカテゴリ(認証、認可、データ保護、ログ・監査、入力検証)に分類する
  2. 各カテゴリから最低2つの要件を定義する(合計10件以上)
  3. 各要件に受け入れ基準検証方法を明記する
解答例

認証要件

要件ID要件受け入れ基準検証方法脅威参照
SEC-AUTH-001エンドユーザーAPIでOAuth 2.0 + JWTを必須化未認証リクエストにHTTP 401を返すDAST自動テストT-S-001
SEC-AUTH-002管理者APIでMFAを必須化MFA未設定の管理者は管理画面にアクセスできないE2EテストT-S-001, T-E-001
SEC-AUTH-003APIキーのローテーション(90日ごと)90日を超えたAPIキーは自動失効する統合テストT-I-002

認可要件

要件ID要件受け入れ基準検証方法脅威参照
SEC-AUTHZ-001リソースレベルのアクセス制御(テナント分離)他テナントのデータにアクセスできないDAST + 統合テストT-E-001
SEC-AUTHZ-002管理者APIと一般ユーザーAPIの分離一般ユーザーが管理者APIにアクセスするとHTTP 403DAST自動テストT-E-001

データ保護要件

要件ID要件受け入れ基準検証方法脅威参照
SEC-DATA-001通信の暗号化(TLS 1.2以上)全通信がTLS 1.2以上で暗号化される自動スキャンT-I-001
SEC-DATA-002カード情報のトークン化(PCI-DSS)生のカード番号をシステムに保存しない設計レビュー + コード監査T-I-001
SEC-DATA-003データベース保存データの暗号化(AES-256)RDS暗号化が有効、KMSキー管理IaCスキャン(checkov)T-I-001

ログ・監査要件

要件ID要件受け入れ基準検証方法脅威参照
SEC-LOG-001全取引の監査ログ記録取引ID、ユーザーID、金額、タイムスタンプが記録されるログ分析テストT-R-001
SEC-LOG-002ログへのPII/シークレット出力の防止APIキー、カード番号がログに出力されないSAST + ログ監査T-I-002

入力検証要件

要件ID要件受け入れ基準検証方法脅威参照
SEC-INPUT-001パラメータ化クエリの使用ORMのパラメータ化クエリを100%使用SASTT-I-001
SEC-INPUT-002決済金額の整合性チェックサーバーサイドで金額を再計算、クライアント値を信頼しない単体テスト + 統合テストT-T-001
SEC-INPUT-003APIレート制限の実装1ユーザーあたり100req/min、超過時429を返すDASTT-D-001

Mission 3: コンプライアンスマッピング

要件

Mission 2で定義した要件を、PCI-DSSおよびSOC 2にマッピングしてください。

  1. 各要件に対応するPCI-DSSの要件番号を特定する
  2. 各要件に対応するSOC 2のTrust Services Criteriaを特定する
  3. カバレッジ分析を行い、不足している領域を特定する
解答例

マッピング表

要件ID要件内容PCI-DSSSOC 2
SEC-AUTH-001OAuth 2.0 + JWT認証8.3(認証メカニズム)CC6.1(論理アクセス制御)
SEC-AUTH-002管理者MFA8.3.1(MFA)CC6.1
SEC-AUTH-003APIキーローテーション8.2.4(認証情報の変更)CC6.1
SEC-AUTHZ-001テナント分離7.1(アクセス制限)CC6.3(ロールベースアクセス)
SEC-AUTHZ-002API分離7.1CC6.3
SEC-DATA-001TLS 1.2以上4.1(暗号化通信)CC6.7(暗号化)
SEC-DATA-002カード情報トークン化3.4(PANの保護)CC6.7
SEC-DATA-003データベース暗号化3.4CC6.7
SEC-LOG-001取引監査ログ10.2(監査証跡)CC7.2(モニタリング)
SEC-LOG-002PII/シークレット漏洩防止10.5(ログの保護)CC7.2
SEC-INPUT-001パラメータ化クエリ6.5.1(インジェクション防止)CC7.1(脆弱性管理)
SEC-INPUT-002金額整合性チェック6.5(安全なコーディング)CC7.1
SEC-INPUT-003レート制限6.6(Webアプリケーション保護)CC7.1

カバレッジ分析

PCI-DSS要件カバー状況不足点
要件1: ネットワークセキュリティ部分的ファイアウォールルールの要件が未定義
要件2: セキュリティ設定未カバーデフォルト設定の変更に関する要件が必要
要件3: カードデータ保護カバー済みSEC-DATA-002, SEC-DATA-003
要件4: 暗号化通信カバー済みSEC-DATA-001
要件5: マルウェア対策未カバーコンテナセキュリティスキャンの要件が必要
要件6: 安全なシステム開発カバー済みSEC-INPUT-001/002/003
要件7: アクセス制限カバー済みSEC-AUTHZ-001/002
要件8: 認証カバー済みSEC-AUTH-001/002/003
要件9: 物理アクセスN/Aクラウド環境のため対象外(PCI-DSS責任共有モデル)
要件10: ログと監視カバー済みSEC-LOG-001/002
要件11: テスト部分的ペネトレーションテストの定期実行要件が必要
要件12: セキュリティポリシー未カバー組織レベルのポリシー策定が必要

追加すべき要件

追加要件ID要件内容PCI-DSSSOC 2
SEC-NET-001セキュリティグループによるネットワーク分離1.3CC6.6
SEC-CONFIG-001CIS Benchmarkに基づくセキュリティ設定2.2CC6.8
SEC-SCAN-001コンテナイメージの脆弱性スキャン5.1CC7.1
SEC-TEST-001四半期ごとのペネトレーションテスト11.3CC7.1

達成度チェック

観点達成基準
脅威モデリングSTRIDEの6カテゴリすべてで脅威を特定し、DREADスコアで優先順位付けしている
信頼境界データフローにおける信頼境界を3つ以上特定している
要件定義5カテゴリで合計10件以上の要件を定義し、受け入れ基準と検証方法がある
コンプライアンスPCI-DSSとSOC 2の両方にマッピングし、カバレッジ分析を実施している
実用性監査やセキュリティレビューで使える品質のドキュメントになっている

推定所要時間: 60分