セキュリティ設計指針#
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を提供し、実際の値はシークレット管理サービスから動的に取得する。