
오픈인프라 한국 커뮤니티 / 김관영 부회장
그로메트릭 / 김관영 대표
1. 컨테이너 보안 개요
컨테이너 기술의 역사는 물리 서버에서 가상 머신으로 그리고 애플리케이션 배포를 위한 가벼우면서도 효율적이고 이식 가능한 솔루션을 제공하고, 빠르게 진화하는 컴퓨팅 기술의 발전에 적용되는 흥미로운 과정이라고 볼 수 있습니다.
2013년 Docker의 출시는 컨테이너 기술의 대중화에 큰 전환점이 되었습니다. Docker는 컨테이너를 더 접근하기 쉽고 사용하기 편리하게 만들었으며, 이로 인해 컨테이너 기술이 폭넓게 채택되기 시작했습니다. Docker 1.0의 출시는 2014년에 이루어졌으며, 이는 Docker 기술이 프로덕션 환경에 적합하게 잘 동작했습니다.
2015년에는 Kubernetes 1.0이 출시되어 컨테이너의 배포, 확장 및 운영을 자동화하는 강력한 플랫폼을 제공했습니다. Kubernetes는 Google에서 설계되었으며 현재는 CNCF(Cloud Native Computing Foundation)에서 유지 관리하고 있습니다.
2016년 이후 컨테이너 기술은 빠르게 발전하고 널리 채택되었습니다. 이 기간 동안 컨테이너 오케스트레이션, 보안, 확장성에 대한 지속적인 혁신이 이루어졌으며, 이는 업계 전반에 걸쳐 컨테이너 기술의 광범위한 채택으로 이어졌습니다. 컨테이너 기술의 발전은 소프트웨어 개발과 배포 방식에 혁명을 일으켰으며, 지금도 계속해서 진화하고 있습니다.
2. 컨테이너 기술의 발전과정

오늘날 그 무엇보다 보안의 중요성이 강조되는 상황에서, 컨테이너를 위협하는 다양한 보안 과제를 깊이 있게 조사함으로서 컨테이너 이미지의 취약점부터 런타임 공격, 네트워크 보안 문제, 데이터 침해 가능성에 이르기까지, 컨테이너 환경을 안전하게 유지하기 위해 필요한 전략적 접근법을 알아보고자 하고, 이러한 이해를 통해 컨테이너 기술의 이점을 최대한 활용하면서도 안전한 기반을 마련하는 것이 중요하다고 생각됩니다.
3. 컨테이너 기술의 장점
컨테이너 기술은 애플리케이션의 배포와 관리를 혁신적으로 변화시켰습니다. 이 기술이 가져온 주요 장점 중 하나는 애플리케이션과 그 의존성을 하나의 패키지로 묶어 어떤 환경이든 일관된 실행을 보장하는 것입니다. 이는 개발자가 로컬 환경에서 개발한 애플리케이션을 프로덕션 환경으로 쉽게 이전하게 해주며, 원활한 이동과 확장을 가능하게 합니다.
컨테이너 기술은 다음과 같은 장점을 제공합니다.
- 애플리케이션 배포 및 실행 간소화: 컨테이너는 모든 필요한 구성 요소를 포함하고 있으므로 배포 및 실행이 매우 간편합니다.
- 높은 확장성: 컨테이너는 쉽게 생성 및 삭제할 수 있으므로 애플리케이션의 확장성을 쉽게 확보할 수 있습니다.
- 효율적인 리소스 사용: 컨테이너는 OS를 공유하여 VM보다 훨씬 적은 리소스를 사용합니다.
- 높은 개발 생산성: 컨테이너는 개발, 테스트, 배포 과정을 통일하여 개발 생산성을 높일 수 있습니다.
그러나 이러한 장점에도 불구하고, 컨테이너의 도입은 새로운 보안 도전 과제를 제기합니다. 컨테이너의 가벼움과 빠른 배포 속도는 보안팀이 취약점을 효과적으로 식별하고 관리하는 것을 어렵게 만듭니다. 이는 컨테이너 환경을 보호하기 위해 기본적인 보안 원칙과 모범 사례를 철저히 이해하고 적용해야 함을 의미합니다.
4. 컨테이너 보안의 중요성
컨테이너 기술은 많은 장점을 제공하지만, 보안 측면에서도 새로운 위협을 초래합니다. 컨테이너는 기존 VM보다 더 작고 가벼워 공격 표면이 더 적지만 빠르게 배포되고 삭제되는 특성 때문에 보안 취약점을 파악하고 관리하기가 더욱 어렵습니다.
그리고 컨테이너는 실제 DevOps Pipeline상에서 적용되므로 기존 환경의 보안과 다른 전체 소프트웨어 개발 수명주기(SDLC*)에 통합된 지속적인 보안 전략이 필요합니다.
이는 컨테이너화된 환경의 복잡성과 동적 특성으로 인해 컨테이너 보안은 완전 자동화되어야 합니다. 보안을 자동화하고 이를 SDLC의 모든 단계에 포함시키는 중요한 단계는 컨테이너화된 애플리케이션을 구축하고 출시하는 데 사용되는 지속적인 보안 제어를 구현하는 것입니다.

