Docker에서 “Enterprise assurance with Docker Hardened Images”라는 안내를 보냈다. 보안 강화 이미지를 별도로 제공한다는 건데, 기존 이미지와 뭐가 다르고 도입할 가치가 있는지 검토했다.
Table of contents
Open Table of contents
Docker Hardened Images란
Docker Hardened Images는 Docker Official Images를 기반으로 보안 강화 처리를 추가한 이미지다:
- CVE 패치: 알려진 취약점이 빠르게 패치됨
- 최소 패키지: 불필요한 패키지 제거로 공격 표면 축소
- SBOM 제공: Software Bill of Materials로 구성 요소 추적 가능
- 서명 검증: 이미지 무결성 보장
- 컴플라이언스: SOC 2, ISO 27001 등 감사 대응 자료 제공
Official Images와 비교
| 항목 | Official Images | Hardened Images |
|---|---|---|
| 기본 이미지 | 동일 | 동일 기반 |
| CVE 패치 주기 | 커뮤니티 의존 | SLA 기반 (24~72시간) |
| 불필요 패키지 | 포함 가능 | 최소화 |
| SBOM | 없음 | 제공 |
| 서명 | Docker Content Trust | 추가 서명 |
| 비용 | 무료 | Docker Business 구독 필요 |
| 지원 이미지 | 전체 | 주요 이미지만 |
도입 판단 기준
도입이 유리한 경우
- 규제 산업: 금융, 의료, 공공 — 컴플라이언스 감사 대응 필요
- 보안 사고 이력: CVE 관련 인시던트를 경험한 조직
- 대규모 운영: 이미지 수십 개를 관리하며 일일이 패치하기 어려운 경우
- CI/CD 통합: 이미지 빌드 파이프라인에서 자동으로 보안 검증이 필요한 경우
기존 방식으로 충분한 경우
- 소규모 팀: 이미지 수가 적고 직접 관리 가능
- Alpine/Distroless 사용: 이미 최소 이미지를 사용하고 있는 경우
- 자체 스캔 파이프라인: Trivy, Grype 등으로 이미 CVE 스캔을 하고 있는 경우
대안: 자체 보안 강화
Hardened Images를 도입하지 않더라도 비슷한 효과를 낼 수 있다:
1. 경량 베이스 이미지
# Alpine 기반 (5MB)
FROM node:20-alpine
# 또는 Distroless (더 극단적)
FROM gcr.io/distroless/nodejs20-debian12
2. 자동 CVE 스캔
# GitHub Actions에서 Trivy 스캔
- uses: aquasecurity/trivy-action@master
with:
image-ref: myapp:latest
severity: CRITICAL,HIGH
exit-code: 1 # 취약점 발견 시 빌드 실패
3. 이미지 자동 재빌드
# 매주 베이스 이미지 업데이트를 감지해 재빌드
on:
schedule:
- cron: '0 0 * * 1' # 매주 월요일
4. 런타임 보안
# non-root 실행
RUN adduser -D appuser
USER appuser
# read-only 파일시스템
# docker run --read-only myapp
도입 보류 판단
소규모 팀에서 이미지 10개 미만을 운영하고, 이미 Alpine 기반 + Trivy 스캔을 적용한 환경이었으므로 Hardened Images 도입은 보류했다. Docker Business 구독 비용 대비 추가 가치가 제한적이라고 판단했다.
규제 환경이 바뀌거나 이미지 수가 크게 늘면 재검토할 예정이다.
정리
Docker Hardened Images는 엔터프라이즈급 보안/컴플라이언스가 필요한 조직에 적합하다. 소규모 팀은 Alpine + CVE 스캔 + non-root 실행만으로도 충분한 보안 수준을 달성할 수 있다.