랩: 컨테이너 이미지 증명(Attestation)
랩: 컨테이너 이미지 증명(Attestation)
컨테이너 이미지에 공급망 메타데이터를 추가하는 실습 랩이에요. BuildKit으로 SBOM과 SLSA 증명을 생성하고, Cosign으로 이미지에 서명하며, OpenVEX 문을 붙여 취약점 악용 가능 여부를 선언해볼게요.
출처: 문서
본문
컨테이너 이미지가 어디에서 왔는지, 그리고 변조되지 않았는지를 증명해볼게요. 이 랩에서는 BuildKit으로 SBOM과 SLSA 빌드 증명(provenance)을 생성하고, Cosign으로 이미지에 서명하며, 어떤 CVE가 내 이미지에 영향을 주는지 선언하는 VEX 문을 작성해요. 이는 NIST SSDF와 EO 14028 같은 공급망 보안 요구사항을 충족하는 데 쓰이는 기법들이에요.
랩 시작하기
랩스페이스를 시작해볼게요:
$ docker compose -p labspace -f oci://dockersamples/labspace-attestation-basics up -d
브라우저에서 http://localhost:3030 을 열어주세요.
실습을 마치면 랩스페이스를 정리해요:
$ docker compose -p labspace down
배우게 될 내용
이 Labspace를 마치면 다음과 같은 것들을 완료하게 돼요:
- 컨테이너 이미지에 첨부된 SPDX SBOM을 --sbom=true 로 생성하고 검사하기
- --provenance=mode=max 로 SLSA 빌드 증명을 생성하고, 멀티스테이지 빌드가 어떻게 완전히 기록되는지 이해하기
- Cosign을 설치하고 키 기반 서명으로 컨테이너 이미지에 서명·검증하기
- CVE 악용 가능 상태를 선언하는 OpenVEX 문을 작성하고 서명된 증명으로 첨부하기
- SBOM, 증명, 서명, VEX가 완전한 공급망 스토리에서 어떻게 서로 보완되는지 이해하기
모듈
| # | 모듈 | 설명 |
|---|---|---|
| 1 | Introduction | 공급망 증명과 예제 Go 앱 개요 |
| 2 | Software Bill of Materials (SBOM) | --sbom=true 로 빌드하고, SPDX 내용을 검사하며, 스캐너 통합 이해 |
| 3 | Build Provenance | SLSA 증명 생성 및 멀티스테이지 빌드 기록 탐구 |
| 4 | Signing Images with Cosign | 키 쌍 생성, 이미지 서명, 서명 검증, 키리스 서명 배우기 |
| 5 | VEX Statements | CVE 스캔, OpenVEX 문서 작성, 서명된 증명으로 첨부 |
| 6 | Bringing It All Together | 완전한 build-sign-attest 워크플로 실행과 공급망 전체 그림 확인 |
| 7 | Recap | 정책 준수와 더 높은 SLSA 레벨을 위한 기술 요약 및 다음 단계 |
더 알아보기 (Learn more)
- Docker Scout
- SLSA / SBOM 개념
- Cosign