← ALL ENTRIES

접근제어(RBAC, ABAC)


인가 (Authorization)

인증(Authentication)이 완료된 후, 특정 리소스에 대한 접근 권한이 있는지 확인하는 절차

📝 NOTE 인증 vs 인가

  • 인증: 너 누구야? (로그인)
  • 인가: 너 이거 해도 돼? (권한 확인)

인가 설정은 크게 RBAC, ABAC으로 나눌 수 있음

RBAC (Role-Based Access Control)

  • 역할(Role) 기반으로 접근 권한을 부여
  • 사용자에게 직접 권한을 주는 게 아니라, 역할에 권한을 부여하고 사용자에게 역할을 할당
  • 구조: 사용자 → 역할 → 권한

예시

역할권한
ADMIN모든 리소스 읽기/쓰기/삭제
MANAGER리소스 읽기/쓰기
USER리소스 읽기만 가능

장점

  • 구조가 단순하고 이해하기 쉬움
  • 역할만 관리하면 되므로 대규모 조직에서 관리가 편함
  • Spring Security 등 대부분의 프레임워크에서 기본 지원

단점

  • 세밀한 제어가 어려움 — “본인이 작성한 글만 수정 가능” 같은 조건을 역할만으로 표현하기 힘듦
  • 역할이 많아지면 역할 폭발(Role Explosion) 문제 발생

ABAC (Attribute-Based Access Control)

  • 속성(Attribute) 기반으로 접근 권한을 판단
  • 사용자, 리소스, 환경 등 다양한 속성을 조합하여 정책을 정의
  • 구조: 정책(Policy) = 주체 속성 + 리소스 속성 + 환경 속성 + 행위

속성의 종류

구분예시
주체(Subject) 속성부서, 직급, 나이, 보안등급
리소스(Resource) 속성문서 분류, 생성자, 민감도
환경(Environment) 속성접속 시간, IP 대역, 디바이스
행위(Action)읽기, 쓰기, 삭제

예시

  • 인사팀 소속이고 사내 IP에서 접속한 경우에만 급여 데이터 열람 가능”
  • 본인이 작성한 게시글만 수정 가능”
  • 근무 시간 내에만 관리자 페이지 접근 가능”

장점

  • 매우 세밀한 접근 제어 가능
  • 역할 폭발 문제 없음
  • 동적 조건(시간, 위치 등)도 정책에 포함 가능

단점

  • 정책 설계와 관리가 복잡
  • 디버깅이 어려움 — 왜 접근이 거부됐는지 추적하기 힘듦
  • 구현 비용이 높음

RBAC vs ABAC 비교

구분RBACABAC
기준역할속성 (주체/리소스/환경)
세밀도낮음높음
관리 복잡도낮음높음
동적 조건불가가능
적합한 경우역할 구분이 명확한 시스템세밀한 정책이 필요한 시스템

💡 TIP 실무에서는 RBAC을 기본으로 사용하고, 세밀한 제어가 필요한 부분만 ABAC을 적용하는 하이브리드 방식이 일반적