속성 기반 접근 제어

**속성 기반 접근 제어**(, **ABAC**)는 IAM을 위한 **정책 기반 접근 제어**(policy-based access control)라고도 불리며, 주체의 작업 수행 권한이 주체, 객체, 요청된 작업과 관련된 속성 및 경우에 따라 환경 속성을 평가하여 결정되는 접근 제어 패러다임을 정의한다.

ABAC은 분산되거나 빠르게 변화하는 환경에서 사용하기에 적합하도록 광범위한 속성을 사용하여 높은 적응성과 맞춤 설정이 가능한 접근 제어 정책 구현 방식이다. ABAC으로 구현할 수 있는 정책의 유일한 제한 사항은 계산 언어의 기능과 관련 속성의 가용성이다. ABAC 정책 규칙은 주체의 속성, 객체의 속성 및 환경 속성에 대한 부울 함수로 생성된다.

특정 권한 집합이 부여되고 주체가 할당되는 역할 기반 접근 제어(RBAC)와 달리, ABAC은 다양한 속성을 평가할 수 있는 복잡한 규칙 집합을 표현할 수 있다. ABAC은 일관된 주체 및 객체 속성을 보안 정책으로 정의함으로써 ABAC이 아닌 접근 방식에서 필요한 개별 주체에 대한 명시적 권한 부여를 제거하여 접근 목록 및 그룹 관리의 복잡성을 줄인다.

속성 값은 집합 값 또는 원자 값일 수 있다. 집합 값 속성은 하나 이상의 원자 값을 포함한다. 예시는 역할 및 프로젝트이다. 원자 값 속성은 하나의 원자 값만 포함한다. 예시는 보안 등급 및 민감도이다. 속성은 정적 값 또는 서로 비교될 수 있어 관계 기반 접근 제어를 가능하게 한다.

개념 자체는 수년 동안 존재했지만, ABAC은 동적이고 상황 인식적이며 위험 지능적인 리소스 접근 제어를 제공하여 여러 다른 정보 시스템의 특정 속성을 포함하는 접근 제어 정책을 정의하여 권한 부여를 해결하고 효율적인 규정 준수를 달성함으로써 기업이 기존 인프라를 기반으로 구현에 유연성을 가질 수 있도록 하기 때문에 "차세대" 권한 부여 모델로 간주된다.

속성 기반 접근 제어는 때때로 **정책 기반 접근 제어**(policy-based access control, **PBAC**) 또는 마이크로소프트 고유 용어인 **클레임 기반 접근 제어**(claims-based access control, **CBAC**)라고도 불린다. ABAC을 구현하는 주요 표준은 XACML 및 ALFA (XACML)이다.

## 속성 기반 접근 제어의 차원
ABAC은 다음으로 볼 수 있다.
* 외부화된 권한 관리
* 동적 권한 관리
* 정책 기반 접근 제어
* 세분화된 권한 부여

## 구성 요소
### 아키텍처
ABAC은 권장 아키텍처를 제공하며 다음과 같다.
# PEP (Policy Enforcement Point): ABAC을 적용하려는 앱 및 데이터를 보호하는 역할을 한다. PEP는 요청을 검사하고 PDP로 보내는 권한 요청을 생성한다.
# PDP (Policy Decision Point)는 아키텍처의 핵심이다. 이는 구성된 정책에 따라 들어오는 요청을 평가하는 부분이다. PDP는 허용/거부 결정을 반환한다. PDP는 누락된 메타데이터를 검색하기 위해 PIP를 사용할 수도 있다.
# PIP (Policy Information Point)는 PDP를 외부 속성 소스(예: LDAP 또는 데이터베이스)에 연결한다.

### 속성
속성은 무엇이든 될 수 있다. 주로 4가지 범주로 나뉜다.
# 주체 속성: 접근을 시도하는 사용자를 설명하는 속성(예: 나이, 보안 등급, 부서, 역할, 직함)
# 작업 속성: 시도되는 작업을 설명하는 속성(예: 읽기, 삭제, 보기, 승인)
# 객체 속성: 접근되는 객체(또는 리소스)를 설명하는 속성(예: 객체 유형(의료 기록, 은행 계좌), 부서, 분류 또는 민감도, 위치)
# 상황(환경) 속성: 접근 제어 시나리오의 시간, 위치 또는 동적 측면을 다루는 속성

