역할 기반 접근 제어 (RBAC)
Jan 27, 2026
핵심 개념
섹션 제목: “핵심 개념”역할 기반 접근 제어(Role-Based Access Control, RBAC)는 권한을 사용자에게 직접 부여하는 대신, **역할(Role)**이라는 중간 계층을 두어 접근을 제어하는 방식이다. 사용자는 역할에 연결되고, 역할에 권한이 할당된다.
전통적인 superuser/root 모델은 하나의 계정에 모든 권한이 집중되어 있어, 최소 권한 원칙(Principle of Least Privilege)을 위반한다. RBAC는 이 문제를 해결한다.
동작 원리
섹션 제목: “동작 원리”RBAC 구조
섹션 제목: “RBAC 구조”┌──────────┐ 할당 ┌──────────┐ 할당 ┌──────────┐│ 사용자 │ ──────────→ │ 역할 │ ──────────→ │ 권한 ││ │ │ │ │ ││ 김철수 │ ──→ DB관리자 │ DB관리자 │ ──→ DB접근 │ DB 읽기 ││ 이영희 │ ──→ 개발자 │ 개발자 │ ──→ 코드배포 │ DB 쓰기 ││ 박민수 │ ──→ 감사자 │ 감사자 │ ──→ 로그조회 │ 배포 실행 │└──────────┘ └──────────┘ └──────────┘RBAC의 세 가지 요소
섹션 제목: “RBAC의 세 가지 요소”| 요소 | 설명 | 예시 |
|---|---|---|
| 권한 (Privilege) | 시스템 콜 실행 권한 또는 특정 옵션 사용 권한 | 파일 읽기, 네트워크 설정, 프로세스 종료 |
| 역할 (Role) | 권한들의 집합 + 해당 역할로 실행할 프로그램들 | DB관리자 = {DB접근, 백업, 복구} |
| 사용자-역할 연결 | 사용자에게 역할을 할당하거나, 역할에 암호를 부여 | 김철수 → DB관리자 역할 |
장점과 단점
섹션 제목: “장점과 단점”| 구분 | 내용 |
|---|---|
| 장점 | 최소 권한 원칙 구현 가능 |
| superuser의 위험성 감소 (root 권한 세분화) | |
| 감사(audit) 용이 — 누가 어떤 역할로 무엇을 했는지 추적 | |
| 사용자 변경 시 역할만 재할당하면 됨 | |
| 단점 | 역할 설계의 복잡성 — 조직 구조를 정확히 반영해야 함 |
| 역할 폭발(Role Explosion) — 세분화할수록 역할 수가 급증 | |
| 예외 처리가 어려움 — 역할에 맞지 않는 임시 권한 부여 |
Solaris의 RBAC 적용
섹션 제목: “Solaris의 RBAC 적용”Solaris는 기존의 root 권한을 세분화된 역할로 분리했다.
기존: root → 모든 시스템 권한
RBAC 적용 후: ├─ 네트워크관리자 → {네트워크 설정, 방화벽 관리} ├─ 사용자관리자 → {계정 생성, 암호 초기화} ├─ 보안관리자 → {감사 로그, 보안 정책 설정} └─ 백업관리자 → {백업 실행, 복구}관리자가 네트워크를 설정하려면 네트워크관리자 역할로만 작업하면 된다. 실수로 사용자 계정을 삭제하거나 보안 정책을 변경할 위험이 없다.
Linux 세분화 예시
섹션 제목: “Linux 세분화 예시”# 전통적 방식: root로 모든 것을 실행sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# RBAC 방식: 네트워크 권한만 가진 역할로 실행# CAP_NET_ADMIN 능력만 부여된 사용자capsh --caps="cap_net_admin+ep" -- -c "iptables -A INPUT -p tcp --dport 80 -j ACCEPT"