
9.1 루트로 컨테이너 실행
163
애초에
runc
명령 자체를 루트 사용자로 실행해야 하기 때문이다(§
9
.
1
.
3
루트 없는 컨테이너
(
p
.167
)에서 논의할 루트 없는 컨테이너는 차치하고라도).
runc
명령이 루트 권한을 요구하
는 이유는, 일반적으로 컨테이너를 만들려면 이름공간을 생성하는 능력이 필요하기 때문이다.
도커에서는 컨테이너 생성 작업을 루트 계정으로 실행 중인 도커 데몬이 담당하기 때문에 비루
트 사용자도
docker
명령을 실행할 수 있다.
비루트 사용자가 실행해도 도커는 컨테이너를 루트로 실행한다는 것은 일종의 권한 확대 (특
권 상승 )에 해당한다. 컨테이너가 루트로 실행된다는 것 자체가 반드시 문제점은 아니지만, 보
안을 생각하면 뭔가 불안하다. 공격자가 루트로 실행 중인 컨테이너에서 탈출할 수만 있으면
공격자는 호스트의 루트 사용자로서 호스트의 모든 것에 접근할 수 있다. 공격자가 호스트를
장악하는 것을 방지하는 방어선이 단 하나뿐인 것은 전혀 바람직하지 않다.
다행히 컨테이너를 비루트 사용자로 실행하는 방법이 있다. 비루트 사용자
ID
를 명시적으로
지정해도 되고, 앞에서 언급한 루트 없는 컨테이너를 사용해도 된다. 그럼 두 방법을 차례로 살
펴보자.
9.1.1
비루트 사용자
ID
지정
컨테이너 실행 시 특정 사용자
ID
를 명시적으로 ...