---
generated_at: 2026-02-24 10:30:00
metrics:
  claims_total: 28
  claims_with_evidence: 26
  claims_without_evidence: 2
confidence_derived: 0.93
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.93**
  - 根拠あり：26 / 28、根拠なし：2
- 優先レビュー（高）
  1. **CSP設定の不在**：コード内にCSP設定が見つからず、検討事項として記載
  2. **HSTS設定の不在**：明示的なHSTS設定が見つからず、検討事項として記載

## 2) 参照した情報（Evidence一覧）

- E-01: `apps/studio.giselles.ai/lib/supabase/middleware.ts` - Supabase認証ミドルウェア
- E-02: `apps/studio.giselles.ai/lib/supabase/server.ts` - Supabaseサーバークライアント
- E-03: `apps/studio.giselles.ai/lib/supabase/create-server-client.ts` - Supabaseクライアント生成
- E-04: `apps/studio.giselles.ai/app/(auth)/auth/callback/[provider]/route.ts` - OAuthコールバック処理
- E-05: `apps/studio.giselles.ai/lib/token-encryption.ts` - トークン暗号化実装
- E-06: `apps/studio.giselles.ai/lib/api-keys/api-secrets.ts` - APIシークレット管理
- E-07: `apps/studio.giselles.ai/lib/api-keys/token.ts` - APIトークンパース
- E-08: `apps/studio.giselles.ai/db/schema.ts` - データベーススキーマ定義
- E-09: `apps/studio.giselles.ai/lib/assert-workspace-access.ts` - ワークスペースアクセス検証
- E-10: `apps/studio.giselles.ai/services/teams/is-member-of-team.ts` - チームメンバーシップ検証
- E-11: `apps/studio.giselles.ai/next.config.ts` - Next.js設定（セキュリティヘッダー）
- E-12: `packages/supabase-driver/src/vault/supabase-vault-driver.ts` - Supabase Vaultドライバー
- E-13: `packages/vault/src/create-vault.ts` - Vault抽象化
- E-14: `apps/studio.giselles.ai/app/(auth)/lib/validate-return-url.ts` - リダイレクトURL検証
- E-15: `apps/studio.giselles.ai/app/api/apps/[appId]/run/route.ts` - APIエンドポイント（Zodバリデーション）
- E-16: `packages/github-tool/src/webhooks.ts` - GitHub Webhook署名検証
- E-17: `apps/studio.giselles.ai/app/webhooks/github/route.ts` - GitHub Webhookハンドラー
- E-18: `apps/studio.giselles.ai/app/webhooks/stripe/v2/route.ts` - Stripe Webhookハンドラー
- E-19: `apps/studio.giselles.ai/app/api/_lib/rate-limit.ts` - レート制限実装
- E-20: `apps/studio.giselles.ai/lib/logger/pino.ts` - Pinoロガー設定

## 3) Claims と根拠の対応（レビューの主戦場）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Supabase Auth を認証基盤として採用 | E-01, E-02, E-03 | ○ |
| C-02 | OAuth 2.0 (GitHub/Google) サポート | E-04 | ○ |
| C-03 | APIキー認証（Bearerトークン）実装 | E-06, E-07 | ○ |
| C-04 | セッション管理方式（Cookie-based） | E-01, E-03 | ○ |
| C-05 | exchangeCodeForSessionによるセッション再生成 | E-04 | ○ |
| C-06 | scryptによるAPIキーハッシュ化 (N=16384, r=8, p=1, keyLen=32) | E-06 | ○ |
| C-07 | タイミングセーフ比較（timingSafeEqual）使用 | E-06 | ○ |
| C-08 | チームベースアクセス制御 (admin/member ロール) | E-08, E-09, E-10 | ○ |
| C-09 | assertWorkspaceAccess によるアクセス検証 | E-09 | ○ |
| C-10 | X-Frame-Options: DENY 設定 | E-11 | ○ |
| C-11 | X-XSS-Protection: 1; mode=block 設定 | E-11 | ○ |
| C-12 | X-Content-Type-Options: nosniff 設定 | E-11 | ○ |
| C-13 | Referrer-Policy: origin-when-cross-origin 設定 | E-11 | ○ |
| C-14 | AES-256-GCM によるOAuthトークン暗号化 | E-05 | ○ |
| C-15 | IV長 12バイト、認証タグ長 16バイト | E-05 | ○ |
| C-16 | Supabase Vault によるシークレット管理 | E-12, E-13 | ○ |
| C-17 | 環境変数によるTOKEN_ENCRYPTION_KEY管理 | E-05 | ○ |
| C-18 | オープンリダイレクト対策（パス検証） | E-14 | ○ |
| C-19 | Zodによるスキーマベース入力検証 | E-15 | ○ |
| C-20 | Drizzle ORMによるパラメータ化クエリ | E-06, E-10 | ○ |
| C-21 | GitHub Webhook HMAC-SHA256署名検証 | E-16, E-17 | ○ |
| C-22 | Stripe Webhook署名検証 | E-18 | ○ |
| C-23 | プランベースレート制限（free: 60/分, pro: 300/分, 等） | E-19 | ○ |
| C-24 | 60秒ウィンドウのスライディングウィンドウ方式 | E-19 | ○ |
| C-25 | Pinoロガーによる機密情報リダクション | E-20 | ○ |
| C-26 | APIキー使用時刻の記録（lastUsedAt） | E-06 | ○ |
| C-27 | Content-Security-Policy (CSP) の導入検討 | **根拠なし** | △ |
| C-28 | HSTS の明示的設定の検討 | **根拠なし** | △ |

## 4) 不足情報（Unknown / Missing）

- **CSP (Content-Security-Policy) 設定**
  - コードベース内にCSP設定が見つからなかった
  - 候補：`next.config.ts` / カスタムミドルウェア / Vercel設定

- **HSTS (HTTP Strict Transport Security) 設定**
  - 明示的なHSTS設定が見つからなかった
  - VercelプラットフォームがデフォルトでHSTSを適用している可能性があるが、コード内での確認は不可
  - 候補：Vercel設定 / `next.config.ts`ヘッダー

- **詳細な監査ログ**
  - ユーザーアクション（ログイン、ログアウト、権限変更等）の詳細ログ
  - 現状はSentry/Vercelログに依存しており、専用の監査ログテーブルは存在しない

## 5) リスクフラグ（レビュー観点）

| 項目 | リスクレベル | 説明 |
|---|---|---|
| CSP未設定 | 1 (中リスク) | XSS攻撃のリスク軽減にCSPが有効だが、現状未設定 |
| HSTS明示設定なし | 0 (低リスク) | VercelがデフォルトでHSTSを提供している可能性が高い |
| 監査ログ未整備 | 1 (中リスク) | コンプライアンス要件によっては詳細な監査ログが必要 |
| CORS設定不明確 | 0 (低リスク) | Next.js App Routerのデフォルト動作を使用、明示的設定なし |

## 6) レビュアーチェックリスト（最小）

- [ ] 認証フロー（OAuth, セッション管理）の正確性を確認
- [ ] 暗号化アルゴリズム（AES-256-GCM, scrypt）のパラメータが適切か確認
- [ ] アクセス制御ロジック（assertWorkspaceAccess）のテストカバレッジを確認
- [ ] レート制限値がビジネス要件に適合しているか確認
- [ ] CSP導入の必要性と優先度を判断
- [ ] 監査ログ要件（コンプライアンス、内部ポリシー）との整合性を確認
- [ ] Webhook署名検証のシークレットローテーション手順を確認
