Appearance
認証・権限モデル(RBAC)
ステータス: ドラフト(2026-04-15 起案) 対象: ロール定義と権限マトリクス。関連: usecases.md, api.md, data-model.md 注意: 本書はロジック側の正規仕様。画面は
docs/screens/*.mdで、API 強制はapi.md§1.0 に従う。
1. 認証方式
- メール+パスワード(bcrypt)+ NextAuth セッション(将来)
- パスワード要件:最低12文字、英数混在、パスワードマネージャ想定
- MFA:将来対応(OA/SU は必須、TA 推奨)
- セッション有効期限:LR/TA/TM/EM/SA 7日、OA/SU 1日
- リフレッシュ・再認証:重要操作(削除請求実行、ロール付与、監査エクスポート)前に再認証
2. テナント・組織モデル
Organizationをテナント単位とする- 1 User が複数
RoleAssignmentを持てる(送出し機関+受入企業の兼務など) - セッション内でアクティブテナントを明示的に指定。ロールを跨ぐ操作は OA の承認フローを経由
- データアクセスは常に「アクティブテナント × ロール」で評価
3. ロール一覧と責務境界
略号:LR = learner, TA = teacher, OA = org_admin, TM = trainer, EM = employer, SA = sending_manager, SU = operator
| ロール | コード | 略号 | 主要責務 | 禁止/制限 |
|---|---|---|---|---|
| 学習者 | learner | LR | 自己の学習・進捗閲覧・同意管理 | 他ユーザーデータ不可 |
| 講師 | teacher | TA | 担当学習者の支援・試験・面談メモ | 削除/撤回対応・監査ログ・権限管理 |
| 組織管理者 | org_admin | OA | 同意/削除/異議対応・ロール管理・監査 | 目的外データ閲覧(業務要件の範囲に限定) |
| 研修責任者 | trainer | TM | 引継ぎ学習者の参照・補強ポイント特定 | 編集・成績改変不可 |
| 企業採用 | employer | EM | 公開同意済み候補者の要約閲覧・比較 | 生ログ・個別回答は閲覧不可、改変不可 |
| 送出し機関Mgr | sending_manager | SA | コホート運営・レポート生成・公開管理 | 個別ログは OA 権限に昇格 |
| 運用 | operator | SU | 匿名化運用メトリクス閲覧・障害調査 | 個別特定操作は不可 |
4. 権限マトリクス
凡例:✓ = 許可 / △ = 条件付き / ✗ = 禁止 / -(該当なし)
| リソース / 操作 | learner | teacher | org_admin | trainer | employer | sending_manager | operator |
|---|---|---|---|---|---|---|---|
| 自プロファイル 閲覧/編集 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 学習者一覧 | ✗(自己のみ参照可) | △ (担当) | ✓ (自組織) | △ (引継) | ✗ | △ (配下) | ✗ |
| 学習者詳細・学習履歴(自分) | ✓(自分) | - | - | - | - | - | - |
| 学習者詳細・学習履歴(他者) | ✗ | △ (担当) | ✓ (自組織) | △ (引継) | ✗ | △ (配下、OA 昇格時) | ✗ |
| 回答生ログ・視聴生ログ | ✗ | △ (担当) | ✓ (自組織) | ✗ | ✗ | ✗ | ✗ |
| 単語習得率 (集計) | 自分のみ | △ (担当) | ✓ (自組織) | △ (引継) | △ (要約) | △ (配下) | ✗ |
| 一貫性ビュー(閲覧) | 自分のみ | △ (OA有効時) | ✓ (自組織) | ✗ | △ (要約) | ✗ | ✗ |
| 一貫性ビュー(機能ON/OFF) | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ |
| 試験成績 入力/編集 | ✗ | ✓ (担当) | ✓ (自組織) | ✗ | ✗ | ✗ | ✗ |
| カリキュラム編成 | ✗ | ✓ (担当クラス) | ✓ | ✗ | ✗ | △ (配下) | ✗ |
| 候補者レポート(要約) | ✗ | ✗ | ✓ (自組織) | ✗ | ✓ (公開同意済) | △ (配下) | ✗ |
| 候補者比較 | ✗ | ✗ | ✓ (自組織) | ✗ | ✓ | ✗ | ✗ |
| お気に入り登録 | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ |
| 候補者PDF出力 | ✗ | ✗ | ✗ | ✗ | ✓ (監査ログ記録) | △ | ✗ |
| 同意付与 / 撤回 (自分) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
| 同意・撤回の受理・実行 | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ |
| 削除請求 (自分) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
| 削除請求の実行 | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ |
| 異議申立 (自分) | ✓ | - | - | - | - | - | - |
| 異議申立 対応 | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ |
| ロール付与 / 剥奪 | ✗ | ✗ | ✓ (自組織) | ✗ | ✗ | ✗ | ✗ |
| 監査ログ閲覧 | 自操作履歴のみ | ✗ | ✓ (自組織) | ✗ | 自閲覧履歴のみ | ✗ | △ (匿名化済) |
| メトリクス/運用 | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ |
5. 最小権限原則
- デフォルト拒否:明示的に許可されていない組合せは 403
- 権限昇格:必要時は OA による一時昇格(監査ログ必須)
- 兼務ロール:同一ユーザーが複数ロールを持つ場合でも、現在のアクティブテナント/ロール内の許可に従う
- 機能トグル(一貫性ビューなど):OA が組織単位で制御し、法務レビュー未了の組織では既定で OFF
6. 特別操作のガード
| 操作 | ガード |
|---|---|
| 候補者 PDF 出力 | EM の閲覧権限 + 監査ログ記録 + 再認証 |
| 監査ログエクスポート | OA + MFA + 再認証 |
| ロール付与/剥奪 | OA + MFA + 再認証 |
| 一貫性ビュー 機能 ON | OA + 法務レビュー完了フラグ必須 |
| 削除請求の実行 | OA + 二重確認 + 監査ログ |
7. セッション・監査
- セッション毎に
session_idを発行し、すべての監査ログへ付与 - IP・UA を監査ログに記録(プライバシーポリシーで明示)
- 失効・ログアウト操作も監査対象
8. モック(M1)での扱い
- M1 では実認証なし。URL クエリ
?role=learner|teacher|org_admin|trainer|employer|sending_manager|operatorで疑似切替 - 画面は常にロールに沿った表示/非表示を行い、RBAC を視覚的に示す
- モックデータは テナント境界を実装時と同じ方針で分離(他組織データが混入しないこと)
9. 未確定事項
- MFA 実装方式(TOTP / WebAuthn)
- OA の承認フローUI(兼務ロール切替時)
- 越境移転を伴う場合の契約/同意条件との組合せ
10. 改訂履歴
- 2026-04-15: 初版ドラフト作成