본문으로 건너뛰기

조직 관리 기능 정의하기

조직 경험을 설계하기 전에, 멀티 테넌트 앱에 필요한 주요 요구 사항을 목록화하세요. 이 장에서는 그 경험을 설계할 때 고려해야 할 몇 가지 필수 요소를 강조합니다.

조직 내 접근 제어 정의하기

이 시나리오에서는, 테넌트 내에서 조직 관리자는 사용자 역할을 업데이트할 수 있지만 일반 멤버는 할 수 없습니다. (반면, 조직 생성은 SaaS 멀티 테넌트 앱에서 모든 최종 사용자가 수행할 수 있는 시스템 수준의 작업입니다.) 이러한 세분화된 접근 제어를 지원하려면, 조직 권한과 역할을 정의하여 오직 관리자만 조직 내에서 역할을 업데이트할 수 있도록 하세요.

노트:

조직 역할과 권한에 대해 더 알고 싶다면 조직 템플릿을 확인하세요.

admin 역할은 조직 내 모든 리소스에 대한 전체 접근 권한을 가지며, member 역할은 제한된 접근 권한을 가집니다. 예를 들어, 각 역할은 다음과 같은 권한을 가질 수 있습니다:

  • admin 역할:
    • read:data - 모든 조직 데이터 리소스에 대한 읽기 권한.
    • write:data - 모든 조직 데이터 리소스에 대한 쓰기 권한.
    • delete:data - 모든 조직 데이터 리소스에 대한 삭제 권한.
    • invite:member - 조직에 멤버 초대.
    • manage:member - 조직 내 멤버 관리.
    • delete:member - 조직에서 멤버 제거.
  • member 역할:
    • read:data - 모든 조직 데이터 리소스에 대한 읽기 권한.
    • write:data - 모든 조직 데이터 리소스에 대한 쓰기 권한.
    • invite:member - 조직에 멤버 초대.

이 작업은 Logto Console에서 쉽게 할 수 있습니다. 접근 제어 설정은 조직(멀티 테넌트) 아키텍처의 핵심 부분입니다.

사용자가 자신의 조직을 직접 관리할 수 있도록 하기

앱에는 여러 관리 기능이 필요할 수 있습니다. 이러한 기능을 구축하려면 Logto Management API를 사용하세요. 아래는 일반적인 기능과 관련 API 엔드포인트입니다. 다음 장에서는 이 기능들을 단계별로 구현하는 방법을 안내합니다.

관리자와 멤버가 다른 사용자를 초대할 수 있도록 하기

관리자와 멤버 모두 조직에 다른 사용자를 초대할 수 있습니다. 자세한 내용은 조직 멤버 초대하기를 참고하세요.

관리자가 멤버 역할을 수정할 수 있음

관리자는 다른 멤버의 역할을 수정할 수 있습니다. 또한 조직에 맞는 더 구체적인 역할(예: 부서장, 프로젝트 매니저, 코디네이터 등)을 생성할 수도 있습니다. 다음 Management API로 구현할 수 있습니다:

curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/users/{userId}/roles \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"organizationRoleIds":["admin"]}'

또는 여러 명을 한 번에 처리할 수도 있습니다:

curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/users/roles \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"userIds":["userId1", "userId2"],"organizationRoleIds":["admin"]}'

조직에 봇 추가하기

관리자가 특정 조직에 봇을 추가할 수 있도록 할 수도 있습니다. 먼저 기계 간 (M2M) 앱을 생성한 후, 이 M2M 앱을 봇으로 조직에 추가하세요.

curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/applications \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"applicationIds":["botAppId"]}'

그런 다음, 이 봇들에게 조직 역할을 할당할 수도 있습니다.

curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/applications/roles \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"applicationIds":["botApp1"],"organizationRoleIds":["botRoleId"]}'