セキュリティ設計指針#

1. 基本方針#

API定義書(OpenAPI等)で定義された制約を厳格に適用し、脆弱性の混入を未然に防ぐ。

2. 認証・認可 (Authentication & Authorization)#

  • 認証: MVPフェーズでは実施しない。将来的にIDP(Firebase Auth等)の導入を検討する。
  • 認可: MVPフェーズでは実施しない。全てのリクエストを全権限ユーザーとして扱う。

3. 通信の保護#

  • 全ての外部通信は TLS 1.2 以上(HTTPS)で暗号化する。
  • HSTS (HTTP Strict Transport Security) を有効化し、常時SSL化を強制する。

4. 入力値の検証とサニタイズ#

  • バリデーション: APIスペックに基づき、型、長さ、形式(正規表現)をリクエスト受領時に即座に検証する。
  • SQLインジェクション対策: ORMの利用を原則とし、生のSQLを記述する場合は必ず静的プリペアードステートメント(プレースホルダ)を使用する。
  • XSS対策: フロントエンド(React/Next.js等)のエスケープ機能を活用し、サーバー側でも適切なContent-Type(application/json等)を強制する。

5. データの暗号化#

  • 保存時 (At Rest): データベースおよびオブジェクトストレージ(S3等)の暗号化を有効にする。
  • 機密情報: APIキーやパスワード等は、暗号化した状態で環境変数またはシークレット管理ツールで管理する。

6. 秘匿情報の管理#

  • ソースコード内にパスワードやAPIキーを直接記述(ハードコード)することを厳禁とする。
  • .env.example を提供し、実際の値はシークレット管理サービスから動的に取得する。