---
generated_at: 2026-02-24 10:30:00
metrics:
  claims_total: 32
  claims_with_evidence: 30
  claims_without_evidence: 2
confidence_derived: 0.94
---

# 根拠レポート：セキュリティ設計書

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.94**
  - 根拠あり：30 / 32、根拠なし：2
- 優先レビュー（高）
  1. **HSTS設定**：アプリケーション層での実装確認が必要
  2. **ログ保持期間**：設定ファイルでの定義確認が必要

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `packages/core/framework/src/http/middlewares/authenticate-middleware.ts`
- E-02: `packages/core/framework/src/http/middlewares/check-permissions.ts`
- E-03: `packages/core/utils/src/auth/token.ts`
- E-04: `packages/modules/providers/auth-emailpass/src/services/emailpass.ts`
- E-05: `packages/modules/auth/src/services/auth-module.ts`
- E-06: `packages/modules/rbac/src/models/rbac-role.ts`
- E-07: `packages/modules/rbac/src/models/rbac-policy.ts`
- E-08: `packages/core/framework/src/policies/has-permission.ts`
- E-09: `packages/core/utils/src/common/parse-cors-origins.ts`
- E-10: `packages/core/types/src/common/config-module.ts`
- E-11: `packages/core/framework/src/http/express-loader.ts`
- E-12: `packages/core/framework/src/http/router.ts`
- E-13: `packages/core/framework/src/http/utils/validate-body.ts`
- E-14: `packages/core/framework/src/http/utils/validate-query.ts`
- E-15: `packages/medusa/src/api/auth/middlewares.ts`
- E-16: `packages/medusa/src/api/auth/utils/generate-jwt-token.ts`
- E-17: `packages/medusa/src/api/auth/session/route.ts`
- E-18: `packages/core/types/src/logger/index.ts`
- E-19: `packages/core/core-flows/src/rbac/steps/validate-user-permissions.ts`

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | JWT Bearer Token認証をサポート | E-01, E-03 | ○ |
| C-02 | Session Cookie認証をサポート | E-01, E-11, E-17 | ○ |
| C-03 | API Key認証をサポート (sk_プレフィックス) | E-01 | ○ |
| C-04 | Email/Password認証プロバイダーを提供 | E-04 | ○ |
| C-05 | パスワードはScrypt KDFでハッシュ化 | E-04 | ○ |
| C-06 | セッション有効期限はデフォルト10時間 | E-11 | ○ |
| C-07 | saveUninitialized: false設定 | E-11 | ○ |
| C-08 | 本番環境でsecure: true, sameSite: "none" | E-11 | ○ |
| C-09 | JWTペイロードにactor_id, actor_type, rolesを含む | E-16 | ○ |
| C-10 | RBACはロール・ポリシーモデルで実装 | E-06, E-07 | ○ |
| C-11 | hasPermission関数でポリシー検証 | E-08 | ○ |
| C-12 | /adminはuser, bearer/session/api-key認証 | E-12 | ○ |
| C-13 | /storeはcustomer, 未認証許可 | E-12 | ○ |
| C-14 | CORS設定はadminCors, storeCors, authCorsで分離 | E-10, E-12 | ○ |
| C-15 | CORS設定でcredentials: trueを設定 | E-12 | ○ |
| C-16 | Publishable API Keyはx-publishable-api-keyヘッダー | E-12 | ○ |
| C-17 | HSTS設定はWebサーバーレベルで推奨 | **根拠なし** | △ |
| C-18 | 入力バリデーションはZodを使用 | E-13, E-14 | ○ |
| C-19 | validateAndTransformBodyミドルウェアを提供 | E-13 | ○ |
| C-20 | validateAndTransformQueryミドルウェアを提供 | E-14 | ○ |
| C-21 | Restricted Fieldsで特定フィールドを除外可能 | E-10, E-12 | ○ |
| C-22 | HTTPログはMorganで実装 | E-11 | ○ |
| C-23 | 本番環境ではJSON形式でログ出力 | E-11 | ○ |
| C-24 | Loggerインターフェースを定義 | E-18 | ○ |
| C-25 | ログ保持期間は設定による | **根拠なし** | △ |
| C-26 | jwtSecretは本番必須 (未設定でクラッシュ) | E-10 | ○ |
| C-27 | cookieSecretは本番必須 (未設定でクラッシュ) | E-10 | ○ |
| C-28 | セッションストアはRedis/DynamoDB/メモリ | E-11 | ○ |
| C-29 | RBACはフィーチャーフラグで有効化 | E-02, E-08 | ○ |
| C-30 | JWTは非対称鍵署名をサポート | E-01, E-10 | ○ |
| C-31 | Google OAuth認証プロバイダーを提供 | プロバイダーディレクトリ確認 | ○ |
| C-32 | GitHub OAuth認証プロバイダーを提供 | プロバイダーディレクトリ確認 | ○ |

## 4) 不足情報（Unknown / Missing）
- **HSTS設定 (C-17)**
  - アプリケーションコード内でHSTSヘッダーの明示的な設定が確認できなかった
  - 候補：Webサーバー設定 / リバースプロキシ設定 / Helmet.jsなどのミドルウェア
- **ログ保持期間 (C-25)**
  - ログローテーションや保持期間の設定がコードベース内で確認できなかった
  - 候補：デプロイ環境設定 / ログ管理サービス設定 / OS設定

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 認証・認可設計 - 業界標準の実装パターンを採用
- **0 (低リスク)**: パスワードハッシュ - Scrypt KDFは推奨アルゴリズム
- **0 (低リスク)**: CORS設定 - 設定可能かつデフォルトで制限的
- **1 (中リスク)**: HSTS - アプリケーション層での実装未確認 (インフラ層で対応推奨)
- **0 (低リスク)**: 入力バリデーション - Zodによる型安全な検証
- **1 (中リスク)**: 監査ログ - ログ保持・ローテーション設定はインフラ依存

## 6) レビュアーチェックリスト（最小）
- [ ] 認証方式（JWT, Session, API Key）の実装が正確に記載されているか確認
- [ ] パスワードハッシュアルゴリズム（Scrypt）の設定値が適切か確認
- [ ] RBAC実装のロール・ポリシーモデルが正確に記載されているか確認
- [ ] CORS設定の各プレフィックスごとの設定が正確か確認
- [ ] セッション設定（TTL, Cookie属性）が本番環境に適切か確認
- [ ] HSTS設定をインフラ層で実装しているか確認
- [ ] ログ保持期間・ローテーション設定がインフラ層で実装されているか確認
- [ ] 本番環境でjwtSecret, cookieSecretが適切に設定されているか確認
