RBAC

역할 기반 접근 제어 모델

RBAC(Role-Based Access Control)는 사용자에게 역할을 부여하고, 역할에 권한을 묶는 접근 제어 모델. 단순하고 관리 쉽지만 조건이 세밀해지면 역할이 폭발적으로 늘어난다.

RBAC

개념

RBAC는 **역할(role)**을 중간 층으로 두는 접근 제어 모델이다. 사용자에게 권한을 직접 주는 대신 역할을 부여하고, 역할에 권한을 묶는다. 웹 서비스·클라우드 인프라에서 가장 흔히 쓰는 모델.

사용자 → 역할(Role) → 권한(Permission)

admin/editor/viewer처럼 나누고 새 사용자에겐 역할만 부여한다. 권한 관리 단위가 "사람 수"에서 "역할 수"로 줄어드는 게 핵심.

왜 필요한가

권한을 사용자마다 직접 주면 두 가지 문제가 생긴다.

  • 관리 비용 — 사용자 100명에 권한 50개면 개별 매핑이 5000개. 역할로 묶으면 "admin/editor/viewer" 3개만 관리
  • 일관성 — "editor는 글 수정 가능"을 한 곳에서 정의하니 실수가 줄어든다

예시

  • admin — 모든 API 접근 가능
  • editor — 글 작성, 수정, 삭제
  • viewer — 읽기만 가능

장단점

  • 단순하고 관리하기 쉬움
  • 조건이 복잡해지면 역할이 폭발적으로 늘어남 (role explosion)
  • "engineering 부서의 시니어만 프로덕션 배포 가능"처럼 속성 조합 조건은 RBAC만으로 어려움

role explosion이 시작되면 ABACOPA 같은 속성/정책 기반 모델을 섞는 걸 검토한다.

쓰는 곳

  • Kubernetes RBAC (사용자 → role → verb/resource)
  • AWS IAM (정책을 role에 attach)
  • Keycloak realm/client role
  • 대부분의 웹 서비스 권한 시스템

더 보기

  • ABAC — 역할이 아니라 속성 조합으로 판단하는 모델
  • OPA — 정책을 코드에서 분리해서 관리하는 엔진
  • 멀티테넌트-RBAC-설계 — 테넌트 격리와 역할 계층을 분리하는 패턴
  • OAuth-OIDC-SAML — RBAC의 "사용자"가 어떻게 인증되는가
sunshinemoon · 2026