Docker Hardened Images 빌드 방식
Docker Hardened Images 빌드 방식 (How Docker Hardened Images are built)
DHI가 자동화 파이프라인으로 어떻게 빌드되는지 알아볼게요.
출처: 문서
본문
Docker Hardened Images는 업스트림 소스를 모니터링하고 보안 업데이트를 적용하며 서명된 아티팩트를 게시하는 자동화 파이프라인으로 빌드돼요. 이 페이지는 기본 DHI 이미지와 DHI Select·DHI Enterprise 구독으로 제공되는 사용자 정의 이미지의 빌드 과정을 설명해요.
DHI Select 또는 DHI Enterprise 구독에서는 기본·사용자 정의 이미지 모두의 자동 보안 업데이트 파이프라인이 SLA 약정으로 뒷받침되며, 중요·높음 심각도 취약점에 대한 7일 SLA를 포함해요. DHI Community는 안전한 기준선을 제공하지만 보장된 해결 일정은 없어요.
빌드 투명성 (Build transparency)
Docker Hardened Images는 공개적으로 사용 가능한 정의와 검증 가능한 증명을 통해 이미지가 어떻게 빌드되는지 투명성을 제공해요.
이미지 정의 (Image definitions)
모든 이미지 정의는 카탈로그 저장소에서 공개적으로 사용할 수 있어요.
각 이미지 정의는 메타데이터, 내용, 빌드 파이프라인 단계, 보안 구성, 런타임 설정을 포함하는 선언적 YAML 사양이에요.
SLSA 증명 (SLSA attestations)
모든 Docker Hardened Image는 검증 가능한 빌드 provenance를 제공하는 SLSA Build Level 3 증명을 포함해요. SLSA 증명과 검증 방법의 자세한 내용은 SLSA를 참고하세요.
빌드 트리거 (Build triggers)
빌드는 자동으로 시작돼요. 수동으로 트리거하지 않아요. 시스템이 변경을 모니터링하고 두 시나리오에서 빌드를 시작해요:
업스트림 업데이트 (Upstream updates)
업스트림 프로젝트의 새 릴리스, 패키지 업데이트, 또는 CVE 수정이 기본 이미지 재빌드를 트리거해요. 이 빌드는 보안과 신뢰성을 보장하기 위해 품질 검사를 거쳐요.
업데이트 모니터링 (Monitoring for updates)
Docker는 업스트림 프로젝트의 새 릴리스, 패키지 업데이트, 보안 권고를 지속적으로 모니터링해요. 변경이 감지되면 시스템이 SLSA Build Level 3 호환 빌드 시스템으로 영향받는 이미지를 재빌드하도록 자동으로 대기열에 넣어요.
Docker는 업데이트를 추적하는 세 가지 전략을 사용해요:
- GitHub 릴리스: 특정 GitHub 저장소의 새 릴리스를 모니터링하고, 새 버전이 게시되면 이미지 정의를 자동 업데이트해요.
- GitHub 태그: GitHub 저장소의 태그를 추적해 새 버전을 감지해요.
- 패키지 저장소: Docker Scout의 패키지 데이터베이스를 통해 Alpine Linux, Debian, Ubuntu 패키지 저장소를 모니터링해 업데이트된 패키지를 감지해요.
명시적 업스트림 추적에 더해 Docker는 전이적 의존성도 모니터링해요. 패키지 업데이트(예: 라이브러리의 보안 패치)가 감지되면 Docker는 지원 기간 내에서 그 패키지를 사용하는 모든 이미지를 자동으로 식별하고 재빌드해요.
사용자 정의 변경 (Customization changes)
OCI 아티팩트 사용자 정의에 대한 업데이트가 사용자 정의 이미지의 재빌드를 트리거해요.
DHI Select 또는 DHI Enterprise로 DHI 이미지를 사용자 정의하면 여러분의 변경이 기본 이미지 위에 겹치는 OCI 아티팩트로 패키징돼요. Docker가 여러분의 아티팩트 저장소를 모니터링하고 업데이트를 푸시할 때마다 사용자 정의 이미지를 자동으로 재빌드해요.
재빌드 과정은 현재 기본 이미지를 가져오고, OCI 아티팩트를 적용하고, 결과를 서명하고, 자동으로 게시해요. 사용자 정의 이미지의 빌드를 관리하거나 CI 파이프라인을 유지할 필요가 없어요.
사용자 정의 이미지가 의존하는 기본 DHI 이미지가 업데이트를 받아도 자동으로 재빌드되어, 이미지가 항상 최신 보안 패치를 포함하게 해요.
빌드 파이프라인 (Build pipeline)
다음 섹션은 다음에 기반한 Docker Hardened Images의 빌드 파이프라인 아키텍처와 워크플로우를 설명해요:
기본 이미지 파이프라인 (Base image pipeline)
각 Docker Hardened Image는 자동화 파이프라인으로 빌드돼요:
- 모니터링: Docker가 업스트림 소스를 모니터링해요(새 릴리스, 패키지 업데이트, 보안 권고).
- 재빌드 트리거: 변경이 감지되면 자동 재빌드가 시작돼요.
- AI 가드레일: AI 시스템이 업스트림 diff를 가져와 언어 인식 검사로 스캔해요. 가드레일은 역전된 오류 검사, 무시된 실패, 리소스 잘못 처리, 의심스러운 기여자 활동 같은 큰 문제를 일으킬 수 있는 고영향 이슈에 집중해요. 잠재적 위험을 발견하면 PR의 자동 병합을 차단해요.
- 인간 검토: AI가 고신뢰도로 위험을 식별하면 Docker 엔지니어가 플래그된 코드를 검토하고, 문제를 재현하며, 적절한 조치를 결정해요. 엔지니어는 종종 업스트림 프로젝트에 수정을 되살려 전체 커뮤니티를 위한 코드를 개선해요. 수정이 업스트림에서 받아들여지면 DHI 빌드 파이프라인이 즉시 패치를 적용해 수정이 업스트림 릴리스 과정을 거치는 동안 고객을 보호해요.
- 테스트 및 스캔: 이미지는 호환성·기능에 대한 포괄적인 테스트와 악성 코드, 비밀, 취약점 스캔을 거쳐요.
- 서명 및 증명: Docker가 각 이미지를 서명하고 증명(SBOM, VEX 문서, 빌드 provenance)을 생성해요.
- 게시: 서명된 이미지가 DHI 레지스트리에, 증명이 Docker Scout 레지스트리에 게시돼요.
- 캐스케이드 재빌드: 사용자 정의 이미지가 이 기본을 사용한다면 그 재빌드가 자동으로 트리거돼요.
Docker는 중요 취약점에 빠르게 대응해요. 패키징된 업데이트를 기다리는 대신 필수 구성 요소를 소스에서 빌드함으로써, Docker는 업스트림 수정 후 며칠 내에 중요·높음 심각도 CVE를 패치하고 새 증명과 함께 업데이트된 이미지를 게시할 수 있어요. DHI Enterprise 구독에서는 이 빠른 대응이 중요·높음 심각도 취약점에 대한 7일 SLA로 뒷받침돼요.
다음 다이어그램은 기본 이미지 빌드 흐름을 보여줘요:
.-------------------. .-------------------. .-------------------. .-------------------.
| Docker monitors |----->| Trigger rebuild |----->| AI guardrail |----->| Human review |
| upstream sources | | | | scans changes | | |
'-------------------' '-------------------' '-------------------' '-------------------'
|
v
.-------------------. .-------------------. .-------------------. .-------------------.
| Cascade rebuilds |<-----| Publish to |<-----| Sign & generate |<-----| Testing & |
| (if needed) | | DHI registry | | attestations | | scanning |
'-------------------' '-------------------' '-------------------' '-------------------'
사용자 정의 이미지 파이프라인 (Customized image pipeline)
DHI Select 또는 DHI Enterprise로 DHI 이미지를 사용자 정의하면 빌드 과정이 단순화돼요:
- 모니터링: Docker가 여러분의 OCI 아티팩트 저장소를 변경 모니터링해요.
- 재빌드 트리거: OCI 아티팩트에 업데이트를 푸시하거나 기본 DHI 이미지가 업데이트되면 자동 재빌드가 시작돼요.
- 기본 이미지 가져오기: 최신 기본 DHI 이미지가 가져와져요.
- 사용자 정의 적용: 여러분의 OCI 아티팩트가 기본 이미지에 적용돼요.
- 스캔: 사용자 정의 이미지가 악성 코드, 비밀, 취약점에 대해 스캔돼요.
- 서명 및 증명: Docker가 사용자 정의 이미지를 서명하고 증명(SBOM, VEX 문서, 빌드 provenance)을 생성해요.
- 게시: 서명된 사용자 정의 이미지가 Docker Hub에, 증명이 Docker Scout 레지스트리에 게시돼요.
Docker가 전체 과정을 자동으로 처리하므로 사용자 정의 이미지의 빌드를 관리할 필요가 없어요. 그러나 사용자 정의 이미지를 테스트하고 OCI 아티팩트로 도입된 CVE를 관리하는 책임은 사용자에게 있어요.
다음 다이어그램은 사용자 정의 이미지 빌드 흐름을 보여줘요:
.-------------------. .-------------------. .-------------------. .-------------------.
| Docker monitors |----->| Trigger rebuild |----->| Fetch base |----->| Apply |
| OCI artifacts | | | | DHI image | | customizations |
'-------------------' '-------------------' '-------------------' '-------------------'
|
v
.-------------------. .-------------------. .-------------------.
| Publish to |<-----| Sign & generate |<-----| Scanning |
| Docker Hub | | attestations | | |
'-------------------' '-------------------' '-------------------'