Skip to content

[Phase 1 Sprint 5] クロステナント漏洩テスト #767

Description

@win2cot

目的

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 を除く)

受け入れ条件

  • 全業務 feature で越境参照=404、越境更新=403 のテスト追加
  • PK ロード・bulk DML・メソッド名導出クエリの 3 経路それぞれにテストケースが存在
  • Testcontainers MySQL 8.4 上で green(H2 不可、コーディング規約準拠)
  • 越境関連クラスの JaCoCo カバレッジ確認、CI green

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/backendJava / Spring バックエンド実装変更area/security認証・認可 / NIST 準拠 / セキュリティ設定変更priority/p1High。現スプリント内で完了必須task-type:implコード実装が主体のタスク

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions