• organizations
  • collaboration
  • identity
  • user management
  • authentication
  • authorization

사례 연구: Logto Organizations 로 멀티 테넌시 구축하기

Logto Organizations 로 멀티 테넌시에 대한 견고하고 확장 가능한 신원 기반을 설정하는 방법을 배우세요.

Gao
Gao
Founder

오늘날 멀티 테넌시는 앱이나 SaaS의 필수적인 부분이 되었습니다. 이것은 종종 사용자, 조직, 역할 및 권한 간의 복잡한 관계를 포함합니다. 예를 들어, 사용자는 여러 조직의 구성원이 될 수 있으며, 그 반대일 수도 있습니다. 또한 사용자는 다른 조직에서 다른 역할을 가질 수 있습니다.

문제점

이는 앱의 시작뿐만 아니라 장기적인 유지보수를 위해서도 문제를 일으킬 수 있습니다. 전통적인 역할 기반 접근 제어 (RBAC) 모델은 이 문제를 부분적으로 해결할 수 있지만, 사용자와 조직의 수가 증가하면 악몽이 될 수 있습니다.

조직 예시

예를 들어 처음에는 각 조직에 두 가지 역할만 있을 수 있습니다: adminmember. 10개의 조직이 있을 때는 20개의 역할을 관리하게 되며, 1,000개의 조직이 있을 때는 2,000개의 역할을 관리하게 됩니다.

사업이 성장하면서 guest, developer와 같은 더 많은 역할을 추가해야 할 수도 있습니다. RBAC 모델의 복잡성은 기하급수적으로 증가하게 됩니다.

Logto Cloud를 구축할 때도 동일한 문제를 겪었습니다. 업계에서 공통적인 문제라는 것을 금방 깨달았고, 이를 해결할 필요가 있었습니다. 그래서 Logto Organizations 가 그 해결책으로 등장했습니다.

조직 템플릿

간단한 질문: 왜 SaaS 앱이 SaaS일까요? 우리는 확장성이 가장 중요한 이유 중 하나라고 믿습니다. 즉, 한 고객에게 효과적인 것은 모든 고객에게 효과적이어야 한다는 것입니다.

이는 "조직 템플릿"의 개념으로 이어집니다. 조직 템플릿은 각 조직에 대한 접근 제어 모델의 청사진입니다. 이는 모든 조직에 적용되는 역할과 권한을 정의합니다.

각 조직에 두 가지 역할이 있다고 가정해봅시다:

  • admin: 멤버 추가/제거, 역할 변경 등 조직을 관리할 수 있습니다.
  • member: 조직의 리소스에 접근하고 새로운 멤버를 초대할 수 있습니다.

다음과 같은 설정으로 조직 템플릿을 만들 수 있습니다:

조직 템플릿

사용자들을 조직에 추가하기

우리가 조직 템플릿을 설정했기 때문에 사용자 관리가 쉽고 자연스럽게 됩니다. Logto Console(웹 UI)을 통해 사용자를 조직에 추가하거나 Logto Management API를 통해 추가할 수 있습니다.

조직 구성하기에서 더 알아보세요.

다음과 같은 설정으로 두 개의 조직을 추가했습니다:

  • 조직 A: Alice와 Bob 모두 멤버입니다. Alice는 admin 역할을 가지고 있고, Bob은 member 역할을 가지고 있습니다.
  • 조직 B: Alice만 멤버이며, 그녀는 member 역할을 가지고 있습니다.

조직 A

조직 B

앱에서 조직 토큰 요청하기

고객 앱에서 이제 Logto로부터 조직 액세스 토큰(조직 토큰)을 요청할 수 있습니다. 조직 토큰은 JWT 토큰으로, 사용자가 조직에서 권한을 가지고 있는지 서비스를 확인할 수 있는 필요한 정보를 포함합니다.

조직 토큰 요청의 자세한 단계는 앱과 조직 통합하기에 설명되어 있습니다.

Alice가 앱에 로그인했으며, 그녀가 조직 A에서 사용자를 제거하고 싶어한다고 가정합니다. 당신의 앱은 "조직 A"에 대해 remove:member 권한(스코프)을 가진 조직 토큰을 요청할 수 있습니다. Logto는 Alice가 조직에서 권한을 가지고 있는지 확인한 후 admin 역할을 가지고 있기 때문에 조직 토큰을 반환합니다:

다음은 오류 사례의 예시입니다:

  • Bob이 조직 A에서 사용자를 제거하려고 하면, Logto는 그가 조직 A에서 admin 역할을 가지고 있지 않기 때문에 오류를 반환합니다.
  • Alice가 조직 B에서 사용자를 제거하려고 하면, Logto는 그녀가 조직 B에서 admin 역할을 가지고 있지 않기 때문에 오류를 반환합니다.
  • Bob이 조직 B에서 권한을 가진 조직 토큰을 가져오려고 하면, Logto는 그가 조직 B에서 멤버십을 가지고 있지 않기 때문에 오류를 반환합니다.

당신의 앱이 조직 토큰을 받으면, Authorization 헤더에 이를 추가하여 당신의 서비스에 조직 토큰을 사용할 수 있습니다.

서비스에서 조직 토큰 확인하기

당신의 서비스에서는 표준 JWT 확인 과정을 통해 조직 토큰을 확인할 수 있습니다. 조직 토큰 확인하기에서 더 자세히 알아보세요.

조직 템플릿 업데이트하기

조직 템플릿을 업데이트해야 할 때, 예를 들어 developer라는 새로운 역할을 추가할 때, Logto Console 또는 Logto Management API를 통해 이를 수행할 수 있습니다. 변경 사항은 다운타임 없이 모든 조직에 자동으로 적용됩니다.

조직 역할 새로 추가

결론

Logto Organizations를 통해 멀티 테넌시를 관리하고 확장하는 것이 표준화되고 편리해집니다. 당신은 비즈니스 로직에 집중하고 신원 및 접근 제어는 Logto에게 맡길 수 있습니다.