Files
BaronSSO/baron-sso/docs/keto-tuple-samples.md

3.5 KiB

Ory Keto 관계 튜플 샘플 가이드 (Relationship Tuple Samples)

이 문서는 Baron SSO의 유저 그룹 중심 통합 권한 정책을 구현하기 위해 Ory Keto에 저장되는 실제 데이터 샘플을 제공합니다.

1. 기본 명명 규칙 (Naming Convention)

  • Namespace: Tenant, UserGroup, RelyingParty, User
  • Format: namespace:object_id#relation@subject (subject는 user_id이거나 namespace:object_id#relation 형태의 Subject Set임)

2. 유저 그룹 및 멤버십 샘플 (User Group & Membership)

2.1 그룹 멤버 추가

"한맥 IT 개발팀(hanmac-it-dev) 그룹에 사용자 alice를 멤버로 추가"

  • Tuple: UserGroup:hanmac-it-dev#members@User:alice-uuid
  • 설명: alice는 이제 해당 그룹의 권한을 상속받을 준비가 됨.

2.2 그룹장(Leader) 임명

"사용자 bobhanmac-it-dev 그룹의 그룹장으로 임명"

  • Tuple: UserGroup:hanmac-it-dev#owners@User:bob-uuid
  • 설명: bob은 그룹의 소유권을 가지며, 정책에 따라 해당 테넌트의 어드민이 됨.

3. 정책 기반 자동 권한 상속 (Policy Bridges)

3.1 그룹장 -> 테넌트 어드민 승격

"그룹장은 해당 그룹(테넌트)의 어드민 권한을 가진다" (핵심 정책)

  • Tuple: Tenant:hanmac-it-dev#admins@UserGroup:hanmac-it-dev#owners
  • 설명: 이 튜플 하나로 인해 UserGroup:hanmac-it-dev#owners에 속한 bobTenant:hanmac-it-devadmins 자격을 얻음.

3.2 그룹 멤버 -> 테넌트 일반 권한

"그룹 멤버들은 해당 테넌트의 조회(view) 권한을 가진다"

  • Tuple: Tenant:hanmac-it-dev#members@UserGroup:hanmac-it-dev#members
  • 설명: 그룹에 속한 모든 사용자가 테넌트 자원을 볼 수 있게 함.

4. 테넌트 간 권한 상속 및 자원 소유 (Hierarchy)

4.1 타 테넌트 관리 권한 부여

"개발팀 그룹(hanmac-it-dev)에게 alpha-project 테넌트의 관리 권한을 부여"

  • Tuple: Tenant:alpha-project#manage@UserGroup:hanmac-it-dev#members
  • 설명: 이제 개발팀 멤버 전원이 alpha-project를 요리할 수 있음.

4.2 테넌트-자원(RP) 연결

"인증 앱(messenger-app)은 hanmac-it-dev 테넌트 소속이다"

  • Tuple: RelyingParty:messenger-app#parents@Tenant:hanmac-it-dev
  • 설명: hanmac-it-dev를 관리하는 사람은 부모 관계를 통해 messenger-app도 관리할 수 있게 됨.

5. 종합 시나리오 예제: Hanmac Family

대상 리소스 관계 주체 (Subject) 비고
UserGroup:hanmac-it members User:alice Alice는 IT팀 멤버
UserGroup:hanmac-it owners User:bob Bob은 IT팀 그룹장
Tenant:hanmac-it admins UserGroup:hanmac-it#owners 정책: Bob은 IT 테넌트 어드민
Tenant:project-x manage UserGroup:hanmac-it#members IT팀 전체가 Project-X 관리
RelyingParty:rp-01 parents Tenant:project-x rp-01은 Project-X 소속

🔍 권한 확인 (Check API) 결과:

  1. Bob은 rp-01을 관리할 수 있는가?
    • bob -> UserGroup:hanmac-it#owners -> Tenant:hanmac-it#admins -> (상속 시) -> rp-01
    • 결과: YES
  2. Alice는 rp-01을 관리할 수 있는가?
    • alice -> UserGroup:hanmac-it#members -> Tenant:project-x#manage -> (부모 관계) -> rp-01
    • 결과: YES
  3. Alice는 Tenant:hanmac-it의 설정을 바꿀 수 있는가?
    • Alice는 members일 뿐 admins가 아님.
    • 결과: NO