Skip to content

[BE][FE][RBAC] MVP1완료 후 Merge; MVP2-0 Organization Membership / Invitation Foundation 반영 #68

Description

@yoonki1207

참고, 기준 문서 수정 중이다. 아직 issue가 기준이 아님.

목표

  • MVP 2 Governance/RAG/Audit 구현 전에 organization_memberships 기반 조직 소속/초대 foundation을 먼저 반영한다.
  • 기존 team_memberships를 조직 소속의 source of truth로 쓰던 구조를 분리하고, team_memberships는 organization 내부 team 배정 정보로만 사용한다.
  • active organization member만 team membership, user direct permission, 이후 MVP 2 knowledge base/document permission의 subject가 될 수 있게 한다.

배경

현재 MVP 1 RBAC foundation은 organization -> teams -> team_memberships -> users 흐름으로 user의 organization 소속을 간접 판단한다. 이 구조는 resource permission 계산에는 동작하지만, organization 초대/수락, team 없는 direct permission, MVP 2 knowledge/RAG 권한 확장에는 맞지 않는다.

MVP 2-0에서는 organization_memberships를 추가해 user가 organization에 속한다는 1차 관계를 명시하고, MVP 2의 data source permission enforcement 전에 이 전제를 고정한다.

관련 Linear

작업 범위

  • organization_memberships SQLAlchemy model과 Alembic migration 추가
  • 기존 team_memberships, organization.created_by, organization.managed_by 기준 active membership backfill 구현
  • active organization 조회 기준을 team membership에서 organization membership으로 전환
  • has_active_organization_membership, get_organization_auth_state, organization manager permission helper 추가/전환
  • workflow/LLM permission helper에서 active organization membership 선검증 적용
  • organization member list/invite/accept/update/remove API 추가
  • manager가 기존 가입 user를 organization에 invite하고, invited user가 직접 accept하는 흐름 구현
  • active organization member만 team에 추가 가능하도록 team service 검증 기준 변경
  • team에 속하지 않은 active organization member에게 user direct workflow/LLM permission을 줄 수 있게 변경
  • organization member 제거 시 team membership과 user direct permission cleanup 구현
  • invite/accept/update/remove/cleanup audit event 기록
  • Organization Members UI, invite modal, invitation accept entry 추가
  • team member picker와 direct permission user picker를 active organization member 기준으로 필터링
  • migration, permission helper, organization member API, team/direct permission regression test 추가

제외 범위

  • 이메일만 있는 미가입 user 초대 token/sign-up flow
  • SSO/OIDC 기반 organization auto-join
  • organization role catalog 또는 통합 resource permission table 도입
  • MVP 1 team/resource permission endpoint breaking change
  • active organization header/session/cookie 계약 강제 전환
  • MVP 2 user_knowledge_permissions migration과 RAG fail-closed enforcement 확정

완료 기준

  • migration 후 기존 team member는 active organization member가 된다.
  • organization creator/manager는 manager membership을 가진다.
  • active organization member가 아니면 resource permission row가 있어도 접근이 거부된다.
  • invited/suspended member는 resource permission subject가 될 수 없다.
  • active organization member는 team에 속하지 않아도 user direct permission을 받을 수 있다.
  • organization member가 아닌 user는 team에 추가하거나 direct permission 대상으로 지정할 수 없다.
  • organization member 제거 후 team/direct permission이 정리되고 접근이 즉시 차단된다.
  • 기존 MVP1 workflow/LLM permission demo와 regression이 계속 통과한다.
  • MVP2 knowledge base/document permission 구현이 organization_memberships를 전제로 시작 가능하다.

참고 문서

  • docs/implementation-plan/mvp-2-0-organization-membership-plan.md
  • docs/requirements/mvp-2-governance-rag-audit.md
  • docs/data-model/rbac-permission-policy.md
  • docs/data-model/physical-data-model.md

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions