개발자
jwt내에 user role(guest,user,admin 등)관련 정보가 존재하는 상태에서 api gateway에서 jwt decode후 api를 rbac처리 하고자 합니다. 질문은 아래와 같습니다. rest api에 명시적으로 어떤 권한의 사용자가 사용할수 있는지 작성해서 필터링하는지 아니면 api gateway에서 api각각이 어느 role까지 접근할수 있는지 매핑해두고 필터링하는지 여쭤보고싶습니다.
답변 1
안녕하세요! 아시겠지만, RBAC 는 역할(Role) 기반 엑세스 제어로 사용자에게 하나 이상의 역할(Role)을 할당하고 각 역할마다 특정 Resource 에 접근할 권한을 부여하여 이에 맞게 접근할 수 있도록 처리합니다. 권한이나 역할 그리고 이러한 역할을 부여할 계정을 어떻게 정의하실지 모르겠지만, Rest API 의 endpoint 가 접근 권한을 부여할 수 있는 하나의 Resource 들로 구성이 될것이고 생성하신 역할(Role)마다 이러한 Rest API Endpoint 접근에 대한 권한을 각각 부여하시게 될 것입니다. 그러면 API Gateway 에서는 인증을 통해 접근한 계정의 Role 정보를 조회하여 접근한 API 의 권한이 있는 Role 인지를 판단하여 필터링을 해야합니다. 예를 들어 다음과 같이 계정과 Role 을 생성하여 맵핑시켰다고 가정하겠습니다. - Admin : Administrator Role, Service Read/Write Role - User : Service Read/Write Role - Guest : Service Read Only Role Administrator Role 은 실제 시스템에 관련된 API endpoint 에 접근이 가능하고, Service Read/Write 는 서비스 API endpoint 중 CRUD 기능을 하는 API 접근이 가능, Service Read Only 는 서비스 API endpoint 중 Read API(GET Method) API 접근이 가능하도록 권한을 부여합니다. 만약 Guest 계정의 사용자가 "DELETE /api/v1/service/object" 라는 Service Write 기능에 해당하는 API 를 호출한다면, API Gateway 는 Guest 계정이 부여받은 Role 을 조회해보고 Read Only Role 의 권한이 Read API 밖에 접근 권한이 없기 때문에 해당 호출을 반려시킬 수 있습니다. 반대로 Admin 계정이 동일하게 API 를 호출했을 때 Admin 이 부여받은 Role 은 Administrator, Service Read/Write 2개가 조회될 것이고 이중 Service Read/Write Role 에 대한 API Endpoint 접근 권한이 있기 때문에 정상적으로 처리가 가능하도록 해줘야합니다. 저의 짧은 지식이 작게나마 도움이 되시길 바라겠습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 07월 07일
RBAC 처리 방식은 사용자가 구현하는 시스템에 따라 다르지만 일반적으로 이러한 과정을 처리하는 두 가지 주요 방법이 있습니다: 1. **명시적으로 REST API에 권한 정보를 작성:** 이 방식에서는 각 API 엔드포인트에서 JWT 토큰을 분석하여 해당 사용자가 요청한 작업을 수행할 수 있는 권한이 있는지 확인합니다. 이는 상황에 따라 강력할 수 있지만, 복잡성과 여러 엔드포인트간의 일관성 유지가 어려울 수 있다는 단점이 있습니다. 2. **API Gateway에서 매핑:** 이 방식은 일종의 중앙 집중화된 접근 제어를 제공하며, 모든 인증/권한 확인 로직이 하나의 곳(API Gateway)에서 관리됩니다. API Gateway는 들어오는 요청을 검사하고 필요한 경우 해당 요청을 거부하거나 통과시킬 수 있습니다. 위 두 가지 옵션 중 어느 것이 최선인지 결정하는 것은 많은 요소에 따라 달라질 수 있습니다. 예를 들어, 시스템의 복잡도, 개발 및 유지 관리 비용, 보안 요구 사항 등을 고려해야 합니다. 또한, 두 방법을 결합하여 사용할 수도 있습니다. 예를 들어, API Gateway에서 기본적인 권한 확인을 수행하고, 추가적인 세부 권한 확인은 개별 서비스에서 수행하는 것입니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!