패스잇
인프라 & 클라우드 · 심화

컨테이너는 호스트 커널을 공유하는데, namespace와 cgroup이 각각 어떤 격리와 자원 제어를 담당하는지, 그리고 이것이 VM 대비 격리 수준이 약하다고 평가되는 이유를 설명해주세요.

힌트 · namespace는 보이는 자원의 격리, cgroup은 자원 사용량 제한이라는 역할 분리와 커널 공유로 인한 공격 표면 관점에서 접근하세요.

namespacecgroup커널 공유격리자원 제어

모범답안

컨테이너는 호스트 커널을 공유하기 때문에 VM과는 격리 수준에서 차이가 있습니다.

namespace는 프로세스가 접근할 수 있는 시스템 자원을 격리하는 역할을 합니다. 예를 들어, PID namespace는 각 컨테이너마다 고유한 프로세스 ID를 부여하고, Network namespace는 독립적인 네트워크 인터페이스를 제공하여 컨테이너 간의 네트워크 통신을 격리합니다. 즉, namespace는 컨테이너가 '무엇을 볼 수 있는지'를 제어합니다.

cgroup은 컨테이너가 사용할 수 있는 CPU, 메모리, 디스크 I/O 등의 시스템 자원 사용량을 제한하고 관리하는 역할을 합니다. 이를 통해 특정 컨테이너가 과도한 자원을 사용하여 호스트 시스템이나 다른 컨테이너에 영향을 미치는 것을 방지합니다. 즉, cgroup은 컨테이너가 '얼마나 많은 자원을 사용할 수 있는지'를 제어합니다.

VM 대비 격리 수준이 약하다고 평가되는 이유는 바로 이 '커널 공유' 때문입니다. VM은 자체적인 커널을 가지므로 호스트 커널의 취약점이 컨테이너에 영향을 미치지 않습니다. 하지만 컨테이너는 호스트 커널을 공유하기 때문에, 호스트 커널에 보안 취약점이 존재할 경우 이를 통해 컨테이너 간 또는 컨테이너에서 호스트로의 탈출(escape) 공격이 발생할 가능성이 있습니다. namespace와 cgroup은 논리적인 격리를 제공하지만, 근본적으로는 동일한 커널 위에서 동작하기 때문에 VM 수준의 강력한 하드웨어 기반 격리에는 미치지 못합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 DevOps / CI·CD 면접 질문

← DevOps / CI·CD 면접 질문 전체 보기