---
generated_at: 2026-02-25 12:00: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. **ログ保持期間**：アプリケーションログのローテーション設定が未確認
  2. **パスワードレス認証の採用理由**：設計意図の根拠ドキュメント不在

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

- E-01: `app/controllers/concerns/authentication.rb`
- E-02: `app/controllers/concerns/authorization.rb`
- E-03: `app/controllers/concerns/request_forgery_protection.rb`
- E-04: `app/controllers/sessions_controller.rb`
- E-05: `app/controllers/sessions/magic_links_controller.rb`
- E-06: `app/controllers/concerns/authentication/via_magic_link.rb`
- E-07: `app/models/magic_link.rb`
- E-08: `app/models/magic_link/code.rb`
- E-09: `app/models/session.rb`
- E-10: `app/models/identity.rb`
- E-11: `app/models/identity/access_token.rb`
- E-12: `app/models/user/role.rb`
- E-13: `app/models/user.rb`
- E-14: `app/models/access.rb`
- E-15: `app/models/board/accessible.rb`
- E-16: `app/models/card/accessible.rb`
- E-17: `app/models/webhook.rb`
- E-18: `app/models/board/publication.rb`
- E-19: `app/models/identity/transferable.rb`
- E-20: `app/models/event.rb`
- E-21: `app/models/concerns/eventable.rb`
- E-22: `config/initializers/content_security_policy.rb`
- E-23: `config/initializers/sanitization.rb`
- E-24: `config/initializers/filter_parameter_logging.rb`
- E-25: `config/environments/production.rb`
- E-26: `config/application.rb`
- E-27: `db/schema.rb`
- E-28: `Gemfile`
- E-29: `app/controllers/application_controller.rb`

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Magic Link認証方式を採用 | E-04, E-05, E-06, E-07 | ○ |
| C-02 | コード生成はSecureRandom.base32で6桁 | E-07, E-08 | ○ |
| C-03 | コード有効期限は15分 | E-07 (EXPIRATION_TIME = 15.minutes) | ○ |
| C-04 | secure_compareによるタイミング攻撃対策 | E-05 (line 36) | ○ |
| C-05 | ログイン試行レート制限：3分間に10回 | E-04 (line 4) | ○ |
| C-06 | コード検証レート制限：15分間に10回 | E-05 (line 4) | ○ |
| C-07 | Bearer Token方式のAPI認証 | E-01 (line 58-65), E-11 | ○ |
| C-08 | APIトークンはread/write権限レベル | E-11 (line 5) | ○ |
| C-09 | セッションCookieはhttponly, same_site: lax | E-01 (line 96) | ○ |
| C-10 | 認証成功時に新規セッション作成 | E-01 (line 88-91) | ○ |
| C-11 | セッションにIP/UserAgent記録 | E-01 (line 89), E-27 (sessionsテーブル) | ○ |
| C-12 | ロール体系：owner, admin, member, system | E-12 (line 5) | ○ |
| C-13 | admin?はowner権限を包含 | E-12 (line 12-14) | ○ |
| C-14 | Accessモデルによるボード単位アクセス制御 | E-14, E-15 | ○ |
| C-15 | can_*メソッドによる細粒度権限チェック | E-12 (line 17-31) | ○ |
| C-16 | 本番環境でforce_ssl有効 | E-25 (line 83) | ○ |
| C-17 | assume_ssl設定によるHSTS | E-25 (line 80) | ○ |
| C-18 | 署名付きID（signed_id）使用 | E-01, E-19, E-07 | ○ |
| C-19 | has_secure_tokenによるトークン生成 | E-17, E-18, E-11 | ○ |
| C-20 | パラメータフィルタリング設定 | E-24 | ○ |
| C-21 | CSP実装 | E-22 | ○ |
| C-22 | CSPのscript-srcでnonce利用 | E-22 (line 48-49) | ○ |
| C-23 | object-src: none, base-uri: none | E-22 (line 66-67) | ○ |
| C-24 | CSRF対策：protect_from_forgery実装 | E-03 (line 5) | ○ |
| C-25 | HTMLサニタイズ設定 | E-23 | ○ |
| C-26 | Eventモデルによる監査ログ | E-20, E-21 | ○ |
| C-27 | UUID主キー使用 | E-26 (line 24-26), E-27 | ○ |
| C-28 | brakeman/bundler-audit導入 | E-28 (line 47-48) | ○ |
| C-29 | モダンブラウザ制限 | E-29 (line 12) | ○ |
| C-30 | 開発環境でのみMagic Linkコード表示 | E-06 (line 9-12, 36-40) | ○ |
| C-31 | アプリケーションログの保持期間 | **根拠なし** | △ |
| C-32 | パスワードレス認証採用の設計意図 | **根拠なし** | △ |

## 4) 不足情報（Unknown / Missing）
- **C-31（アプリケーションログ保持期間）**：ログローテーション設定ファイルが確認できなかった
  - 候補：logrotate設定 / Kamalデプロイ設定 / インフラ設定ドキュメント
- **C-32（パスワードレス認証の採用理由）**：設計意図を記載したドキュメントが存在しない
  - 候補：ADR（Architecture Decision Record）/ 要件定義書 / 技術選定ドキュメント

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**：認証・認可の実装は適切に行われている
- **0（低リスク）**：CSRF/XSS対策はRailsの標準機能を適切に利用
- **0（低リスク）**：CSP設定は詳細に定義されている
- **1（中リスク）**：ログ保持期間が明示されていない（運用要件に依存）
- **0（低リスク）**：セキュリティ関連Gem（brakeman, bundler-audit）が導入済み

## 6) レビュアーチェックリスト（最小）
- [ ] Magic Linkの有効期限15分が業務要件に適合しているか確認
- [ ] APIトークンの権限設計（read/write）が要件を満たしているか確認
- [ ] CSP設定（特にunsafe-inline許可）がセキュリティポリシーに適合しているか確認
- [ ] ログ保持期間について運用チームと要件を確認
- [ ] 転送用ID（4時間有効期限）の妥当性を確認
- [ ] Webhook署名シークレットの運用ポリシーを確認
