Docker 이미지를 운영 환경에 배포할 때 단순히 이미지가 실행되는 것만으로는 충분하지 않습니다.
최근에는 다음과 같은 정보가 중요해지고 있습니다.
- 이미지는 어디에서 생성되었는가?
- 어떤 소스 코드로 빌드되었는가?
- 어떤 패키지가 포함되어 있는가?
- 빌드 과정이 신뢰할 수 있는가?
이러한 공급망 보안 문제를 해결하기 위해 Docker Buildx는 Attestation(검증 정보) 기능을 제공합니다.
바로 --attest 옵션입니다.
docker buildx build --attest는 Docker 이미지에 빌드 검증 정보(Attestation)를 생성하고 연결하는 기능입니다.
예:
docker buildx build \
--attest type=provenance \
-t app:v1 \
--push .
이미지에 빌드 출처와 생성 정보를 추가할 수 있습니다.
이번 글에서는 Docker Buildx Build –attest의 개념부터 Provenance, SBOM과 차이점, 보안 공급망 관리, CI/CD 활용 방법까지 자세히 알아보겠습니다.
Docker Buildx Build –attest란 무엇인가?
--attest는 Docker 이미지에 검증용 메타데이터를 추가하는 옵션입니다.
기본 형식:
docker buildx build \
--attest type=종류 .
동작 과정:
Docker Image Build
↓
Attestation 생성
↓
이미지 연결
↓
검증 가능한 이미지 생성
이미지의 신뢰성을 높일 수 있습니다.
Docker Attestation이 필요한 이유
기존 Docker 이미지 관리:
이미지
↓
배포
하지만 운영 환경에서는 다음 정보를 확인해야 합니다.
누가 만들었는가?
어떤 코드인가?
어떤 환경에서 빌드했는가?
변조되지 않았는가?
Attestation은 이러한 정보를 제공합니다.
Docker Buildx Build –attest 주요 유형
대표적인 Attestation 유형:
| 유형 | 설명 |
|---|---|
| provenance | 빌드 출처 정보 |
| sbom | 소프트웨어 구성 정보 |
type=provenance 사용법
Provenance는 이미지가 어떻게 생성되었는지 기록합니다.
예:
docker buildx build \
--attest type=provenance \
-t app:v1 \
--push .
저장 정보:
- 빌드 시간
- 소스 정보
- Build 환경
- 빌드 과정
Provenance 정보 확인하기
이미지:
docker buildx imagetools inspect app:v1
확인:
Attestations:
Provenance
이미지에 검증 정보가 포함된 것을 확인할 수 있습니다.
Docker Buildx Build –attest와 –provenance 차이
Docker Buildx에서는 간단한 옵션도 제공합니다.
예:
docker buildx build \
--provenance=true \
-t app:v1 .
동작:
--provenance=true
↓
--attest type=provenance
동일한 기능입니다.
Docker Buildx Build –attest 실무 활용 예제
운영 이미지 검증 정보 추가
빌드:
docker buildx build \
--attest type=provenance \
-t company/app:v1 \
--push .
결과:
Image
+
Build Provenance
운영 배포 시 이미지 출처를 확인할 수 있습니다.
CI/CD 공급망 보안 활용
CI 과정:
소스 코드
↓
Docker Build
↓
Attestation 생성
↓
Registry 저장
↓
배포 검증
자동화된 이미지 신뢰성 검사를 구성할 수 있습니다.
Docker Buildx Build –attest와 SBOM 차이
둘은 목적이 다릅니다.
Provenance
질문:
이 이미지는 어떻게 만들어졌는가?
정보:
- 빌드 과정
- 소스 정보
- 생성 환경
SBOM
질문:
이 이미지 안에는 무엇이 들어있는가?
정보:
- 패키지 목록
- 라이브러리
- 의존성
정리:
Provenance = 생성 과정
SBOM = 구성 요소
Linux 서버 문제 해결
운영 환경에서 Docker 이미지 출처 확인이 필요했습니다.
기존:
docker pull company/app:v1
문제:
이미지가 어디서 생성됐는지 확인 불가
Attestation 추가:
docker buildx build \
--attest type=provenance \
-t company/app:v1 \
--push .
확인:
docker buildx imagetools inspect company/app:v1
결과:
Attestations:
Provenance
빌드 출처 정보를 확인할 수 있게 되었습니다.
Docker Buildx Build –attest 사용 시 주의사항
첫 번째는 일반 테스트 이미지에서는 필요하지 않을 수 있습니다.
두 번째는 Registry 저장 방식에 따라 지원 여부가 달라질 수 있습니다.
세 번째는 Attestation 정보도 관리 대상입니다.
네 번째는 운영 환경에서는 보안 정책과 함께 적용해야 합니다.
Best Practice
Docker Buildx Build –attest 활용 방법:
- 운영 이미지는 Provenance 생성
- CI/CD와 함께 자동화
- 이미지 검증 과정 추가
- SBOM과 함께 활용
- Registry 기반 관리
- 공급망 보안 정책 적용
자주 묻는 질문
Docker Buildx Build –attest는 무엇인가요?
Docker 이미지에 검증 정보를 추가하는 기능입니다.
Provenance는 무엇인가요?
이미지가 어떻게 생성되었는지 기록하는 빌드 출처 정보입니다.
Attestation은 이미지 실행에 영향을 주나요?
일반적으로 이미지 실행 자체에는 영향을 주지 않습니다.
언제 사용하는 것이 좋나요?
운영 서비스, 기업 환경, 보안이 중요한 프로젝트에서 활용하는 것이 좋습니다.
마무리
Docker Buildx Build –attest는 Docker 이미지 공급망 보안을 강화하는 핵심 기능입니다.
단순히 이미지를 생성하는 것을 넘어 이미지가 어떤 환경에서 어떻게 만들어졌는지 검증할 수 있으며, 운영 환경에서 신뢰할 수 있는 배포 체계를 구축하는 데 도움을 줍니다.
특히 CI/CD 자동화 환경에서는 Provenance와 SBOM을 함께 활용하여 안전한 Docker 이미지 관리 시스템을 구성할 수 있습니다.