Logto의 멀티 테넌시 모델 설명
Logto의 멀티 테넌시 모델을 어떻게 설계했는지와 이것이 SaaS 애플리케이션에 가져다주는 이점을 살펴보세요.
혼란
너는 "멀티 테넌시"라는 용어를 사용하여 각 테넌트가 자체 사용자, 역할, 권한 및 데이터를 가지는 신원 격리를 나타내는 일부 제품에 대해 들어봤을 수도 있다.
직관에 반할 수 있지만, 사실 "멀티 테넌시"는 그 반대의 의미를 나타낸다: 단일 인스턴스에서 여러 테넌트가 리소스를 공유한다. 사용자에게는 애플리케이션 내의 신원이 운전면허증과 같다. 예를 들어, 하나의 운전면허증으로 다른 주에서 운전할 수 있지 (하나의 신원으로 여러 조직을 커버), 주마다 새로운 운전면허증을 신청하는 것이 아니다.
Logto의 모델
Logto에서 우리는 설계 초기 단계에서 이러한 혼란을 알아차렸고, 너의 애플리케이션과 사용자에게 올바르게 도와주기로 했다. 여기 우리의 설계가 있다:
- 테넌트는 자체 사용자, 권한 및 데이터를 가지는 하나의 Logto 인스턴스로 간주될 수 있다.
- 테넌트 내에서 여러 조직이 있을 수 있다. 사용자는 여러 조직의 구성원이 될 수 있다.
- 각 조직은 역할 기반 액세스 제어 패턴(RBAC)을 따르며 동일한 조직 역할 및 조직 권한 세트를 사용한다. 이 세트는 조직 템플릿이라고 불린다.
- 조직 역할과 조직 권한은 조직의 문맥에서만 유효하다.
- 예를 들어, 한 사용자 는 한 조직에서는 "관리자"(역할)일 수 있지만, 다른 조직에서는 "회원"(역할)일 수 있다.
- 조직의 문맥이 없으면 조직 역할과 조직 권한은 의미가 없다.
- 조직의 역할 대신 조직 권한을 사용하여 조직 내 액세스를 제어한다.
이 모델은 신원 관리를 유연하게 하고 재사용성을 제공하며, 특히 SaaS 애플리케이션에 적합하다. 인기 있는 SaaS 애플리케이션을 살펴보면 모두 이 모델에 적합할 수 있음을 알 수 있다. 각 애플리케이션에서는 "조직"이라는 용어가 "워크스페이스", "팀" 등으로 다르게 표현될 수 있지만 개념은 동일하다.
예를 들어, Notion(인기 있는 협업 도구)에서는:
- 하나의 계정으로 여러 워크스페이스를 생성하고 가입할 수 있으며, 각 워크스페이스에 대해 다른 계정을 사용하여 가입할 필요가 없다.
- 각 워크스페이스에 대해 Notion은 "워크스페이스 소유자"와 "회원"이라는 동일한 액세스 수준을 정의하지만, 너는 다른 워크스페이스에 대해 다른 액세스 수준을 기대할 수 있다.
따라서 사용자는 계정을 전환하거나 다시 로그인하지 않고도 쉽게 워크스페이스 간 전환이 가능하며, 워크스페이스 간의 격리성을 유지할 수 있다. Logto의 모델에서 이것을 번역하면 다음과 같다:
- 조직 템플릿이 두 가지 역할인 "소유자"와 "회원"을 정의한다.
- 사용자가 워크스페이스에 가입하면 이는 사용자가 조직의 회원이며, 조직에서 "회원" 역할을 가진다는 의미이다.
- 사용자가 워크스페이스를 생성하면 이는 사용자가 조직의 회원이며, 조직에서 "소유자" 역할을 가진다는 의미다.
역할에 따라 사용자는 다른 워크스페이스(조직)에서 다른 권한을 가질 수 있다.
이점
사용자 경험
사용자는 진정한 싱글 사인온 경험을 즐길 수 있다. 조직 간 전환은 탭 간 전환만큼 간단하다.
재사용성
SaaS 애플리케이션의 한 가지 장점은 표준화되고 확장 가능하다는 것이다. 예를 들어, Notion에서 몇 번의 클릭으로 새 워크스페이스를 생성할 수 있으며, 바로 사용할 수 있다.
너의 애플리케이션이 성장함에 따라 각 조직에 더 많은 역할과 권한을 추가하고 싶을 수 있다. 예를 들어, 새로운 역할인 "게스트"와 새로운 권한인 "초대:게스트". 모든 기존 조직을 하나씩 업데이트해야 한다면 악몽이 될 수 있다.
Logto를 사용하면 조직 템플릿을 업데이트하면 모든 기존 조직이 자동으로 업데이트된다.
하나의 액세스 제어 모델, 여러 가지 활용 사례
Logto에서는 동일한 액세스 제어 모델(RBAC)을 조직과 API 리소스 모두에 사용한다. RBAC에 익숙하다면 새로운 액세 스 제어 모델을 배울 필요가 없다. 동시에 이들은 서로 격리되어 있으므로, 다양한 활용 사례에 사용할 수 있다.
가장 흥미로운 부분은 이를 동시에 사용할 수 있다는 것이다. Notion 예제를 확장해 보자:
- 워크스페이스에 액세스하려면 Logto 조직 RBAC을 사용할 수 있다.
- 계정 수준의 리소스(예: 프로필 및 결제 정보)에 액세스하고 업데이트하려면 Logto API 리소스 RBAC을 사용할 수 있다.
대부분의 Logto SDK는 두 가지 유형의 RBAC를 모두 지원한다.
차이점
조직 RBAC와 API 리소스 RBAC는 다음과 같은 측면에서 다르다:
- 조직 RBAC는 조직의 문맥이 필요하지만, API 리소스 RBAC는 그렇지 않다.
- 조직 RBAC는 조직 내에서의 액세스 제어에 사용되지만, API 리소스 RBAC는 API 리소스에 대한 액세스를 제어하는 데 사용된다.
- 사용자는 서로 다른 조직에서 서로 다른 조직 역할을 가질 수 있지만, API 리소스에 대한 역할은 테넌트 내에서 보편적이다.
- 이 두 가지 RBAC 유형의 역할과 권한은 서로 격리된다.
마무리
SaaS 애플리케이션을 구축하는 것은 어렵지만, Logto는 너가 핵심 비즈니스에 집중할 수 있도록 도와주기를 바란다. 궁금한 사항이나 제안이 있으면 주저하지 말고 피드백을 제공해 달라.