目的
R-05(クロステナントデータ漏洩 / タスク認可漏れ)の緩和。Hibernate Filter + TenantContext による越境防止を全業務 endpoint で網羅検証する。Sprint 3 Infra のクロステナント先行テストに対する App 層の回帰・カバレッジ補完。
背景
全 SQL に WHERE tenant_id = :ctx が Hibernate Filter で自動付与される。ただし PK ロード(find/findById)と bulk DML は Filter が効かない。メソッド名導出クエリは効く。→ 3 経路を分けて検証する。
スコープ
- 全業務 feature(task / tenant / user / audit / dashboard / notification)で別テナントのリソース ID を指定 → 参照系 404 / 更新系 403 を確認
- PK ロード経路: 明示的な tenant_id チェック(fail-closed)が入っていることを検証
- bulk DML 経路: tenant スコープ条件が明示付与されることを検証
- メソッド名導出クエリ経路: Filter 自動付与で越境ゼロを確認
X-Tenant-Id 未選択 / 不正値時の挙動(例外 /api/auth/me・/select・/logout を除く)
受け入れ条件
目的
R-05(クロステナントデータ漏洩 / タスク認可漏れ)の緩和。Hibernate Filter + TenantContext による越境防止を全業務 endpoint で網羅検証する。Sprint 3 Infra のクロステナント先行テストに対する App 層の回帰・カバレッジ補完。
背景
全 SQL に
WHERE tenant_id = :ctxが Hibernate Filter で自動付与される。ただし PK ロード(find/findById)と bulk DML は Filter が効かない。メソッド名導出クエリは効く。→ 3 経路を分けて検証する。スコープ
X-Tenant-Id未選択 / 不正値時の挙動(例外/api/auth/me・/select・/logoutを除く)受け入れ条件