* Authorization
- 접근 제어 : 접근 범위를 제한(Resource 분배 문제)
- 보호 받아야 할 시스템의 데이터와 자원에 대해서 행해지는 동작을 규제
- Access control = Authorization + Authentication 이지만, Authorization만을 Access Control이라고 부르기도 한다.
- 목적 : 데이터와 자원에 손상을 입히는 동작을 제어하기 위해서.
주체 : 동작을 수행하는 대상
객체 : 주체가 접근하는 대상
reference monitor : 접근을 허락하거나 거부
Access permission : 접근 제어 정책
* 접근 제어 행렬 (Access Control Matrix)
- Lampson's Access control matrix
> 주체를 열에 객체를 행에 표시
- 주체와 객체가 커지게 되면 행렬을 유지하는데 어려움이 발생하게 된다. : 비효율적
ⓐ Access Control Lists(ACLs)
- 특정 객체에 따른 주체들의 권한을 저장한다.
- ACL(Program 1) = {(Alice,x), (Bob,rx)}
ⓑ C-Lists(Capabilities Lists, 권한 행렬)
- 한 사용자에 할당된 각 자원의 권한을 열거한다.
- C-Lists(Alice) = {(OS,rx),(Program1, x), (Program2, rwx), user data(w)}
- 특정 프로그램에 대한 접근 제어에는 C-Lists가 유리하다.
- ACLs는 지속적으로 사용자 정보가 기준이 되어 효율이 떨어지게 된다.
* 권한 위임과 혼돈
- 객체이면서 주체가 되는 대상이 존재한다.(위 예의 Compiler)
- 이를 이용해 간접적으로 권한을 넘어선 행동이 가능하게 된다.
> Alice가 Compiler를 이용해 Data를 손대려고 한다.
- 이를 방지하기 위해 특정 주체가 사용하는 객체는 주체의 권한을 부여 받는다.
> Alice가 Compiler를 사용하면 Compiler는 Alice의 권한을 적용받아 Data에 접근을 할 수 없게된다.
- ACLs는 이와 같은 상황을 대비하기가 힘들다.
- C-Lists는 ACLs에 비해 보다 효율적인 Solution을 제공한다.
* ACLs vs C-Lists
- ACLs
> 사용자 관점에서 파일 관리가 쉽다
> 데이터 중심의 보호이다.
> 자원에 대한 권리 변경이 쉽다.
> 구현이 쉽다.
- C-Lists
> 권한 위임을 더쉽게 처리가 가능하다 > 대리 혼돈(권한 위임)문제를 피하기 쉽다.
> 사용자를 쉽게 추가/삭제가 가능하다.
> 구현이 어렵다
- 현재는 C-Lists사용을 권고하고 있다.