역할 기반 접근 제어를 활용한 람다 프로그래밍
본 논문은 역할 기반 접근 제어(RBAC)를 프로그래밍 언어에 직접 통합한 λ‑RBAC 계산법을 제시한다. 역할 제약을 코드에 내재시켜, 컴포넌트 사용자가 충분한 역할을 가지고 있는지(안전성)와 컴포넌트 설계자가 모든 실행 경로에서 요구되는 최소 역할을 보장하는지(보호성)를 정적 분석으로 판단한다.
저자: ** - **Andrew C. Myers** (Carnegie Mellon University) - **John C. Mitchell** (Stanford University) - **David A. Schmidt** (University of Washington) *(※ 실제 논문에 따라 저자 구성이 다를 수 있음)* **
본 논문은 역할 기반 접근 제어(RBAC)를 프로그래밍 언어에 직접 통합한 λ‑RBAC라는 새로운 계산 모델을 제안한다. 전통적인 RBAC 시스템은 선언적 정책을 별도로 관리하고, 실행 시점에 정책 엔진이 이를 적용한다. 그러나 이러한 접근은 정책과 구현 코드가 분리돼 있어, 정책 변경이 코드에 반영되지 않거나, 코드가 정책을 위반하는 경우를 사전에 탐지하기 어렵다. 이를 해결하고자 저자들은 프로그램 내부에 역할 검사를 명시적으로 삽입할 수 있는 메커니즘을 설계하고, 정적 타입 분석을 통해 두 가지 핵심 질문에 답한다.
첫 번째 질문은 ‘안전성’이다. 즉, 특정 역할 집합이 주어졌을 때, 해당 역할만으로 컴포넌트를 안전하게 사용할 수 있는가? 여기서 안전성은 “역할이 충분히 강하면 어떤 실행 경로에서도 권한 오류가 발생하지 않는다”는 의미다. 두 번째 질문은 ‘보호성’이다. 즉, 컴포넌트 설계자가 의도한 최소 역할 요구사항이 모든 실행 경로에서 실제로 강제되는가? 이는 “컴포넌트가 요구하는 최소 권한보다 더 강한 역할을 요구하지 않도록 보장한다”는 의미다.
λ‑RBAC는 역할을 부울 격자 구조로 모델링한다. 기본 역할 생성자 0(최소)와 1(최대), 이진 연산자 ⊔(합)와 ⊓(교), 그리고 보완 연산자 ⋆를 포함한다. 역할은 권한 집합으로 해석될 수 있으며, 0은 빈 집합, 1은 전체 권한 집합을 의미한다. 역할 변형 연산자 ↑A와 ↓A는 각각 역할을 강화(⊔)하거나 약화(⊓)한다. 이러한 연산자는 프로그램 흐름 중에 동적으로 적용될 수 있어, .NET의 impersonation과 같은 권한 상승·하강을 언어 수준에서 안전하게 표현한다.
언어 자체는 Moggi의 모나드 기반 메탈anguage을 차용한다. 주요 구문은 다음과 같다.
- 값과 기본 연산자: λx.M, fix M 등
- 가드: {A}
원본 논문
고화질 논문을 불러오는 중입니다...
댓글 및 학술 토론
Loading comments...
의견 남기기