컨테이너 이미지 보안

지원 버전: Trivy 0.56+, Kubernetes 1.31, 1.32, 1.33 마지막 업데이트: 2026년 2월 22일

컨테이너 이미지 보안은 Kubernetes 보안의 첫 번째 방어선입니다. 이 문서에서는 이미지 스캐닝, 서명, 검증, 그리고 공급망 보안에 대해 다룹니다.

목차


이미지 스캐닝 개요

Shift-Left 보안

이미지 보안은 개발 프로세스 초기 단계에서 시작해야 합니다.

스캐닝 대상

대상
설명
도구

OS 패키지

운영체제 패키지 취약점

Trivy, Grype, Clair

언어별 의존성

npm, pip, go modules 등

Trivy, Snyk

설정 오류

Dockerfile, K8s 매니페스트

Trivy, Checkov

시크릿

하드코딩된 비밀 정보

Trivy, Trufflehog

라이선스

오픈소스 라이선스

Trivy, FOSSA


Trivy

Trivy 개요

Trivy는 컨테이너, 파일시스템, Git 저장소 등을 스캔하는 종합 보안 스캐너입니다.

Trivy 설치

이미지 스캐닝

파일시스템 스캔

Trivy 설정 파일

Trivy Operator (Kubernetes 통합)


Amazon ECR 이미지 스캐닝

기본 스캐닝 vs 향상된 스캐닝

기능
기본 스캐닝
향상된 스캐닝 (Inspector)

스캔 엔진

Clair

Amazon Inspector

스캔 빈도

푸시 시

지속적 스캔

취약점 DB

CVE

CVE + Amazon 위협 인텔리전스

비용

무료

Inspector 요금

언어 패키지

제한적

광범위 지원

AWS 통합

기본

Security Hub, EventBridge

향상된 스캐닝 활성화

스캔 결과 조회

EventBridge를 통한 알림


Cosign/Sigstore를 사용한 이미지 서명

Cosign 개요

Cosign은 Sigstore 프로젝트의 일부로, 컨테이너 이미지에 서명하고 검증하는 도구입니다.

Cosign 설치

키 기반 서명

키리스 서명 (OIDC 기반)

GitHub Actions 통합


Admission Control에서 이미지 검증

Kyverno imageVerify

Connaisseur


공급망 보안

SBOM (Software Bill of Materials) 생성

SBOM 기반 취약점 검사

SLSA (Supply chain Levels for Software Artifacts)


기본 이미지 선택

이미지 유형 비교

이미지 유형
크기
취약점
디버깅
사용 사례

distroless

매우 작음

매우 적음

어려움

프로덕션

Alpine

작음 (~5MB)

적음

가능

경량 앱

Chainguard

작음

매우 적음

제한적

보안 중심

Ubuntu/Debian

많음

쉬움

개발/레거시

Scratch

최소

없음

불가

정적 바이너리

Distroless 이미지 사용

Chainguard 이미지 사용

Alpine 보안 강화


이미지 레지스트리 모범 사례

프라이빗 레지스트리 사용

이미지 풀 정책

불변 태그 정책 (Kyverno)


CI/CD 파이프라인 통합

완전한 이미지 보안 파이프라인


요약

컨테이너 이미지 보안의 핵심:

  1. 스캐닝: Trivy, ECR 향상된 스캔으로 취약점 탐지

  2. 서명: Cosign/Sigstore로 이미지 무결성 보장

  3. 검증: Kyverno로 서명된 이미지만 배포 허용

  4. 공급망: SBOM, SLSA로 투명성 확보

  5. 기본 이미지: distroless, Chainguard 사용

  6. CI/CD 통합: 자동화된 보안 파이프라인 구축

권장 사항

  • 모든 이미지에 취약점 스캔 적용

  • 프로덕션 이미지는 반드시 서명

  • latest 태그 대신 다이제스트 사용

  • distroless 또는 최소 기본 이미지 사용

  • SBOM 생성 및 관리 자동화


참고 자료

마지막 업데이트