概要

セキュリティバイデザイン(Security by Design) は、セキュリティを後付けではなく設計段階から組み込む考え方です。SDLC(Software Development Life Cycle) の各フェーズにセキュリティ活動を埋め込むことで、リリース後の脆弱性修正コストを大幅に削減できます。SC試験では「いつ・何をするか」の対応関係が問われます。

仕組みと動作原理

シフトレフト(Shift Left)

開発ライフサイクルを左から右(要件定義 → リリース)と見たとき、セキュリティ活動をより左(早い段階)に移動させることを「シフトレフト」と呼びます。

[要件定義] → [設計] → [実装] → [テスト] → [リリース] → [運用]
  ↑                                              ↑
「シフトレフト」でここで発見             ここで発見すると修正コストが30〜100倍

SDLCの各フェーズとセキュリティ活動

フェーズセキュリティ活動
要件定義セキュリティ要件の定義・コンプライアンス要件の確認
設計脅威モデリング・アーキテクチャレビュー
実装セキュアコーディング規約・コードレビュー・SAST
テストDAST・ペネトレーションテスト・脆弱性診断
リリース最終セキュリティチェック・SBOM作成
運用脆弱性管理・パッチ管理・ログ監視

脅威モデリング

設計段階で潜在的な脅威を体系的に洗い出す手法です。代表的フレームワーク:

STRIDE モデル(Microsoft)

脅威英語
なりすましSpoofing他ユーザになりすましてAPIを呼ぶ
改ざんTamperingリクエストパラメータの改ざん
否認Repudiation「そんな操作はしていない」という主張
情報漏洩Information Disclosureログへの機密データ混入
サービス妨害Denial of Serviceリソース枯渇攻撃
権限昇格Elevation of Privilege一般ユーザが管理者機能を実行

脅威モデリングの手順:

  1. システムの構成要素・データフローを図示(DFD: データフロー図)
  2. 信頼境界(Trust Boundary)を特定
  3. STRIDE で各コンポーネントへの脅威を列挙
  4. リスクを評価して対策を決定

SAST と DAST の違い

SAST(静的解析)DAST(動的解析)
日本語静的アプリケーションセキュリティテスト動的アプリケーションセキュリティテスト
実行対象ソースコード・バイナリ実行中のアプリケーション
タイミング実装フェーズ(CI/CDに組み込み可)テストフェーズ以降
検出できる脆弱性コード上の欠陥(SQLi・XSSの実装ミス等)実際の動作から生じる脆弱性
誤検知(False Positive)多い傾向少ない傾向
ソースコード不要✗ 必要○ 不要(ブラックボックステストとして使える)

IAST(Interactive AST): SASTとDASTの中間。実行時にエージェントがコードを計装(instrumentation)して内部から解析します。

DevSecOps

DevOps のCI/CDパイプラインにセキュリティを統合するアプローチです。

コードプッシュ
  → SAST(静的解析)自動実行
  → 依存ライブラリスキャン(SCA)
  → コンテナイメージスキャン
  → デプロイ
  → DAST(動的解析)自動実行
  → 脆弱性レポート → 開発者にフィードバック

プライバシーバイデザイン(Privacy by Design)

GDPR等で求められる、プライバシー保護を設計段階から組み込む原則。7原則のうちSC試験で頻出なもの:

  • データ最小化: 必要なデータのみ収集する
  • デフォルトプライバシー: 初期状態でプライバシーが最大限保護される設定

SC試験での頻出ポイント

  • 脅威モデリングの実施タイミング:設計フェーズ。実装後では手戻りコストが大きい
  • SASTとDASTの使い分け:SASTは早期に実施(CI/CD組み込み)、DASTはテスト環境で実施
  • STRIDEの各脅威カテゴリ:問題文の攻撃シナリオをSTRIDEに当てはめる問題
  • シフトレフトの効果:テスト・運用段階で発見された脆弱性の修正コストは要件定義段階の数十倍
  • DevSecOpsのCI/CDへの統合:自動化によって「速度とセキュリティのトレードオフ」を解消

よくある誤問・ひっかけパターン

誤り① 「DASTはソースコードが必要である」→ 。DASTは実行中のアプリケーションに対して外部からテストするため、ソースコードは不要です。

誤り② 「SASTで検出できれば、DASTは不要」→ 。SASTは設定ミス・実行時依存の問題は検出できません。両者を組み合わせて使います。

誤り③ 「脅威モデリングはセキュリティエンジニアだけが行う作業」→ 。設計者・開発者が参加してアーキテクチャを理解した上で行うことが効果的です。

関連用語

重要キーワード

用語説明
セキュリティバイデザインセキュリティを後付けでなく設計段階から組み込む原則
シフトレフトセキュリティ活動を開発の早い段階に移動させる考え方
脅威モデリング設計段階で潜在的な脅威を体系的に洗い出す手法
STRIDEMicrosoft が提唱する6種類の脅威カテゴリのフレームワーク
SASTソースコードを静的に解析してセキュリティ問題を検出するツール
DAST実行中のアプリに外部からリクエストを送って脆弱性を検出するツール