Access Control(접근 제어)
허가되지 않은 사용자의 자원 접근을 막는다.
정당한 사용자여도 허가 되지 않은 방식으로 접근하면 막는다.
정당한 사용자가 정당한 방식으로 자원에 접근하도록 한다.
- subject(주체) : 객체에 접근할 수 있는 존재
- object(객체) : 접근이 제어되는 자원
- Access right(접근 권한) : 주체가 객체에 접근하는 방법 기술
Access Control Policy
- 접근 제어 정책
- 어떤 상황에서, 누구에게 어떤 종류의 접근이 허용되는지를 결정
- 권한 DB에 저장되며, 보안 admin이 관리한다.
- 종류(동시에 사용가능)
- DAC(Discretionary access control)
- MAC(Mandatory access control)
- RBAC(Role-based access control)
- ABAC(Attribute-based access control)
DAC
- 임의 접근 제어
- 요청자의 신분에 따라 무엇을 할 수 있는지 정의
- Access Matrix 사용

- +)인간이 보기 편함
- -)행렬로 만들어서 메모리 낭비가 있다.
방법 1. ACL(Access Control lists)
- 링크드 리스트를 이용함
- 객체를 중심으로 정렬한것임
- 객체에 대한 권한을 가진 사용자를 파악하기에 용이하다.
방법 2. Capability tickets
- 주체를 중심으로 정렬함
- 특정 사용자에 허가된 객체/권한을 정리하기 쉽다.
- 티켓의 무결성, 기밀성, 인증성 보장
방법 3. authorization table
- 한 열에 한 주체의 한 권한이 들어감
- RDB(관계형 데이터베이스)로 구현하기 용이하다.
DAC 장단점 분석
- 장점: 객체별 세분화된 접근 제어 가능
- 단점: Access Matrix 사용에 따른 메모리 낭비가 있다.
- 단점: 주체나 객체별로 제어하기 때문에, 전체 자원의 일관성있는 제어 어렵다.
MAC(Mandatory access control)
- 군대에서 많이 접했다.
- 중앙 시스템이 사전에 규칙과 level(보안 등급) 정함
- 객체와 주체에 보안등급을 부여한다.
- 높은 수준의 보안시 사용(군대, 의료)
- 장점: 중앙에서 강력하게 통제 보안성이 높다. 규정과 준법이 용이
- 단점: 유연성 부족(사용자 불편), 관리 복잡
RBAC(Role-based access control)
- 각 사용자 대신에 역할에 접근 권한을 할당
- 상업적으로 회사,기관,조직에서 많이 사용된다.

- +)전체적으로 일관성있는 제어 정책 가능
- +)직무분석 용이
- -)각 주체, 객체별 유연하게 어려움
RBAC0
- 기본적인 역할 정의
- 역할에 권한을 직접 할당
- 사용자는 하나 이상의 역할에 할당 가능

RBAC1
- 역할간의 계층구조 표현
- 하위는 상위 접근권한의 부분집합을 받는다.

RBAC2
- 역할에 권한을 부여하고 제약조건을 할당한다.(제약이 생기면 2임)
- 할 수 있는 역할의 수에 제약이 있다.
- 특정 역할이 다른 역할을 상속받을 수 있게 해서 권한을 계층적으로 나눈다.
- 조건부로 특정 역할을 할 수 있게 한다. (ex: 특정 시간에만 역할 가능)
ABAC(Attribute-based access control)
- 사용자 속성: 사용자의 역할, 직위, 부서등 다양한 속성을 포함한다.(사용자 나이)
- 자원 속성: 접근하려는 자원의 특성이나 메타데이터를 포함한다.(연령 제한)
- 환경적 조건: 접근 요청이 이루어지는 상황이나 맥락을 나타낸다. (프로모션 기간)
ex) 만약 영화 출시일 기준으로 신작을 구분하고(환경적 조건) 사용자는 프리미엄/일반 으로 나뉘고(사용자 속성) 19세 이상만 볼 수 있는 영화가(자원 속성) 프로모션으로 특정 일수만큼만 무료로 풀린다면, => RBAC에서는 각 사용자를 연령과 가격에 따른 권한을 부여해 줘야함(오래 걸림), ABAC에서는 뒤에 규칙만 추가하면 됨(매개변수에 할당하는 개념)