Skip to content

メンバー管理 API 是正: tenant-implicit / Tenant Admin 専用 / SaaS 403 整合 #792

Description

@win2cot

背景

メンバー管理 API が設計 SSOT から逸脱している。設計は §5.1 で /api/tenant/users/*(テナント暗黙・X-Tenant-Id 駆動)、§6.2.1 で SaaS Admin は当該 API に 403。実装は /api/tenants/{tenantId}/users/*(テナント明示)+hasAnyRole('APP_ADMIN','TENANT_ADMIN') で、X-Tenant-Id 不変則に反し(X-Tenant-Id == path tenantId の突き合わせが歪みの証拠)、SaaS Admin にメンバー管理権限を与えている。SaaS 画面(S-12/13/14)はメンバー管理を要しないため 403 が正。

スコープ(設計への是正)

  • ロール変更: 実装 changeMemberRole(PATCH /api/tenants/{tenantId}/users/{userId})を A-10 設計へ是正PUT /api/tenant/users/{userId}/roleTenant Admin 専用(APP_ADMIN 除去)。
  • メンバー削除: 実装 removeMemberDELETE /api/tenant/users/{userId}・Tenant Admin 専用 にリパス(APP_ADMIN 除去)。membership ハード削除(Phase 2 の DISABLED 遷移とは別)。§5.1 に削除 endpoint を追記。
  • 直接追加(addMember, by userId): 廃止(招待 A-09 に一本化)。
  • SaaS Admin アクセス: 全メンバー管理 API で 403(§6.2.1 準拠)。
  • OpenAPI 整合: パス移動、addTenantMember 削除、updateRole(A-10)を正式 operation 化、削除 op リパス。
  • 設計書整合: §5.1(削除追記)/§6.2.1(整合確認)。招待のエラー契約是正は #(A-09) 側。

受け入れ条件

  • ロール変更を PUT /api/tenant/users/{userId}/role・Tenant Admin 専用に是正
  • 削除を DELETE /api/tenant/users/{userId}・Tenant Admin 専用に是正
  • addMember(直接追加)廃止
  • 全メンバー管理 API で SaaS Admin = 403(§6.2.1)
  • OpenAPI を上記に整合(addTenantMember 削除・パス移動)
  • 設計書 §5.1 に削除 endpoint 追記
  • テスト(認可 403 含む)+ カバレッジ 80%

参照

設計書 §5.1 / §6.2.1 / 設計規約(X-Tenant-Id 不変則)

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/backendJava / Spring バックエンド実装変更area/docsdocs/ 配下のドキュメント(設計書・規約・ADR 等)変更area/openapiOpenAPI 仕様(api/openapi.yaml)変更area/security認証・認可 / NIST 準拠 / セキュリティ設定変更priority/p1High。現スプリント内で完了必須task-type:implコード実装が主体のタスク

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions