[Platform Security] Supply Chain Security - Minimize base image footprint

IMKUNYOUNG·6일 전
0

KCSA

목록 보기
10/10

베이스 이미지 풋프린트 최소화 전략

1. 베이스 이미지 이해하기

  • 베이스 이미지(Base Image): 처음부터 만들어진 이미지, 운영체제와 기본 라이브러리를 포함.
  • 부모 이미지(Parent Image): 특정 베이스 이미지에서 빌드된 또 다른 이미지.
  • Docker에서는 일반적으로 모든 상위 이미지를 "베이스 이미지"라고 부르기도 함.

2. 모범 사례

  1. 모듈화된 이미지 빌드

    • 하나의 이미지에 여러 서비스를 결합하지 말 것.
    • 웹 서버, 데이터베이스 등은 각각 독립된 이미지로 관리.
  2. 컨테이너 내부에 데이터 저장 금지

    • 컨테이너는 일시적이므로, 데이터는 외부 볼륨이나 Redis 같은 캐싱 서비스에 저장.
  3. 적절한 베이스 이미지 선택

    • 애플리케이션 요구 사항에 맞는 이미지 사용 (예: httpd, nginx 등).
    • 신뢰할 수 있는 공식 이미지 또는 검증된 퍼블리셔 태그 확인.
    • 자주 업데이트되는 이미지 선택(보안 취약점 패치됨).

3. 이미지 크기 최소화

  • 작은 이미지는 더 빠르게 다운로드 및 배포 가능.
  • 운영 체제의 최소 버전 사용 (예: alpine 기반 이미지).
  • 불필요한 파일 및 패키지 제거:
    • curl, wget, yum, apt 같은 패키지 관리자 제거.
    • 개발 환경에서 필요한 디버그 도구는 프로덕션 이미지에서 제외.

4. 보안 강화

  • 패키지 및 취약점이 많은 기본 이미지보다 경량 이미지(예: Alpine, Distroless) 사용.
  • Trivy 같은 도구를 활용하여 취약점 스캔:
    • 예: httpd 기본 이미지 → 124개 취약점 발견.
    • httpd:alpine 이미지 → 0개 취약점.

5. Google Distroless 이미지

  • 최소한의 패키지만 포함 → 보안 강화.
  • 패키지 관리자, 셸, 네트워크 도구 등 제거하여 공격 표면 축소.

요약

  • 베이스 이미지는 작고 안전해야 함.
  • 불필요한 파일과 패키지를 제거하여 배포 속도 증가 및 보안 강화.
  • Distroless 또는 Alpine 같은 경량 이미지 사용 권장.

0개의 댓글

관련 채용 정보