コンテンツにスキップ

[章番号]: セキュリティ設計書

このテンプレートの使い方

このファイルは、システムのセキュリティを確保するための技術的な設計を定義するためのテンプレートです。 認証・認可、データ保護、監査など、セキュリティに関する実装方針を明確にします。 詳しい使い方は「設計仕様の書き方ガイド」を参照してください。

1. はじめに

1.1. 目的

1.2. 脅威モデルとリスク分析

脅威カテゴリ (STRIDE) 具体的な脅威の例 影響度 発生可能性 リスクレベル
Spoofing (なりすまし) 不正なAPIキーによるアクセス
Tampering (改ざん) DB内のデータ直接改ざん
Repudiation (否認) ログを削除し操作を否認
Information Disclosure (情報漏洩) 暗号化されていないデータへのアクセス
Denial of Service (サービス拒否) 大量リクエストによるAPI停止
Elevation of Privilege (権限昇格) 一般ユーザーが管理者権限を奪取

2. 認証 (Authentication) 設計

2.1. 認証フロー

sequenceDiagram
    participant Client
    participant APIServer
    participant AuthProvider

    Client->>APIServer: /login (username, password)
    APIServer->>AuthProvider: ValidateCredentials(username, password)
    AuthProvider-->>APIServer: Validation Result (Success, UserInfo)
    APIServer->>APIServer: Generate JWT
    APIServer-->>Client: JWT (Access Token, Refresh Token)

2.2. 認証方式

  • 方式: JWT (JSON Web Token)
  • アルゴリズム: RS256
  • 有効期間: アクセストークン: 15分, リフレッシュトークン: 30日

3. 認可 (Authorization) 設計

3.1. アクセス制御モデル

  • モデル: ロールベースアクセスコントロール (RBAC)

3.2. ロールと権限

ロール 権限 説明
admin posts:create, posts:read, posts:update, posts:delete 全ての投稿を管理できる。
editor posts:create, posts:read, posts:update 自身が作成した投稿を編集できる。
viewer posts:read 全ての投稿を閲覧できる。

4. データ保護設計

4.1. 保存時の暗号化 (Encryption at Rest)

  • 対象データ: users.email, secrets.api_key
  • 暗号化アルゴリズム: AES-256-GCM
  • 鍵管理: AWS KMS (Key Management Service) を利用。

4.2. 転送時の暗号化 (Encryption in Transit)

  • プロトコル: TLS 1.2以上を必須とする。
  • 証明書管理: AWS Certificate Manager (ACM) を利用。

5. 監査ログ設計

5.1. 記録対象イベント

  • ログイン成功・失敗
  • パスワード変更
  • 重要なデータへのアクセス・変更
  • 権限の変更

5.2. ログフォーマットと保管

  • フォーマット: JSON形式
  • 保管場所: AWS CloudWatch Logs
  • 保管期間: 1年間

6. 脆弱性対策

  • SQLインジェクション: 全てのDBクエリでプリペアドステートメントを使用する。
  • クロスサイトスクリプティング (XSS): 全てのユーザー入力をエスケープ処理し、Content Security Policy (CSP) を導入する。

7. 関連する要件