1
0
forked from baron/baron-sso
Files
baron-sso/docs/tenant-usergroup-policy.md

3.2 KiB

유저 그룹 및 테넌트 통합 권한 정책 (Integrated Policy)

이 문서는 Baron SSO의 테넌트(Tenant)와 유저 그룹(User Group) 간의 관계 및 권한 상속에 관한 공식 정책을 정의합니다.

1. 기본 원칙 (Core Axioms)

1.1 유저 그룹의 테넌트성 (User Group as a Tenant)

  • 모든 테넌트가 유저 그룹은 아니지만, 모든 유저 그룹은 반드시 테넌트의 속성을 가집니다.
  • 유저 그룹은 "사용자들의 집합"인 동시에, 그 자체가 권한을 담고 다른 자원을 소유할 수 있는 **격리된 공간(Tenant)**으로 취급됩니다.

1.2 권한 상속 로직의 단일화 (Unified Inheritance)

  • 테넌트 간의 상속(Parent-Child Tenant)과 유저 그룹의 권한 전파(Group-Member)는 기술적으로 동일한 ReBAC 로직을 사용합니다.
  • UserGroup:members 관계는 Tenant:members와 동일한 우선순위를 가지며, 시스템은 이를 구분 없이 하나의 상속 트리로 처리합니다.

1.3 그룹장-어드민 연동 (Leader-Admin Mapping)

  • 특정 유저 그룹에 명시적으로 **'그룹장(Group Leader)'**을 지정하면, 시스템은 해당 사용자를 해당 유저 그룹(테넌트)의 **'테넌트 어드민(Tenant Admin)'**으로 자동 격상합니다.
  • 그룹장은 해당 그룹이 소유한 모든 하위 테넌트 및 리소스에 대해 완전한 제어권을 가집니다.

2. 권한 흐름도 (Mermaid)

graph TD
    %% Roles
    Leader[Group Leader / 그룹장]
    Member[Group Member / 멤버]

    %% Entities (Polymorphic)
    subgraph UG_T [User Group / Specialized Tenant]
        UG_ID[Group: Hanmac 운영팀]
    end

    subgraph Child_T [Child Tenants / 하위 테넌트]
        T1[Tenant: 한맥 엔지니어링]
        T2[Tenant: 한맥 IT]
    end

    %% Policy Links
    Leader -- "Explicitly Assigned" --> UG_ID
    Leader -. "Automatically Becomes" .-> Admin[Tenant Admin]
    
    Member -- "is member of" --> UG_ID
    
    %% Inheritance (Identical Logic)
    UG_ID -- "Inherits Access To" --> T1
    UG_ID -- "Inherits Access To" --> T2

    %% Effective Access
    Admin -- "Full Control" --> UG_ID
    Member -- "Shared Access" --> T1
    Member -- "Shared Access" --> T2

    %% Styles
    style UG_ID fill:#f9f,stroke:#333,stroke-width:2px
    style Leader fill:#ff9,stroke:#333
    style Admin fill:#ffd,stroke:#333,stroke-dasharray: 5 5

3. 기술적 구현 가이드 (Implementation)

3.1 Keto Relationship Tuples

  • 그룹장 임명: UserGroup:<ID>#owners@User:<UserID>
  • 어드민 자동 승격: Tenant:<ID>#admins@UserGroup:<ID>#owners (그룹 소유자는 해당 테넌트의 어드민)
  • 멤버십: UserGroup:<ID>#members@User:<UserID>

3.2 기대 효과

  • 정책 단순화: '어드민'과 '그룹장'을 별도로 관리할 필요가 없어 시스템 복잡도가 감소합니다.
  • 책임 명확화: 그룹의 장이 해당 자원의 최종 책임자가 되는 직관적인 거버넌스를 수립합니다.
  • 일관된 UX: 사용자는 자신이 관리하는 것이 '테넌트'인지 '그룹'인지 고민할 필요 없이 동일한 관리 도구를 사용합니다.