[그림1. 컨테이너 배포 파이프라인(https://www.cncf.io/blog/2022/11/14/container-security-what-it-is-and-how-to-implement-it/)]
컨테이너 서비스는 아래와 같은 구성요소가 있고 유기적인 통합이 필요합니다.
- 빌드 파이프라인(Build Pipeline): CI/CD**
- 컨테이너 이미지(Container Image): Container Registry***
- 컨테이너 호스트 머신(Host machine): OS
- 컨테이너 런타임(Container Runtime, 예: Docker, Containerd, CRI-O)
- 컨테이너 오케스트레이터(예: Kubernetes)
그리고, 다음과 같은 컨테이너 기술의 보안위협 요소가 있습니다.
1. 분산 아키텍쳐(Distributed Architecture)
기존의 모놀리식 환경에서는 전체 애플리케이션이 하나의 서버에서 실행되지만, 컨테이너 기반의 MSA****(마이크로서비스 아키텍처)에서는 애플리케이션의 여러 부분 간의 통신이 API로 이루어지고 또 서로 다른 호스트의 컨테이너에 배포되며 각 애플리케이션 구성 요소는 다른 구성 요소에 자주 액세스합니다.
2. 임시, 수명이 짧은 컨테이너(Ephemeral)
컨테이너의 일시적이거나 수명이 짧은 특성으로 인해 특정 작업을 위해 생성되었다가 다시 폐기됩니다. 이런 특성은 공격의 증거가 완전히 지워질 수 있으므로 보안 사고를 추적하기가 더 어려워지게 됩니다.
3. 경계(Perimeter)관점에서 Access 접점관점으로 이동
보안 정책이 전통적인 보안 적용 방식인 IP 주소와는 다르게 독립적이며 인증(Authentication) 기반으로 서비스나 파드 레벨에서 동작해야 함을 의미합니다.
4. 컨테이너 이미지, 컨테이너 레지스트리에 대한 구성 요소의 위험
컨테이너는 오픈 소스에 상당한 의존성을 가지고 있어 많은 이점을 가지고 있지만, 반대로 해당 소프트웨어의 취약점에 노출되기도 해 적절하게 해결되지 않으면 공격자가 악용할 수 가능성이 매우 높습니다.
대표적으로 Log4j는 자바 기반 로깅 유틸리티로 아파치재단의 오픈소스 로깅 서비스로 주로 화면 상이나 파일로 로그를 남길 목적으로 사용된다. 2021년 12월에 발견된 원격 코드 실행(RCE)을 허용하는 취약점(CVE-2021-44228)은 심각한 보안 취약점을 제공하였습니다.
5. 규정 준수 요구 사항
조직은 컨테이너 및 Kubernetes 관련 규정인 CIS-Benchmark, NIST SP 800-190를 모든 조직에 적용을 권고받고 있습니다.
5. 컨테이너 보안 모범 사례 및 권장 사항

[그림2. 컨테이너 보안 모범 사례(https://www.aquasec.com/cloud-native-academy/container-security/container-security-best-practices/)]
다음은 컨테이너 보안을 강화하기 위한 모범 사례 및 권장 사항입니다.
- 최소권한 적용 원칙: 컨테이너 및 사용자에게 필요한 권한만 부여합니다. 예)Docker 이미지 생성시 Root 권한 삭제
- 네트워크 분리: 컨테이너를 네트워크 세그먼트로 분리하여 공격 표면을 줄입니다. 예)Virtual Private Cloud(VPC), 보안 그룹 및 방화벽 규칙을 설정 등
- 이미지 취약점 관리: 컨테이너 이미지를 정기적으로 스캔하고 취약점을 업데이트합니다. 예) 신뢰성 있는 이미지 저장소(Docker hub등)를 이용하여야 하고, 이미지 서명 활용과 모든 이미지 자주 스캔하는 것을 권고 이미지 취약점 관리: 컨테이너 이미지를 정기적으로 스캔하고 취약점을 업데이트합니다. 도구 예시로는 Trivy, Clair가 있습니다.
- 런타임 보안 강화: 컨테이너 런타임 환경을 보호하기 위해 적절한 보안 도구를 사용합니다.예) 신뢰성 있는 Runtime인 gVisor나 Kata Containers, FireCracker 등을 선택하고 별도의 Runtime 보안솔루션을 활용 권고
- 데이터 암호화: 민감한 데이터를 암호화하여 보호합니다. 예) 크레던셜을 secret으로 암호화하거나 별도의 암호화 솔루션과 연계
- 보안 모니터링 및 로그 분석: 컨테이너 환경을 지속적으로 모니터링하고 이상 활동을 감지합니다.
- 보안 인시던트 대응 계획 수립: 컨테이너 보안 인시던트 발생 시 대응할 수 있도록 계획을 수립합니다.
6. 맺음말
컨테이너 기술은 많은 장점을 제공하지만, 보안 측면에서도 새로운 위협을 초래합니다. 컨테이너 보안은 애플리케이션과 데이터를 안전하게 보호하기 위해 매우 중요합니다.
이 글에서는 컨테이너 보안 개요, 주요 위협 및 공격 방법, 모범 사례 및 권장 사항 등을 살펴보았습니다.
보안은 공격과 방어의 측면에서도 치열하고 지속적으로 관심을 가져야 하는 분야입니다. 컨테이너 기술을 보다 안전하게 사용하기 위해서는 최신 보안 동향을 주시하고 적절한 보안정책을 적용해야 합니다.
다음 글에서는 컨테이너 이미지 보안에 대해 좀 더 세부적으로 알아 보도록 하겠습니다.
* SDLC(소프트웨어 개발 수명 주기)는 개발 팀이 소프트웨어를 설계하고 구축하는 데 필요한 비용 및 시간 효율적인 프로세스
** CI/CD: Continuous Integration), Continuous Delivery, 소프트웨어의 개발, 테스트와 배포를 모두 통합함으로써 소프트웨어 버그를 쉽게 찾고, 더 빠른 배포 주기를 만들어 App의 완성도를 높임
*** Container Registry: 컨테이너 이미지를 저장, 관리, 보안 검사 및 배포를 위한 시스템
**** MSA(MicroService Architecture): 애플리케이션을 작고, 독립적으로 배포 가능한 서비스의 집합으로 구성하는 소프트웨어 개발 방식으로 각 서비스는 특정 비즈니스 기능을 수행하고, 네트워크를 통해 통신
참 고 문 헌
- What Is Container Security? Complete Guide [2023] Aquasec
- https://www.cisecurity.org/benchmark/kubernetes
- https://csrc.nist.gov/pubs/sp/800/190/final
- https://ko.wikipedia.org/wiki
저작권 정책
K-ICT 클라우드혁신센터의 저작물인 『컨테이너 보안과 기술 동향』은 K-ICT 클라우드혁신센터에서 오픈인프라 한국 커뮤니티 김관영 부회장에게 집필 자문을 받아 발행한 전문정보 브리프로, K-ICT 클라우드혁신센터의 저작권정책에 따라 이용할 수 있습니다.
다만 사진, 이미지, 인용자료 등 제3자에게 저작권이 있는 경우 원저작권자가 정한 바에 따릅니다.