設計正本: 基本設計書 §6.2.3(認可違反シナリオ → HTTP → action マッピング表)。webapi 側で *_DENIED の audit_logs 記録を配線する。
背景
スコープ
- §6.2.3 の各違反シナリオで audit_logs に記録を配線:
detail に文脈(対象 entity 等)を記録、hash chain 整合を維持
- 各シナリオの記録テスト(漏れ防止)
受け入れ条件
関連: 基本設計書 §6.2.3 / #185(action 標準値追加)/ #734(語彙・命名統一の前提)
設計正本: 基本設計書 §6.2.3(認可違反シナリオ → HTTP → action マッピング表)。webapi 側で
*_DENIEDの audit_logs 記録を配線する。背景
*_DENIED標準値定義 (PR #179 follow-up) #185)だが、コードは未実装(grep ゼロ)。例外ハンドラ(TaskExceptionHandler等)は HTTP ステータス分岐のみで audit 記録が入っていない。「機能実装のついで」のタイミングは過ぎているため独立 issue 化。*_DENIED8値 + 命名統一)は [Phase 1 Sprint 2.5] feat(audit): audit_logs 記録(ANONYMIZE / LOGIN_FAILED)+ アクション語彙整合 #734 で実施。本 issue はその値を使った記録の配線を担う(blocked_by [Phase 1 Sprint 2.5] feat(audit): audit_logs 記録(ANONYMIZE / LOGIN_FAILED)+ アクション語彙整合 #734)。TENANT_CROSSEDはCrossTenantViolationAuditServiceがCROSS_TENANT_VIOLATION_ATTEMPTとして既に記録済み → [Phase 1 Sprint 2.5] feat(audit): audit_logs 記録(ANONYMIZE / LOGIN_FAILED)+ アクション語彙整合 #734 の命名統一の結論に追従。スコープ
VIEW_DENIED(404) /EDIT_DENIED/DELETE_DENIED/STATUS_CHANGE_DENIED/VISIBILITY_CHANGE_DENIED/STAKEHOLDER_EDIT_DENIED(403)= タスク認可違反(TaskExceptionHandlerまたは認可層)ROLE_BASED_DENIED(403)= ロール権限不足(method security / SaaS Admin 専用 API)TENANT_CROSSEDは既存CrossTenantViolationAuditServiceとの整合確認([Phase 1 Sprint 2.5] feat(audit): audit_logs 記録(ANONYMIZE / LOGIN_FAILED)+ アクション語彙整合 #734 の命名統一に追従)detailに文脈(対象 entity 等)を記録、hash chain 整合を維持受け入れ条件
関連: 基本設計書 §6.2.3 / #185(action 標準値追加)/ #734(語彙・命名統一の前提)