Logto에서 RBAC를 분석하는 방법: 포괄적인 실제 사례
이 기사에서는 Logto의 역할 기반 접근 제어 (RBAC)를 정안하는 범위한 지침을 제공하며, 온라인 서점 사례를 통해 핵심 사용자 역할, 범위, 프론트엔드 및 백엔드 애플리케이션에 Logto의RBAC기능을 통합하는 방법을 탐색합니다.
서론
접근 제어 및 보안은 현대 애플리케이션의 필수적인 측면이며, 사용자가 자원에 적절한 접근 권한을 가지고 있는지 확인합니다. Logto의 역할 기반 접근 제어 (RBAC)는 개발자에게 애플리케이션의 접근 제어와 보안을 관리하는 효과적인 방법을 제공합니다. 이 기사에서는 실제 예제를 사용하여 Logto의 RBAC 구현의 강력한 기능을 탐색하고, 이러한 개념을 프로젝트에 이해하고 적용하는 데 도움이 됩니다.
프론트엔드와 백엔드 코드 스니펫을 모두 검토하면, 애플리케이션 스택에 Logto의 RBAC를 통합하는 데 대한 포괄적인 시각을 얻을 수 있습니다. 이 기사를 마칠 때쯤에는 Logto의 RBAC 기능을 활용하여 프로젝트의 보안 및 접근 제어를 강화하는 데 잘 준비되어 있을 것입니다.
BookHarber 소개: 온라인 서점 사례
Logto의 RBAC 기능을 효과적으로 보여주기 위해, 우리는 실제 예시를 사용할 것입다: BookHarber, 온라인 서점. BookHarber는 고객과 직원을 위해 광범위한 기능을 제공하며, 이는 원활하고 안전한 쇼핑 경험을 보장합니다.
BookHarber의 주요 기능은 다음과 같습니다:
- 책 탐색 및 구매: 사용자는 다양한 장르와 작가의 동양 모음에서 쉽게 책을 검색하여 구매할 수 있습니다.
- 주문 관리 및 물류 추적: 등록된 고객은 주문을 관리하고, 배송을 추적하고, 구매에 대한 업데이트를 받을 수 있습니다.
- 특별한 제안 및 휴일 활동: BookHarber는 고객을 참여시키고보상하는 특별한 이벤트 및 휴일 동안 고유한 할인 및 프로모션을 제공합니다.
- 고객 지원: 고객은 부담이나 문제를 해결하기 위해 지원 티켓을 열 수 있으며, BookHarber 직원으로부터 즉시 도움을 받을 수 있습니다.
- 고객 관리: 다양한 역할을 가진 직원들이 플랫폼의 다양한 측면을, 예를 들어 고객 계정, 주문 처리, 문제 해결 등을 관리할 수 있는 능력을 가지고 있습니다.
역할
BookHarber 생태계에서 우리는 다음과 같은 몇 가지 주요 사용자 역할을 식별할 수 있습니다.
- 손님: 웹사이트를 검색하고, 책을 찾아보며, 특별한 제안을 볼 수 있는 등록되지 않은 사용자들.
- 고객: 책을 구매하고, 주문을 관리하며, 물류를 추적하고, 지원 티켓을 열 수 있는 등록된 사용자들.
- 상점 관리자: 전체 관리와 플랫폼 운영을 총괄하는 직원들. 전체 접근 권 한이 있습니다.
- 책 관리자: 책과 카테고리 관리를 담당하는 직원들.
- 고객 서비스 에이전트: 지원 티켓에 응답하는 직원들.
- 제3자 물류 공급자: 주문의 배송과 추적을 관리하는 외부 파트너들.
- 마케팅 직원: BookHarber를 홍보하며, 특별한 제안과 이벤트를 관리하는 직원들.
BookHarber REST API를 위한 범위 설계
BookHarber에 대해 Logto의 RBAC 시스템을 효과적으로 구현하기 위해, 우리는 다양한 REST API에 대응하는 범위를 설계해야 합니다. 범위는 각 API 엔드포인트에 대해 특정 역할이 가지는 접근 레벨을 정의하는 권한입니다. 적절한 범위를 각 사용자 역할에 할당함으로써, 우리는 사용자가 그들의 역할에 관련된 행동과 자원에만 접근 권한을 가지도록 할 수 있습니다.
다음 REST API에 대해 범위를 설계해봅시다:
- 카테고리 API:
create:categories
: POST /categorieswrite:categories
: PUT /categories/:iddelete:categories
: DELETE /categories/:idlist:categories
: GET /categories
- 책 API:
create:books
: POST /bookswrite:books
: PUT /books/:iddelete:books
: DELETE /books/:idlist:books
: GET /booksread:books
: GET /books/:id
- 고객 API:
list:customers
: GET /customerswrite:customers
: PUT /customers/:iddelete:customers
: DELETE /customers/:idread:customers
: GET /customers/:id
- 주문 API:
create:orders
: POST /orderslist:orders
: GET /ordersread:orders
: GET /orders/:idwrite:orders
: PUT /orders/:id
- 이벤트 API:
create:events
: POST /eventswrite:events
: PUT /events/:idlist:events
: GET /eventsdelete:events
: DELETE /events/:id
- 주문 추적 API:
read:orderTracks
: GET /orders/:id/trackscreate:orderTracks
: POST /orders/:id/trackswrite:orderTracks
: PUT /orders/:id/tracks/:trackId
- 티켓 API:
create:tickets
: POST /ticketslist:tickets
: GET /ticketsread:tickets
: GET /tickets/:idwrite:tickets
: PUT /tickets/:id
역할에 범위 할당
이제 각 REST API에 대해 적절한 범 위를 정의했으므로, 이 범위들을 BookHarber 생태계의 관련 사용자 역할에 할당할 수 있습니다:
범위 | 손님 | 고객 | 상점 관리자 | 책 관리자 | 고객 서비스 에이전트 | 제3자 물류 공급자 | 마케팅 직원 |
---|---|---|---|---|---|---|---|
create:categories | ✓ | ✓ | |||||
write:categories | ✓ | ✓ | |||||
delete:categories | ✓ | ✓ | |||||
list:categories | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
create:books | ✓ | ✓ | |||||
write:books | ✓ | ✓ | |||||
delete:books | ✓ | ✓ | |||||
list:books | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
read:books | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
list:customers | ✓ | ✓ | |||||
write:customers | ✓ | ||||||
delete:customers | ✓ | ||||||
read:customers | ✓ | ✓ | |||||
create:orders | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
list:orders | ✓ | ||||||
read:orders | ✓ | ✓ | |||||
write:orders | ✓ | ||||||
create:events | ✓ | ✓ | |||||
write:events | ✓ | ✓ | |||||
list:events | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
delete:events | ✓ | ✓ | |||||
read:orderTracks | ✓ | ✓ | ✓ | ||||
create:orderTracks | ✓ | ✓ | |||||
write:orderTracks | ✓ | ✓ | |||||
create:tickets | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
list:tickets | ✓ | ✓ | |||||
read:tickets | ✓ | ✓ | |||||
write:tickets | ✓ | ✓ |
"list"와 "read" 범위 간의 차이 이해
REST API 디자인 및 RBAC의 상황에서 "list"와 "read" 범위 간의 차이점을 더욱 명확하게 설명하기 위해, 온라인 서점인 BookHarber와 관련된 실제 사례를 고려해 봅시다.
BookHarber에는 두 종류의 사용자가 있다고 가정해 보겠습니다: 고객과 고객 서비스 에이전트. 고객은 주문을 작성할 수 있고, 고객 서비스 에이전트는 고객이 주문을 도와야 합니다. 이 시나리오에서 orders
API 리소스에 "list"와 "read" 범위가 어떻게 적용되는지 살펴보겠습니다.
- List 범위: "list" 범위는 사용자가 시스템 내의 엔터티 콜렉션에 접근할 수 있도록 허용합니다. 예를 들어,
list:orders
범위는 사용자가 사용 가능한 모든 주문의 목록을 볼 수 있게 합니다. BookHarber의 상황에서, 이 범위는 상점 관리자나 시스템 내 전체 주문에 대해 개요를 숙지해야 하는 다른 직원들에게 유용할 수 있습니다. 그러나 고객 서비스 에이전트는 개별 고객이 그들의 특정한 주문에 대한 도움을 받는 것이기 때문에 전체 주문 목록에는 접근할 수 없어야 합니다. - Read 범위: "read" 범위는 사용자에게 주어진 ID를 가진 단일 엔터티에 접근하는 권한을 주고 있습니다. 예를 들어,
read:orders
범위는 사용자가 ID에 의해 특정 주문에 대한 세부 정보를 볼 수 있게 합니다. BookHarber의 경우, 이 범위는 특정 고객의 주문에 대한 정보에 접근해야 하는 고객 서비스 에이전트에게 이상적입니다. 고객이 지원 티켓을 열면, 고객 서비스 에이전트는 티켓에 제공된 주문 ID를 사용하여 해당 주문의 세부 정보에 접근하고 볼 수 있습니다.