개발자
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 접근 권한이 있기 때문에 정상적으로 처리가 가능하도록 해줘야합니다. 저의 짧은 지식이 작게나마 도움이 되시길 바라겠습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!