자격 증명 목록 (Capability List / Ticket) - 접근 제어 행렬을 주체 기준으로 분할한 구현 방식

핵심 인사이트 (3줄 요약)

  1. 본질: Capability List는 접근 제어 행렬을 주체(프로세스/사용자) 기준으로 분할하여, 각 사용자가 "어떤 객체에 어떤 권한을 가지는지" 목록을 프로세스의 메모리(PCB)에 티켓 형태로 저장하는 방식이다.
  2. 가치: 프로세스가 객체에 접근할 때 중앙 테이블이나 파일 ACL을 참조할 필요 없이, 자신이持有的(보유한) 티켓만 제시하면 되어 $O(1)$ 시간에 인증이 가능하다.
  3. 한계: 권한을 회수하려면 해당 사용자로부터 모든 티켓을 회수해야 하므로 $O(N)$ 작업이 필요하며, 티켓을 다른 사용자에게 복사하면 **위임(Delegation)**으로 인한 권한 누출 위험이 있다.

1. 개요 및 배경 (Context & Necessity)

1.1 ACL의 한계: 역방향 조회

ACL은 "파일별로 권한 목록"을 저장하므로:

  • "파일 A에 접근 가능한 사용자" 조회: O(1) - 해당 파일 ACL만 확인
  • "사용자 B가 접근 가능한 파일" 조회: O(N) - 모든 파일 ACL을 스캔

1.2 Capability의 해결책

Capability는 **"사용자별로 권한 목록"**을 저장한다:

[ 사용자 A의 Capability List (티켓 뭉치) ]
- 티켓1: <파일1, {Read, Write}>
- 티켓2: <프린터, {Print}>

[ 사용자 B의 Capability List ]
- 티켓3: <파일1, {Read}>
- 티켓4: <파일2, {Read}>

2. 아키텍처 및 핵심 원리 (Deep Dive)

2.1 Capability의實現: 파일 디스크립터

리눅스에서 open() 시스템콜이 반환하는 **파일 디스크립터(FD)**가 대표적인 Capability이다:

int fd = open("/data/file.txt", O_RDONLY);
// fd가Capability(티켓)
read(fd, buffer, 100);  // fd(티켓)만 제시하면 읽기 가능

파일 디스크립터는 커널 공간에 저장되어 있으므로, 사용자 프로세스가 조작할 수 없다.

2.2 티켓 위조 방지

일반 사용자 메모리에 티켓을 저장하면 해킹에 의해 위조될 수 있다. 이를 방지하기 위해:

방식설명
커널 공간 저장티켓을 커널 메모리에 저장하고, 사용자에게는 번호(FD)만 반환
하드웨어 태그메모리 칩마다 Tag 비트를 부여하여 커널만 수정 가능

2.3 권한 회수 문제

사용자에게 부여된 Capability를 회수하려면:

  1. 해당 사용자의 모든 티켓을 찾아야 함
  2. 각 티켓을 무효화

중앙 테이블이 없으면 모든 프로세스를 검사해야 하므로 $O(N)$ 시간이 소요된다.


3. 실무 적용: OAuth/JWT 토큰

3.1 전통 세션 기반 인증

[ 문제 ]
사용자 -> 로그인 -> 서버 세션 저장 (Redis 등)
       -> API 요청 -> 세션 조회 (매번 DB 접근, O(N))

3.2 JWT 토큰 (Capability 패턴)

[ 해결 ]
사용자 -> 로그인 -> 서버가 JWT 토큰(티켓) 발급
              토큰 내용: { 사용자ID, 만료시간, 권한 }
       -> API 요청 -> 토큰 검증만으로 인증 완료 (O(1))

JWT 토큰 자체에 권한 정보가 포함되어 있어, 중앙 세션 저장소 없이 인증이 가능하다.


4. 기대효과 및 결론

  • 분산 환경 최적화: 중앙 테이블 없이 인증이 가능하므로 스케일링에 유리
  • 권한 회수 복잡성: 분산된 티켓의 회수가 어려움
  • 현대적 변형: JWT, OAuth 2.0 등 클라우드 환경에서 활용

관련 개념 맵 (Knowledge Graph)

관련 개념설명
ACL (575장)Capability와 대칭되는 객체 중심 구현
파일 디스크립터 (9단원)리눅스에서 Capability가 구현된 형태
OAuth 2.0 / JWT웹 환경에서의 Capability 패턴
RBAC (577장)Capability와 함께 사용되는 역할 기반 접근 제어

👶 어린이를 위한 3줄 비유 설명

  1. Capability는 놀이공원의 **"종이 팔찌"**와 같다. 입장할 때 받고, 각 놀이기구에서 팔찌만 보여주면 된다. 매번 명부를 확인할 필요가 없다.

  2. 파일 디스크립터는 **"줄 번호표"**와 같다. 窓口(창구)에서 번호표를 받고, 창구에서 번호표를 제시하면 번호표에 해당하는 업무를 처리받을 수 있다.

  3. 권한 회수 어려움은 종이 팔찌를 회수하려면 "모든 놀이기구를 돌아다니며 그 사람의 팔찌를 찾아 잘라내야" 하는 것과 같다. 입장时(시)에 발급된 팔찌를 한꺼번에 회수하기 어렵다.