컨테이너 환경에서 마주하는 보안 위협과 공격 벡터를 분석하고, 방어 심층 전략과 OWASP 쿠버네티스 보안 체크리스트를 기반으로 한 보안 로드맵을 소개합니다.
2026년 현재, 전 세계 프로덕션 워크로드의 상당수가 컨테이너 위에서 실행되고 있습니다. **Container(컨테이너)**는 애플리케이션 배포의 사실상 표준이 되었지만, 그만큼 공격 표면도 넓어졌습니다.
전통적인 VM(가상 머신) 환경에서는 하이퍼바이저가 강력한 격리 경계를 제공했습니다. 반면 컨테이너는 호스트 커널을 공유하기 때문에, 커널 취약점 하나가 전체 클러스터를 위협할 수 있습니다.
컨테이너는 가상 머신이 아닙니다. 네임스페이스와 cgroup으로 프로세스를 격리할 뿐, 커널 수준의 완전한 격리를 보장하지 않습니다. 이 차이를 명확히 인식하는 것이 컨테이너 보안의 출발점입니다.
컨테이너 보안이 특히 중요한 이유는 다음과 같습니다.
컨테이너 환경의 공격 벡터는 크게 4가지 범주로 분류할 수 있습니다.
컨테이너 이미지는 빌드 시점에 모든 의존성을 포함합니다. 문제가 있는 베이스 이미지를 사용하거나, 알려진 **CVE(Common Vulnerabilities and Exposures)**가 포함된 패키지를 빌드에 포함시키면 프로덕션까지 취약점이 전파됩니다.
대표적인 사례로는 다음이 있습니다.
컨테이너가 실행 중일 때 발생하는 공격입니다. **Container Escape(컨테이너 탈출)**은 가장 심각한 위협으로, 공격자가 컨테이너 내부에서 호스트 시스템으로 빠져나오는 것을 의미합니다.
# 절대 프로덕션에서 사용하지 마세요
docker run --privileged -v /:/host alpine--privileged 플래그는 컨테이너에 호스트의 거의 모든 권한을 부여합니다. 이런 설정이 프로덕션에 배포되면 컨테이너 격리가 사실상 무력화됩니다.
쿠버네티스의 기본 네트워크 모델은 모든 Pod(파드) 간 통신을 허용합니다. 이는 개발 편의성을 높이지만, 공격자가 하나의 파드를 장악하면 클러스터 내 모든 서비스에 접근할 수 있다는 뜻이기도 합니다.
**Lateral Movement(횡방향 이동)**는 네트워크 정책이 없는 클러스터에서 가장 흔하게 발생하는 공격 패턴입니다.
최근 가장 급격히 증가하고 있는 위협입니다. 공격자가 직접 애플리케이션을 공격하는 대신, 애플리케이션이 의존하는 라이브러리나 빌드 도구를 타겟으로 삼습니다.
Dependency Confusion(의존성 혼동), Typosquatting(타이포스쿼팅), CI/CD 파이프라인 침투 등의 기법이 사용됩니다. 이 시리즈의 후반부에서 이러한 공격에 대한 방어 전략을 깊이 다룰 예정입니다.
**OWASP(Open Web Application Security Project)**는 쿠버네티스 환경을 위한 보안 체크리스트를 제공합니다. 핵심 항목을 살펴보겠습니다.
| 영역 | 핵심 점검 사항 |
|---|---|
| 클러스터 구성 | RBAC 최소 권한 적용, API 서버 접근 제한 |
| 워크로드 | Pod Security Standards 적용, 루트 실행 금지 |
| 네트워크 | NetworkPolicy로 기본 거부(Default Deny) 설정 |
| 이미지 | 신뢰할 수 있는 레지스트리만 허용, 이미지 서명 검증 |
| 시크릿 | etcd 암호화, 외부 시크릿 관리 도구 사용 |
| 모니터링 | 감사 로그 활성화, 런타임 위협 감지 |
이 체크리스트의 각 항목은 이 시리즈의 개별 장에서 상세히 다룰 예정입니다. 특히 **Pod Security Standards(파드 보안 표준)**는 restricted, baseline, privileged 세 가지 프로파일로 구성되어 있으며, 프로덕션 환경에서는 restricted 프로파일을 기본으로 사용해야 합니다.
**Defense in Depth(방어 심층)**은 단일 보안 계층에 의존하지 않고, 여러 겹의 보안 장치를 배치하는 전략입니다. 컨테이너 환경에서는 다음과 같은 계층별 방어가 필요합니다.
각 단계에서 보안을 적용함으로써, 하나의 방어선이 뚫리더라도 다음 계층에서 공격을 차단할 수 있습니다. 이것이 이 시리즈 전체를 관통하는 핵심 원칙입니다.
코드가 커밋되는 순간부터 보안이 시작됩니다. CI 파이프라인에서 이미지를 스캔하고, **SBOM(Software Bill of Materials, 소프트웨어 자재 명세서)**을 생성하며, 빌드된 이미지에 서명을 합니다.
**Admission Controller(어드미션 컨트롤러)**가 서명되지 않았거나 정책에 위반되는 이미지의 배포를 차단합니다. Kyverno나 OPA Gatekeeper 같은 도구가 이 역할을 수행합니다.
배포 이후에도 Falco 같은 도구로 비정상 행동을 실시간 감지하고, 네트워크 정책으로 불필요한 통신을 차단하며, 시크릿을 안전하게 관리합니다.
최근 컨테이너 보안 위협은 더욱 정교해지고 있습니다.
보안은 한 번 설정하고 끝나는 것이 아닙니다. 지속적으로 모니터링하고, 새로운 위협에 대응하며, 보안 정책을 업데이트하는 것이 필수적입니다. 이 시리즈는 그러한 지속적 보안 체계를 구축하는 방법을 단계별로 안내합니다.
이 시리즈는 총 10장으로 구성되어 있으며, 빌드 시점부터 런타임까지 컨테이너 보안의 전 영역을 다룹니다.
| 장 | 주제 | 핵심 도구 |
|---|---|---|
| 1장 | 위협 모델과 보안 개요 | (현재 장) |
| 2장 | 이미지 보안 기초 | Distroless, Chainguard |
| 3장 | 이미지 스캐닝 | Trivy, Grype, Snyk |
| 4장 | SBOM 생성과 관리 | Syft, SPDX, CycloneDX |
| 5장 | 이미지 서명 | Cosign, Sigstore |
| 6장 | 런타임 보안 | Falco, eBPF |
| 7장 | 네트워크 정책 | Calico, Cilium, Istio |
| 8장 | 시크릿 관리 | Vault, ESO, Sealed Secrets |
| 9장 | 공급망 방어 | SLSA, Kyverno |
| 10장 | 실전 파이프라인 | 전체 통합 프로젝트 |
이번 장에서는 컨테이너 보안의 필요성과 4대 공격 벡터(이미지, 런타임, 네트워크, 공급망)를 살펴보았습니다. 방어 심층 전략이 왜 필수적인지, 그리고 OWASP 체크리스트가 어떤 영역을 다루는지 확인했습니다.
핵심 요약은 다음과 같습니다.
다음 장에서는 컨테이너 보안의 가장 기본이 되는 이미지 보안을 다룹니다. 최소 베이스 이미지 선택부터 멀티스테이지 빌드, 루트 없는 컨테이너 구성까지 실전적인 Dockerfile 보안 가이드를 제공합니다.
이 글이 도움이 되셨나요?
최소 베이스 이미지, 멀티스테이지 빌드, 루트 없는 컨테이너 등 Dockerfile 보안 모범 사례와 불변 이미지 전략을 실습합니다.
Trivy, Grype, Snyk 컨테이너 스캐너를 비교하고, CI/CD 파이프라인에 취약점 스캐닝 게이트를 통합하여 안전한 이미지만 배포하는 방법을 다룹니다.
SBOM(소프트웨어 자재 명세서)의 개념과 필요성, SPDX와 CycloneDX 형식을 비교하고, Syft와 Trivy로 SBOM을 생성하여 공급망 가시성을 확보하는 방법을 실습합니다.