### 정책
정책은 속성들을 모아 무엇이 허용되고 허용되지 않는지 표현하는 문장이다. ABAC의 정책은 허용 정책 또는 거부 정책일 수 있다. 정책은 또한 로컬 또는 전역일 수 있으며 다른 정책을 재정의하는 방식으로 작성될 수 있다. 예시는 다음과 같다.
# 문서가 사용자와 같은 부서에 있는 경우 사용자는 문서를 볼 수 있다.
# 사용자가 소유자이고 문서가 초안 모드인 경우 사용자는 문서를 편집할 수 있다.
# 오전 9시 이전 접근 거부
ABAC을 사용하면 다양한 시나리오와 기술을 충족하는 무제한의 정책을 가질 수 있다.

## 기타 모델
역사적으로 접근 제어 모델에는 강제적 접근 제어(MAC), 임의적 접근 제어(DAC), 그리고 최근에는 역할 기반 접근 제어(RBAC)가 포함되었다. 이 접근 제어 모델은 사용자 중심적이며 리소스 정보, 사용자(요청 엔터티)와 리소스 간의 관계, 동적 정보(예: 시간 또는 사용자 IP)와 같은 추가 매개변수를 고려하지 않는다.

ABAC은 요청 엔터티(사용자), 대상 객체 또는 리소스, 원하는 작업(보기, 편집, 삭제) 및 환경 또는 상황 정보를 설명하는 속성을 기반으로 접근 제어를 정의함으로써 이를 해결하려고 한다. 이것이 접근 제어가 속성 기반이라고 불리는 이유이다.

## 구현
ABAC의 주요 구현은 세 가지이다.
* OASIS XACML
* 간략화된 권한 부여 언어(ALFA).
* NIST의 차세대 접근 제어(NGAC)

eXtensible Access Control Markup Language인 XACML은 아키텍처(ALFA 및 NGAC와 공유), 정책 언어 및 요청/응답 스키마를 정의한다. 속성 관리(사용자 속성 할당, 객체 속성 할당, 환경 속성 할당)는 전통적인 IAM 도구, 데이터베이스 및 디렉터리에 맡겨진다.

미국 군대의 모든 지부를 포함한 기업들은 ABAC을 사용하기 시작했다. 기본 수준에서 ABAC은 데이터를 사용자에게 할당하는 대신 '만약/그러면/그리고' 규칙으로 데이터를 보호한다. 미국 상무부는 이를 의무적인 관행으로 만들었으며 채택은 여러 정부 및 군 기관 전반으로 확산되고 있다.

## 응용
ABAC 개념은 기술 스택의 모든 수준과 기업 인프라에 적용될 수 있다. 예를 들어, ABAC은 방화벽, 서버, 애플리케이션, 데이터베이스 및 데이터 계층에서 사용될 수 있다. 속성 사용은 접근 요청의 정당성을 평가하고 접근을 허용하거나 거부하는 결정에 추가 컨텍스트를 제공한다.

ABAC 솔루션을 평가할 때 중요한 고려 사항은 성능에 대한 잠재적인 오버헤드와 사용자 경험에 미치는 영향을 이해하는 것이다. 제어가 세분화될수록 오버헤드가 더 높을 것으로 예상된다.

### API 및 마이크로서비스 보안
ABAC은 API 메서드 또는 함수에 속성 기반의 세분화된 권한 부여를 적용하는 데 사용될 수 있다. 예를 들어, 은행 API는 approveTransaction(transId) 메서드를 노출할 수 있다. ABAC은 호출을 보호하는 데 사용될 수 있다. ABAC을 사용하면 정책 작성자가 다음을 작성할 수 있다.
* **정책**: 관리자는 승인 한도 내에서 트랜잭션을 승인할 수 있다.
* **사용된 속성**: 역할, 작업 ID, 객체 유형, 금액, 승인 한도.

