RBAC 경계

Next.js RBAC 권한 전파와 보호 경계

RBAC는 UI 버튼 숨김이 아니라 세션, 서버 컴포넌트, Middleware, API, DB 질의가 같은 권한 모델을 공유해야 안전합니다.

01

세션 생성

로그인 시 사용자 ID, 역할, 조직, 권한 버전을 세션에 최소한으로 담습니다.

session
02

경로 보호

Middleware나 route group에서 보호 페이지 접근을 빠르게 차단합니다.

라우트 통과 기준
03

서버 검증

Server Component와 Server Action에서 실제 리소스 접근 권한을 다시 확인합니다.

서버 통과 기준
04

API 검증

Route Handler는 클라이언트 UI를 믿지 않고 역할과 소유권을 별도로 검사합니다.

API 통과 기준
05

데이터 제한

DB 질의에서 tenant, owner, role 조건을 빠뜨리지 않도록 repository 경계를 둡니다.

데이터 범위
UI
행동 힌트 제공 버튼 숨김은 사용자 경험용이며 보안 경계로 취급하지 않습니다.
보조 수단
Server
최종 권한 판정 민감 데이터 조회와 변경은 서버에서 역할과 리소스 소유권을 함께 봅니다.
필수 경계
DB
범위 누락 방지 조직 ID와 사용자 ID 조건을 쿼리 레벨에서 반복 가능하게 강제합니다.
multi-tenant 핵심

RBAC 점검 기준

직접 URL 접근 메뉴에 없어도 URL로 접근했을 때 서버가 차단해야 합니다.
역할 변경 반영 권한이 바뀐 사용자의 세션과 캐시가 오래된 권한을 유지하지 않아야 합니다.
소유권 검사 admin이 아닌 사용자는 같은 역할이어도 다른 사용자의 리소스에 접근하면 안 됩니다.