RBAC
RBAC(Role Based Access Control, 역할기반 접근통제)는 중앙 관리자가 사용자와 시스템의 상호관계를 통제하여, 조직 내에서 맡은 역할에 기초해 자원에 대한 접근을 제한하는 접근 통제 방식이다. 사용자에게 직접 권한을 주는 대신, 역할에 권한을 부여하고 사용자를 역할에 할당한다.
핵심 개념
- 사용자(User): 시스템을 사용하는 주체
- 역할(Role): 업무 기능을 대표하는 권한 묶음
- 권한(Permission): 자원에 대한 행위 허용
- 할당: 사용자 → 역할, 역할 → 권한
왜 RBAC인가
- 관리의 단순화: 인사 변동 시 역할만 바꾸면 권한이 함께 전환
- 최소 권한 구현: 역할을 직무 범위로 제한
- 감사·책임 추적: “누가 무엇을 할 수 있는가”를 정책으로 표현
- 규제 준수: ISO 27001, ISMS-P 등의 요구 사항에 부합
다른 모델과의 비교
| 모델 | 권한 결정 기준 |
|---|---|
| DAC | 자원 소유자의 재량 |
| MAC | 보안 등급(Label) |
| RBAC | 조직 정책상의 역할 |
| ABAC | 속성(Attribute) 기반 동적 판단 |
실무에서는 RBAC가 가장 널리 쓰이고, 복잡한 조건이 필요한 경우 ABAC와 혼합한다.
RBAC의 확장 모델 (NIST RBAC0~3)
- RBAC0: 기본 (사용자-역할-권한)
- RBAC1: 역할 계층 추가 (매니저 → 팀원 권한 상속)
- RBAC2: 제약 조건 추가 (역할 상호 배제, SoD)
- RBAC3: 계층 + 제약을 모두 갖춘 통합 모델
설계 시 고려
- 역할의 입도: 너무 세분화하면 관리 폭증, 너무 굵으면 최소 권한 위반
- 역할 폭발(Role Explosion): 조직이 커지면 역할 수 관리 문제
- 직무 분리(SoD): 동일인이 요청과 승인을 모두 할 수 없게
- 주기적 검토: 불필요해진 역할과 권한을 정기 정리
구현 예
- 클라우드(AWS IAM, GCP IAM, Azure RBAC)
- 운영체제 그룹 정책
- DB 권한 시스템(오라클, PostgreSQL)
- 애플리케이션 수준 권한 라이브러리