LESSON 15分

ストーリー

ある朝、チームのSlackに緊急通知が流れてきました。

高橋アーキテクト
本番環境で個人情報が漏洩した可能性があります。全員集合してください

慌てて会議室に駆けつけると、高橋アーキテクトが深刻な表情で画面を見つめていました。

高橋アーキテクト
APIの認可チェックが漏れていた。管理者用のエンドポイントに、一般ユーザーがアクセスできる状態だった
あなた
テストは通っていたのに…
高橋アーキテクト
機能テストは通っていた。だけど、セキュリティテストがなかった。もっと根本的に言えば、設計段階でセキュリティを考慮していなかった。これが”後付けセキュリティ”の限界だ

高橋アーキテクトは一呼吸おいて続けました。

高橋アーキテクト
今日から、セキュリティを”設計の一部”として組み込む方法を学ぼう。それが”セキュリティバイデザイン”だ

セキュリティバイデザインとは

セキュリティバイデザイン(Security by Design)とは、システムの設計段階からセキュリティを組み込む考え方です。機能を完成させた後にセキュリティ対策を追加するのではなく、最初からセキュリティを前提に設計します。

後付けセキュリティ vs セキュリティバイデザイン

// 後付けセキュリティ:機能実装後にセキュリティを追加
class UserController {
  async getUser(req: Request, res: Response) {
    // まず機能を作って......
    const user = await this.userService.findById(req.params.id);
    res.json(user);
    // TODO: 認可チェック追加する(忘れがち)
    // TODO: 入力バリデーション追加する(忘れがち)
  }
}

// セキュリティバイデザイン:最初からセキュリティを組み込む
class UserController {
  async getUser(req: Request, res: Response) {
    // 1. 入力バリデーション
    const userId = validateUUID(req.params.id);
    if (!userId) return res.status(400).json({ error: "Invalid user ID" });

    // 2. 認可チェック
    if (!req.user.canAccess("user", userId)) {
      return res.status(403).json({ error: "Forbidden" });
    }

    // 3. ビジネスロジック(検証済みデータのみ使用)
    const user = await this.userService.findById(userId);
    if (!user) return res.status(404).json({ error: "Not found" });

    // 4. レスポンスフィルタリング(必要な情報のみ返す)
    res.json(sanitizeUserResponse(user));
  }
}

シフトレフト:セキュリティの前倒し

セキュリティバイデザインの核心は「シフトレフト」です。開発ライフサイクルの早い段階(左側)でセキュリティを考慮することで、コストとリスクを大幅に削減できます。

フェーズ後付けアプローチシフトレフト
要件定義セキュリティ要件なしセキュリティ要件を定義
設計機能設計のみ脅威モデリング実施
実装機能コードのみセキュアコーディング
テスト機能テストのみセキュリティテスト込み
リリース脆弱性発覚 → 緊急対応脆弱性なし → 安全にリリース
コスト修正コスト100倍修正コスト1倍

Month 8 で学ぶこと

この1ヶ月で、以下の4つの柱を学びます。

1. 脅威モデリング

STRIDEとDREADを使って、システムに対する脅威を体系的に分析します。

2. ゼロトラスト・認証認可

「何も信頼しない」前提で、認証・認可アーキテクチャを設計します。

3. データ保護

暗号化、シークレット管理、通信保護で機密データを守ります。

4. DevSecOps

SBOMや自動化テストで、セキュリティを継続的に運用します。


まとめ

ポイント内容
セキュリティバイデザイン設計段階からセキュリティを組み込む
シフトレフト早い段階でセキュリティを考慮
コスト削減後付け修正の100分の1のコスト
Month 8の柱脅威モデリング、ゼロトラスト、データ保護、DevSecOps

チェックリスト

  • セキュリティバイデザインの考え方を理解した
  • シフトレフトの重要性を理解した
  • Month 8で学ぶ4つの柱を把握した

次のステップへ

次は「OWASP Top 10」を学びます。Webアプリケーションで最も多い脆弱性トップ10を知り、守るべき対象を明確にしましょう。


推定読了時間: 15分