흐름은 다음과 같다.
# 사용자 앨리스가 API 메서드 approveTransaction(123)을 호출한다.
# API는 호출을 수신하고 사용자를 인증한다.
# API의 인터셉터는 권한 부여 엔진(일반적으로 정책 결정 지점 또는 PDP라고 함)에 호출하여 앨리스가 트랜잭션 123을 승인할 수 있는지 묻는다.
# PDP는 ABAC 정책과 필요한 속성을 검색한다.
# PDP는 허용 또는 거부와 같은 결정을 내리고 API 인터셉터에 반환한다.
# 결정이 허용인 경우 기본 API 비즈니스 로직이 호출된다. 그렇지 않으면 API는 오류 또는 접근 거부를 반환한다.

### 애플리케이션 보안
ABAC의 주요 이점 중 하나는 권한 부여 정책 및 속성을 기술 중립적인 방식으로 정의할 수 있다는 것이다. 즉, API 또는 데이터베이스에 대해 정의된 정책은 애플리케이션 공간에서 재사용될 수 있다. ABAC의 혜택을 받을 수 있는 일반적인 애플리케이션은 다음과 같다.
# 콘텐츠 관리 시스템
# ERP
# 자체 개발 애플리케이션
# 웹 애플리케이션

API 섹션에 설명된 것과 동일한 프로세스와 흐름이 여기에도 적용된다.

### 데이터베이스 보안
데이터베이스 보안은 오랫동안 데이터베이스 공급업체에 특화되어 왔다. Oracle VPD, IBM FGAC, Microsoft RLS는 모두 세분화된 ABAC과 유사한 보안을 달성하기 위한 수단이다.

예시는 다음과 같다.
* 정책: 관리자는 자신의 지역에서 트랜잭션을 볼 수 있다.
* 데이터 중심 방식으로 재구성된 정책:  역할의 사용자는 인 경우  테이블에 대해  작업을 수행할 수 있다.

### 데이터 보안
데이터 보안은 일반적으로 데이터베이스 보안보다 한 단계 더 나아가 데이터 요소에 직접 제어를 적용한다. 이를 데이터 중심 보안이라고도 한다. 전통적인 관계형 데이터베이스에서 ABAC 정책은 필터링 조건 및 속성을 기반으로 한 마스킹과 함께 논리적 제어를 사용하여 테이블, 열, 필드, 셀 및 하위 셀 수준에서 데이터 접근을 제어할 수 있다. 속성은 데이터, 사용자, 세션 또는 도구 기반일 수 있어 특정 데이터 요소에 대한 접근을 동적으로 허용/거부하는 데 최대한의 유연성을 제공한다. 빅 데이터 및 하둡과 같은 분산 파일 시스템에서 데이터 계층에 적용된 ABAC은 폴더, 하위 폴더, 파일, 하위 파일 및 기타 세분화된 접근을 제어한다.

### 빅 데이터 보안
속성 기반 접근 제어는 Hadoop과 같은 빅 데이터 시스템에도 적용될 수 있다. 데이터 레이크에서 데이터를 검색할 때 이전에 사용된 정책과 유사한 정책을 적용할 수 있다.

### 파일 서버 보안
Windows Server 2012부터 마이크로소프트는 파일 및 폴더 접근을 제어하는 ABAC 접근 방식을 구현했다. 이는 동적 접근 제어(DAC) 및 보안 설명자 정의 언어(SDDL)를 통해 달성된다. SDDL은 사용자(클레임) 및 파일/폴더의 메타데이터를 사용하여 접근을 제어하므로 ABAC 언어로 볼 수 있다.

## 같이 보기

## 각주

## 외부 링크
* 속성 기반 접근 제어(ABAC) - 개요
* DAC, MAC 및 RBAC를 포함하는 통합 속성 기반 접근 제어 모델(ABAC)
* 클라우드 서비스형 인프라에서 속성 기반 접근 제어 모델(ABAC) 및 구현

분류:접근 제어
분류:컴퓨터 접근 제어