피드로 돌아가기
Coding Cat Oran Ep3, Five Tables Changed Everything
Dev.toDev.to
Security

Hardcoded Role Check를 RBAC 데이터 모델로 전환하여 권한 관리 유연성 확보

Coding Cat Oran Ep3, Five Tables Changed Everything

SysLayer2026년 4월 16일4intermediate

Context

비즈니스 요구사항이 복잡해짐에 따라 하드코딩된 if role == 'admin' 방식의 권한 체크 로직이 스파게티 코드로 변질된 상황. 부서별로 상이한 접근 제어 요구사항을 코드 수준에서 처리하며 유지보수 효율성이 급격히 저하됨.

Technical Solution

  • 권한을 코드가 아닌 데이터로 정의하는 RBAC(Role-Based Access Control) 디자인 패턴 도입
  • User, Role, Permission 및 두 개의 Mapping Table로 구성된 5-Table 관계형 데이터 모델 설계
  • '사용자 $\rightarrow$ 역할 $\rightarrow$ 권한'으로 이어지는 다대다(N:M) 관계 설정을 통한 권한 할당 구조 최적화
  • inventory:read, pricing:read와 같이 액션 단위로 Permission을 세분화하여 최소 권한 원칙 적용
  • 비즈니스 로직을 DB 스키마로 이관하여 코드 변경 없는 권한 수정 및 실시간 감사 추적(Audit Trail) 체계 구축

- 권한 체크 로직에 `if/else` 조건문이 반복된다면 RBAC 모델 도입 검토 - Permission을 단순한 역할명이 아닌 '리소스:액션' 형태의 데이터로 정의했는지 확인 - 권한 변경 이력을 관리하기 위해 매핑 테이블에 `granted_by`, `granted_at` 컬럼 추가 고려 - 비즈니스 룰(임계값, 권한 범위 등)을 코드 상수가 아닌 DB 테이블 값으로 관리하여 배포 없이 정책 변경 가능 구조 설계

원문 읽기