forked from baron/baron-sso
69 lines
3.2 KiB
Markdown
69 lines
3.2 KiB
Markdown
# 유저 그룹 및 테넌트 통합 권한 정책 (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)
|
|
|
|
```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:** 사용자는 자신이 관리하는 것이 '테넌트'인지 '그룹'인지 고민할 필요 없이 동일한 관리 도구를 사용합니다.
|