Container 환경이 발전하면서 Docker Image를 단순히 생성하고 배포하는 것만으로는 충분하지 않은 시대가 되었습니다.
특히 서버 운영 환경에서는 다음과 같은 질문에 답할 수 있어야 합니다.
- 이 Image는 어디에서 만들어졌는가?
- 어떤 Source Code로 Build 되었는가?
- 어떤 Builder 환경을 사용했는가?
- 누가 어떤 과정으로 생성했는가?
기존 방식:
Dockerfile
↓
Docker Build
↓
Image 생성
↓
서버 배포
하지만 보안 중심 환경에서는:
Source Code
↓
Build 과정 기록
↓
Provenance 생성
↓
Image 검증
↓
안전한 배포
구조가 필요합니다.
Docker Buildx Bake에서는 Provenance Attestation 기능을 사용하여 Image 생성 과정을 기록하고 검증할 수 있습니다.
예:
docker buildx bake production \
--attest type=provenance
결과:
Docker Image 생성
↓
Build 정보 기록
↓
Provenance 데이터 생성
이번 글에서는 Docker Buildx Bake Provenance의 개념부터 설정 방법, Build 검증, SBOM 연동, CI/CD 활용, Production 보안 운영 방법까지 자세히 알아보겠습니다.
Docker Buildx Bake Provenance란 무엇인가?
Provenance는 “어떤 과정을 통해 결과물이 만들어졌는지”를 기록하는 기술입니다.
쉽게 설명하면:
Docker Image
+
제작 과정 정보
를 함께 저장하는 기능입니다.
포함 정보:
- Source Repository
- Git Commit 정보
- Builder 정보
- Build 시간
- Build 설정
- Dockerfile 정보
구조:
Source Code
↓
Docker Buildx
↓
Build 과정 기록
↓
Provenance 생성
↓
Image 연결
Docker Buildx Bake Provenance가 필요한 이유
운영 서버에서는 Image 신뢰성이 중요합니다.
예:
외부에서 받은 Image
↓
출처 확인 필요
↓
검증 필요
Provenance 사용:
Image
↓
생성 과정 확인
↓
신뢰 여부 판단
장점:
- Supply Chain 보안 강화
- Image 출처 확인
- 변경 추적 가능
- 기업 보안 요구 대응
Docker Buildx Bake Provenance 기본 사용법
명령어:
docker buildx bake app \
--attest type=provenance
동작:
Build 실행
↓
Provenance 생성
↓
Image 저장
Docker Buildx Bake Provenance docker-bake.hcl 설정
Bake 파일에서도 관리할 수 있습니다.
예:
target "production" {
attest = [
"type=provenance"
]
}
실행:
docker buildx bake production
결과:
Image
+
Build 출처 정보
Docker Buildx Bake Provenance 모드 설정
Provenance는 Mode를 설정할 수 있습니다.
mode=min
최소한의 정보 생성
예:
--attest type=provenance,mode=min
특징:
- 작은 데이터 크기
- 기본 검증 정보 제공
mode=max
더 많은 Build 정보 포함
예:
--attest type=provenance,mode=max
포함:
- 상세 Build 정보
- Build Argument 정보
- 환경 정보
비교:
| 방식 | 특징 |
|---|---|
| mode=min | 가벼운 검증 |
| mode=max | 상세한 검증 |
Docker Buildx Bake Provenance와 SBOM 함께 사용하기
실제 보안 환경에서는 SBOM과 Provenance를 함께 사용하는 경우가 많습니다.
설정:
target "production" {
attest = [
"type=provenance",
"type=sbom"
]
}
결과:
Image
↓
Provenance
↓
Build 과정 확인
SBOM
↓
Package 목록 확인
두 기능을 함께 사용하면 Image의 생성 과정과 내부 구성을 모두 확인할 수 있습니다.
Docker Buildx Bake Provenance CI/CD 활용
CI/CD 환경에서는 Image 생성 과정을 자동 기록할 수 있습니다.
구조:
Code Push
↓
CI 실행
↓
Docker Build
↓
Provenance 생성
↓
Registry Push
↓
배포
GitHub Actions 예:
- name: Build Image
run: |
docker buildx bake production \
--push \
--attest type=provenance
효과:
- 자동 검증
- 배포 기록 관리
- 보안 강화
Docker Buildx Bake Provenance Registry 저장
Provenance 정보는 Image와 함께 Registry에 저장할 수 있습니다.
예:
docker buildx bake production \
--push \
--attest type=provenance
구조:
Container Registry
├── Docker Image
└── Provenance Metadata
배포 전에 Image 신뢰성을 확인할 수 있습니다.
Docker Buildx Bake Provenance Image 검증
Image 정보를 확인:
docker buildx imagetools inspect image-name
확인:
- Manifest
- Attestation 정보
- Provenance 데이터
검증 흐름:
Image 다운로드
↓
Provenance 확인
↓
Build 출처 검증
↓
배포 결정
Docker Buildx Bake Provenance 실무 예제
프로젝트:
project/
├── Dockerfile
├── docker-bake.hcl
└── app/
docker-bake.hcl:
target "production" {
tags = [
"registry.company.com/app:v1"
]
attest = [
"type=provenance,mode=max",
"type=sbom"
]
}
실행:
docker buildx bake production --push
결과:
Application Build
↓
SBOM 생성
↓
Provenance 생성
↓
Registry 저장
Docker Buildx Bake Provenance 문제 해결
Provenance가 생성되지 않는 경우
확인:
- Buildx 버전
- Builder 지원 여부
- Registry Push 여부
Registry에서 정보가 보이지 않는 경우
확인:
--push사용 여부- Registry 지원 여부
CI/CD 오류 발생
확인:
- Docker 권한
- Buildx 설정
- Attestation 지원 여부
Docker Buildx Bake Provenance 사용 시 주의사항
첫 번째는 공개 Image에서는 공개되는 정보 범위를 확인해야 합니다.
두 번째는 Production 환경에서는 검증 정책과 함께 운영하는 것이 좋습니다.
세 번째는 SBOM과 함께 사용하면 보안 관리 효과가 증가합니다.
네 번째는 CI/CD Pipeline에 자동 검증 단계를 추가하는 것이 좋습니다.
Best Practice
Docker Buildx Bake Provenance 활용 방법:
- Production Image 적용
- SBOM 함께 생성
- CI/CD 자동 검증
- Registry 저장
- Build 기록 관리
- Supply Chain 보안 강화
자주 묻는 질문
Docker Buildx Bake Provenance는 무엇인가요?
Docker Image가 어떤 과정으로 생성되었는지 기록하는 기능입니다.
SBOM과 차이는 무엇인가요?
SBOM은 Image 내부 Software 목록을 관리하고, Provenance는 Image 생성 과정을 관리합니다.
운영 서버에서 필요한가요?
대규모 서비스, 기업 서버, Kubernetes 환경에서는 점점 중요해지고 있습니다.
Build 정보가 Image에 포함되나요?
Image와 연결된 Attestation 데이터 형태로 관리됩니다.
마무리
Docker Buildx Bake Provenance는 Container Supply Chain 보안을 강화하기 위한 중요한 기술입니다.
Image가 어디에서 생성되었고 어떤 과정을 거쳤는지 확인할 수 있기 때문에 Production 서버 운영 환경에서 신뢰할 수 있는 배포 체계를 구축할 수 있습니다.
특히 SBOM과 함께 활용하면 Image 내부 구성과 Build 과정을 모두 관리할 수 있어 Kubernetes, Cloud, DevOps 환경에서 더욱 효과적으로 사용할 수 있습니다.