컨테이너 보안, 이미지부터 호스트 OS까지의 경계
컨테이너 보안을 이미지·레지스트리·오케스트레이션·런타임·호스트 OS 다섯 층위로 나눠 리스크와 강화 방안을 정리한다.
2026-08-12 · 최초 발행 2025-06-28
컨테이너 기술은 현대 애플리케이션 개발·배포 환경의 핵심 요소가 됐지만, 그만큼 새로운 보안 리스크도 함께 따라온다. 컨테이너 보안은 선택사항이 아니라 컨테이너 라이프사이클 전반에 걸친 종합적인 접근이 필요한 영역이다. 이미지·레지스트리·오케스트레이션·런타임·호스트 OS 다섯 층위로 나눠 보면 어디에서 무엇을 챙겨야 하는지가 분명해진다.
이미지: 취약점은 여기서 시작된다
이미지는 애플리케이션 구동에 필요한 모든 구성요소를 담은 정적 파일이다. 여기가 취약하면 그 위에서 도는 전체 컨테이너 환경이 함께 위험해진다. 패치되지 않은 취약점을 가진 기본 이미지, 백도어나 멀웨어가 삽입된 악성 코드, 필요 이상으로 부여된 권한, 보안 업데이트가 빠진 오래된 라이브러리가 대표적인 리스크다.
대응은 필요한 구성요소만 담는 최소 권한 원칙, 공식 리포지토리의 신뢰할 수 있는 기본 이미지 사용, 자동화된 도구로 하는 정기적 취약점 스캔, 디지털 서명으로 무결성을 확인하는 이미지 서명·검증으로 이어진다.
레지스트리: 누가 이미지를 가져가는가
레지스트리는 컨테이너 이미지를 저장·배포하는 중앙 저장소다. 여기가 취약하면 신뢰할 수 없는 이미지가 그대로 배포될 위험이 생긴다. 권한 없는 사용자의 이미지 접근·수정, 약한 인증 메커니즘, 불필요한 네트워크 노출, 저장된 이미지의 무결성을 위협하는 변조가 주요 리스크다.
RBAC(Role-Based Access Control)로 접근을 통제하고, TLS/SSL로 통신을 암호화하며, 내부 네트워크에 제한된 프라이빗 레지스트리를 쓰고, 업로드된 이미지를 자동으로 스캔하는 체계를 갖추는 것이 대응 방안이다.
오케스트레이션: 클러스터 전체를 좌우하는 지점
Kubernetes 같은 오케스트레이션 시스템은 컨테이너 환경 전체를 제어하기 때문에, 여기서 발생한 취약점은 전체 인프라로 번진다. 과도한 권한 부여로 인한 권한 상승, 보안되지 않은 API 엔드포인트 노출, 기본 설정을 그대로 쓰는 취약한 구성, 컨테이너 간 통신을 막지 않는 네트워크 정책 부재가 대표적인 리스크다.
API 서버에 인증·인가 메커니즘을 갖추고, 필요한 통신만 허용하는 네트워크 정책을 적용하며, 최소 권한 원칙에 따라 RBAC를 엄격하게 두고, SecurityContext와 PodSecurityPolicy로 포드 보안 정책을 구현하는 것이 대응이다.
런타임: 실행 중인 컨테이너를 지키는 법
실행 중인 컨테이너는 패치되지 않은 소프트웨어 취약점, 필요 이상의 네트워크 접근성, 기본 설정을 그대로 쓰는 안전하지 않은 런타임 구성, 컨테이너 내부 애플리케이션의 취약점, 의도적으로 악성 행위를 수행하는 불량 컨테이너 같은 위협에 노출된다.
CPU·메모리 등 리소스 할당을 제한하고, 이상 행동을 탐지하는 실시간 모니터링 체계를 두며, 실행 중 취약점을 잡아내는 런타임 보안 스캐너를 쓰고, 컨테이너를 수정하는 대신 재배포하는 불변 인프라 전략을 택하는 것이 대응 방향이다.
호스트 OS: 커널을 공유한다는 것의 의미
컨테이너는 호스트 OS의 커널을 공유한다. 그래서 호스트 시스템의 취약점은 그 위에서 도는 모든 컨테이너에 영향을 준다. 공유 커널의 보안 취약점, 컨테이너에서 호스트로 접근을 시도하는 권한 상승, 과도한 리소스 사용으로 인한 DoS, 컨테이너 격리를 우회하려는 탈출 시도가 여기서 다루는 리스크다.
정기적인 OS 업데이트로 최신 보안 패치를 적용하고, SELinux·AppArmor로 커널을 강화하며, seccomp 프로필로 시스템콜을 제한하고, cgroups로 리소스 사용을 묶어두는 것이 대응 수단이다.
영역을 하나로 묶는 통합 접근
다섯 층위를 따로따로 다뤄서는 안 된다. 개발 초기부터 보안을 통합하는 DevSecOps 문화, CI/CD 파이프라인에 자동화된 보안 테스트를 심는 것, 컨테이너 환경 전반을 훑는 정기적인 보안 감사, 사고가 났을 때 신속히 움직이는 인시던트 대응 계획이 다섯 영역을 하나로 묶는 축이다.
사고에서 배운 것들
공개 이미지 레지스트리를 통해 암호화폐 채굴 악성코드가 포함된 이미지가 유포되어 대형 클라우드 제공업체의 시스템 수천 개가 감염된 사례가 있었다. 신뢰할 수 있는 이미지 소스를 확인하고 정기적으로 이미지를 스캔하는 것이 왜 중요한지 보여주는 사고다. 기본 설정으로 배포된 Kubernetes 클러스터의 API 서버가 인터넷에 그대로 노출되어 무단 접근이 발생하고, 그 결과 수백 개의 컨테이너가 악성 목적으로 생성된 사례도 있었다 — 오케스트레이션 시스템의 보안 구성이 왜 중요한지를 드러낸다. 커널 취약점을 이용해 컨테이너를 탈출하고 호스트 시스템에 접근해 전체 인프라가 손상된 사례는 호스트 OS 패치와 컨테이너 격리 강화가 왜 필요한지를 보여준다.
이미지, 레지스트리, 오케스트레이션, 런타임, 호스트 OS 각 층위의 강화 방안을 개별적으로 적용하는 것만으로는 부족하다. 지속적인 모니터링과 개선을 곁들여야 컨테이너화된 애플리케이션을 안전하게 운영할 수 있고, 개발 초기 단계부터 보안을 고려하는 DevSecOps 접근이 그 출발점이다.