概要
セキュリティバイデザイン(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 | 一般ユーザが管理者機能を実行 |
脅威モデリングの手順:
- システムの構成要素・データフローを図示(DFD: データフロー図)
- 信頼境界(Trust Boundary)を特定
- STRIDE で各コンポーネントへの脅威を列挙
- リスクを評価して対策を決定
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は設定ミス・実行時依存の問題は検出できません。両者を組み合わせて使います。
誤り③ 「脅威モデリングはセキュリティエンジニアだけが行う作業」→ 誤。設計者・開発者が参加してアーキテクチャを理解した上で行うことが効果的です。
関連用語
- セキュアコーディング — SDLC「実装」フェーズのセキュリティ活動
- ペネトレーションテストと脆弱性診断 — SDLC「テスト」フェーズで実施
- ISMS(ISO/IEC 27001) — SDLCのセキュリティ活動をISMSの管理策として位置付ける
重要キーワード
| 用語 | 説明 |
|---|---|
| セキュリティバイデザイン | セキュリティを後付けでなく設計段階から組み込む原則 |
| シフトレフト | セキュリティ活動を開発の早い段階に移動させる考え方 |
| 脅威モデリング | 設計段階で潜在的な脅威を体系的に洗い出す手法 |
| STRIDE | Microsoft が提唱する6種類の脅威カテゴリのフレームワーク |
| SAST | ソースコードを静的に解析してセキュリティ問題を検出するツール |
| DAST | 実行中のアプリに外部からリクエストを送って脆弱性を検出するツール |