개요편집이의 제기
역할 기반 접근 제어(Role-Based Access Control, RBAC)는 컴퓨터 시스템 보안에서 권한이 있는 사용자로 시스템 접근을 제한하는 정책 중립적인 접근 제어 메커니즘이다. 사용자에게 직접 권한을 할당하는 대신 역할(Role)을 매개로 권한을 부여함으로써, 대규모 조직에서 수백 명의 사용자와 수천 개의 권한을 효율적으로 관리할 수 있게 한다. NIST(미국 국립표준기술연구소)의 연구에 따르면 RBAC는 상업 및 정부 조직의 많은 보안 요구 사항을 충족하며, 강제적 접근 제어(MAC) 또는 재량적 접근 제어(DAC) 프레임워크와는 다르지만 이러한 정책을 복잡하지 않게 적용할 수 있다[1][2][3].
역사·유래편집이의 제기
RBAC가 개발되기 전에는 벨-라파둘라(Bell-LaPadula, BLP) 모델이 MAC의 동의어였고, 파일 시스템 권한은 DAC의 동의어로 간주되었다. 이 두 모델은 접근 제어를 위한 유일한 알려진 모델로 여겨져, BLP가 아니면 DAC로 분류되는 이분법적 인식이 지배적이었다. 1990년대 후반 NIST 주도의 연구를 통해 RBAC가 이 두 범주 중 어디에도 속하지 않는 독자적인 모델임이 입증되었다[2][3]. NIST는 1990년대 연구에서 RBAC가 상업 및 정부 조직의 다양한 요구를 충족함을 실증했으며, 2004년에는 NIST/ANSI/INCITS 표준(ANSI/INCITS 359-2004)으로 공식 채택되었다[2][3]. 이후 NIST SP 800-53 등 미국 연방 기관 보안 표준과 PCI DSS, HIPAA 등 산업 규제에서도 RBAC가 필수적 접근 방식으로 자리잡았다[3].
작동 방식과 유형편집이의 제기
핵심 구성 요소와 규칙
RBAC 모델은 다음과 같은 기본 요소로 구성된다[2][3].
주체(Subject, S): 사람 또는 자동화된 에이전트
역할(Role, R): 권한 수준을 정의하는 직무 또는 직함
권한(Permission, P): 리소스에 대한 접근 모드 승인
세션(Session, SE): S, R, P를 포함하는 매핑
주체 할당(Subject Assignment, SA): 주체와 역할의 다대다 관계 (SA ⊆ S × R)
권한 할당(Permission Assignment, PA): 권한과 역할의 다대다 관계 (PA ⊆ P × R)
역할 계층(Role Hierarchy, RH): 부분 순서 집합으로, 상위 역할이 하위 역할의 권한을 상속 (RH ⊆ R × R, 표기법: x ≥ y는 x가 y의 권한을 상속함을 의미)
RBAC에는 세 가지 주요 규칙이 정의되어 있다[2][3].
1. 역할 할당(Role Assignment): 주체는 역할을 선택하거나 할당받은 경우에만 권한을 행사할 수 있다.
2. 역할 승인(Role Authorization): 주체의 활성 역할은 해당 주체에게 승인되어야 한다. 이 규칙과 규칙 1을 통해 사용자는 승인된 역할만 맡을 수 있다.
3. 권한 승인(Permission Authorization): 주체는 해당 주체의 활성 역할에 대해 권한이 승인된 경우에만 권한을 행사할 수 있다. 규칙 1, 2와 함께 이 규칙은 사용자가 승인된 권한만 행사하도록 보장한다.
추가적인 제약 조건(Constraint)을 적용할 수 있으며, 역할은 상위 역할이 하위 역할의 권한을 포함하는 계층으로 결합될 수 있다. 역할 계층과 제약 조건을 통해 격자 기반 접근 제어(LBAC)를 생성하거나 시뮬레이션할 수 있으므로, RBAC는 LBAC의 상위 집합으로 간주된다[2][3]. 주체는 서로 다른 역할을 가진 여러 개의 동시 세션을 가질 수 있다.
표준화된 세 가지 수준
NIST/ANSI/INCITS RBAC 표준(2004)은 다음과 같은 세 가지 수준을 인정한다[2][3].
핵심 RBAC(Core RBAC): 기본적인 역할-권한, 사용자-역할 할당과 세 가지 주요 규칙을 포함하는 최소 모델
계층적 RBAC(Hierarchical RBAC): 핵심 RBAC에 역할 간의 상속 지원(역할 계층)을 추가한 모델
제약된 RBAC(Constrained RBAC): 계층적 RBAC에 업무 분리(Separation of Duties, SoD) 제약 조건을 추가한 모델
제약 조건과 업무 분리
제약 조건은 반대되는 역할에서 권한의 잠재적 상속에 제한적인 규칙을 적용하여 적절한 업무 분리를 달성하는 데 사용된다. 예를 들어, 동일한 사람이 로그인 계정을 생성하고 계정 생성을 승인하는 것을 허용하지 않는 것이 대표적이다[2][3]. 업무 분리의 기본 원칙은 어떤 개인도 이중 특권으로 인해 보안 침해를 일으킬 수 없어야 하며, 어떤 사람도 동시에 보유하는 다른 역할에 대한 감사, 통제 또는 검토 권한을 행사하는 역할을 가질 수 없어야 한다는 것이다[2][3].
다른 접근 제어 모델과의 관계
DAC/MAC 구현: RBAC는 유연한 접근 제어 기술로, DAC나 MAC을 구현하는 데 사용될 수 있다. 그룹이 있는 DAC(예: POSIX 파일 시스템)는 RBAC를 모방할 수 있으며, 역할 그래프가 부분 순서 집합 대신 트리로 제한되면 MAC은 RBAC를 시뮬레이션할 수 있다[2][3].
ACL과의 비교: 접근 제어 목록(ACL)은 기존 DAC 시스템에서 저수준 데이터 객체에 영향을 미치는 데 사용된다. RBAC는 여러 개체 간의 직접적인 관계를 변경하는 작업(Operation)에 권한을 할당한다는 점에서 ACL과 다르다. 예를 들어 ACL은 특정 시스템 파일에 대한 쓰기 접근을 허용/거부하지만, 해당 파일이 어떻게 변경될 수 있는지는 지시하지 않는다. 반면 RBAC 기반 시스템에서 작업은 금융 애플리케이션의 '신용 계정 생성' 트랜잭션이나 의료 애플리케이션의 '혈당 수치 테스트 기록 작성'과 같은 비즈니스 단위의 연산이 된다. 역할은 더 큰 활동 내의 일련의 작업으로 이해된다[2][3]. 최소 RBAC 모델(RBACm)은 ACL에서 그룹만 엔트리로 허용되는 ACLg와 동등함이 바클리(Barkley, 1997)에 의해 입증되었다[2][3]. ACL 데이터는 데이터 교환과 고수준 비교를 위해 XACML로 변환될 수 있다[2][3].
속성 기반 접근 제어(ABAC): RBAC에서 발전한 모델로, 역할 및 그룹 외에 사용자 속성(시민권, 보안 허가 등), 리소스 속성(분류, 부서, 소유자 등), 작업 속성, 컨텍스트 속성(시간, 위치, IP 등)을 추가로 고려한다. ABAC는 정적 권한 대신 정책을 사용하여 허용/거부를 정의하므로 정책 기반(Policy-based) 모델로 불린다[2][3].
관계 기반 접근 제어(ReBAC): RBAC에서 발전한 모델로, 주체가 리소스에 접근할 수 있는 권한을 해당 주체와 리소스 간의 관계 존재 여부에 따라 정의한다. 소셜 네트워크에서 사용자가 특정 다른 사용자와 게시물을 공유하는 것과 같이 세분화된 권한을 허용하는 것이 장점이다[2][3].
상황 기반 접근 제어(CBAC): RBAC와 달리 메시지 컨텍스트(예: 연결 소스)를 고려한다[2][3].
사례편집이의 제기
자료에 구체적인 게임이나 애플리케이션 사례는 명시되지 않았으나, RBAC는 단일 시스템 또는 애플리케이션 내에서 사용자 권한을 관리하기 위한 모범 사례로 널리 받아들여지고 있다[2][3]. 이질적인 IT 인프라와 수십 또는 수백 개의 시스템 및 애플리케이션에 걸쳐 있는 요구 사항을 가진 조직에서는 역할의 계층적 생성 및 권한 할당 없이 RBAC를 관리하는 것이 극도로 복잡해지며, 최신 시스템은 이전 NIST RBAC 모델을 확장하여 전사적 배포의 한계를 해결하고 있다[2][3].
주요 적용 표준 및 규제 사례는 다음과 같다[3].
NIST SP 800-53: 미국 연방 기관 정보 보안 표준, 접근 집행 통제(AC-3(7))에 RBAC 포함
CIS Controls: 모범 사례 집합, 통제 6(접근 제어 관리) 이행을 위해 RBAC 활용
HIPAA (45 CFR 164.312): 미국 의료정보보호법, 전자 보호 건강 정보에 대한 기술적 보호 조치로 접근 제어 요구, RBAC가 업계 대표적 접근 방식
PCI DSS 요구사항 7: 시스템 구성요소와 카드소유자 데이터에 대한 접근을 업무상 필요한 개인으로 제한, 권한 할당을 개인의 직무 분류와 기능에 기반하도록 요구
이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.