9.2 --privileged 플래그와 리눅스 능력
169
은 파일 접근 권한들을 가질 수 있다는 점이다. 이 문제가 없으려면 파일 시스템이 해당 사용자
이름공간 안에서 파일 소유권과 그룹 소유권을 재지정하는 기능을 지원해야 한다. (이 책을 쓰
는 현재 모든 파일 시스템이 이를 지원하지는 않는다. )
이 책을 쓰는 현재 루트 없는 컨테이너는 아직 미성숙 단계이다.
runc
와
podman
은 루트 없
는 컨테이너를 지원하지만, 도커는 아직 실험적으로만 지원한다(
https
://
oreil
.
ly
/
GnOoq
). 그
리고 어떤 런타임을 사용하든 쿠버네티스에서는 루트 없는 컨테이너를 사용할 수 없다. 아키히
로 스다
Akihiro
Suda
를 비롯한 여러 개발자가 만든
Usernetes
(
https
://
oreil
.
ly
/
42RRY
)이라는 개
념 증명 (
proof
of
concept
) 구현이 있긴 하다.
컨테이너 안에서 프로세스가 루트 계정으로 실행되는 것이 그 자체로 문제는 아니다. 공격
자가 어떻게든 컨테이너에서 탈출한다면 비로소 문제가 된다. 과거에 컨테이너 런타임에서 종
종 컨테이너 탈출 취약점이 발견되었으며, 아마 미래에도 발견될 것이다. 그런데 컨테이너 탈
출을 가능하게 하는 요인이 런타임의 취약점만은 아니다. 이번 장에서 살펴보겠지만, 컨테이너
의 설정이 부실하면 취약점이 없어도 공격자가 손쉽게 컨테이너에서 탈출할 수 있다. ‘부실한
설정’과 ‘루트로 컨테이너 실행’이 겹치면 대형 사고가 날 수밖에 없다.
사용자
ID
재지정과 루트 없는