접근 행렬 (Access Matrix)
Jan 27, 2026
핵심 개념
섹션 제목: “핵심 개념”접근 행렬(Access Matrix)은 시스템의 보호 정책을 표현하는 추상 모델이다. 행(row)은 도메인(Domain), 열(column)은 **객체(Object)**를 나타내며, 각 항목 access(i, j)는 도메인 Di가 객체 Oj에 대해 수행할 수 있는 연산의 집합을 담고 있다.
쉽게 말해, “누가 무엇을 할 수 있는가”를 표 한 장으로 정리한 것이다.
동작 원리
섹션 제목: “동작 원리”접근 행렬 구조
섹션 제목: “접근 행렬 구조” │ O1(파일A) │ O2(파일B) │ O3(프린터) │ O4(프로그램) │─────────────┼─────────────┼─────────────┼──────────────┼────────────────┤ D1(사용자A) │ read │ read,write │ │ execute │─────────────┼─────────────┼─────────────┼──────────────┼────────────────┤ D2(사용자B) │ read,write │ │ print │ execute │─────────────┼─────────────┼─────────────┼──────────────┼────────────────┤ D3(관리자) │ read,write │ read,write │ print │ read,execute │─────────────┴─────────────┴─────────────┴──────────────┴────────────────┘access(1, 1) = {read}→ D1은 O1에 대해 읽기만 가능access(2, 3) = {print}→ D2는 O3(프린터)에 대해 인쇄 가능access(3, 4) = {read, execute}→ D3는 O4에 대해 읽기와 실행 가능
도메인 전환 (Switch)
섹션 제목: “도메인 전환 (Switch)”도메인 자체도 객체로 취급할 수 있다. access(i, j)에 switch가 포함되어 있으면 도메인 Di에서 도메인 Dj로 전환할 수 있다.
│ D1 │ D2 │ D3 │─────────────┼──────────┼──────────┼──────────┤ D1 │ │ switch │ │─────────────┼──────────┼──────────┼──────────┤ D2 │ │ │ switch │─────────────┼──────────┼──────────┼──────────┤ D3 │ │ │ │─────────────┴──────────┴──────────┴──────────┘D1 → D2 전환 가능, D2 → D3 전환 가능하지만, D3에서는 다른 도메인으로 전환할 수 없다.
권한 조작
섹션 제목: “권한 조작”접근 행렬은 정적이지 않다. 다음 특수 권한으로 행렬 자체를 수정할 수 있다.
| 권한 | 설명 |
|---|---|
| copy (*) | 해당 항목의 권한을 같은 열의 다른 항목으로 복사 가능 |
| owner | 해당 열(객체)의 항목을 추가하거나 삭제 가능 |
| control | 해당 행(도메인) 전체의 항목을 수정 가능 |
Confinement Problem
섹션 제목: “Confinement Problem”정보 유출 방지(Confinement)는 일반적으로 **해결 불가능(undecidable)**한 문제이다. 어떤 프로세스가 비공식 채널(covert channel)을 통해 정보를 유출하는지 완전히 판별하는 것은 이론적으로 불가능하다.
UNIX 시스템에서의 접근 행렬 적용:
- 도메인 = (user-id, group-id) 쌍
- 객체 = 파일, 디렉터리, 디바이스
- 권한 = r(read), w(write), x(execute)
chmod명령어는 접근 행렬의 항목을 수정하는 것에 해당
Windows에서는 Access Token(도메인)과 Security Descriptor(객체)를 사용해 접근 행렬을 구현한다.