Docker Image를 운영 환경에서 사용할 때 단순히 Image를 생성하는 것만으로는 충분하지 않은 경우가 많습니다.
특히 기업 환경과 Cloud Native 환경에서는 다음과 같은 정보가 필요합니다.
- Image가 어디에서 생성되었는지
- 어떤 Source Code로 Build 되었는지
- Build 과정이 신뢰할 수 있는지
- 보안 검증 정보가 있는지
- Software Supply Chain 정보 관리
이러한 요구사항을 해결하기 위해 Docker Buildx에서는 Attest(Attestation) 기능을 제공합니다.
Docker Buildx Bake에서는 attest 옵션을 사용하여 Image에 보안 인증 정보와 Build Metadata를 추가할 수 있습니다.
예:
docker-bake.hcl
target "app" {
tags = [
"company/app:v1.0.0"
]
attest = [
"type=provenance",
"type=sbom"
]
}
실행:
docker buildx bake app --push
결과:
Docker Image 생성
↓
Build Provenance 추가
↓
SBOM 정보 생성
↓
Registry 저장
이번 글에서는 Docker Buildx Bake Attest의 개념부터 Provenance, SBOM, 보안 공급망 관리, CI/CD 활용 방법까지 자세히 알아보겠습니다.
Docker Buildx Bake Attest란 무엇인가?
Docker Buildx Bake Attest는 Docker Image에 추가 인증 정보를 생성하는 기능입니다.
쉽게 설명하면:
일반 Image:
Docker Image
↓
실행 가능
Attest 적용:
Docker Image
+
Build 정보
+
Source 정보
+
Software 목록
↓
검증 가능한 Image
즉, Image가 어떻게 만들어졌는지 추적할 수 있도록 추가 정보를 저장합니다.
Docker Buildx Bake Attest가 필요한 이유
현대의 Software 공급망에서는 Image 신뢰성이 중요합니다.
기존 방식:
Source Code
↓
Docker Build
↓
Image 생성
문제:
- 누가 Build했는지 확인 어려움
- 어떤 코드인지 추적 어려움
- 포함된 Software 확인 어려움
Attest 사용:
Source Code
↓
Build 정보 기록
↓
Image 생성
↓
검증 가능
장점:
- 보안 강화
- 공급망 관리
- 취약점 분석 지원
- 배포 신뢰성 향상
Docker Buildx Bake Attest 기본 설정
docker-bake.hcl:
target "production" {
attest = [
"type=provenance"
]
}
실행:
docker buildx bake production --push
결과:
Build Provenance 생성
↓
Image와 함께 저장
Docker Buildx Bake Attest 종류
Docker Buildx Attest는 대표적으로 두 가지 방식이 많이 사용됩니다.
Provenance Attestation
Provenance는 Image가 어떻게 생성되었는지 기록하는 정보입니다.
저장 정보:
- Build 시스템
- Source Code 위치
- Build 시간
- Build 과정
예:
attest = [
"type=provenance"
]
활용:
- Build 검증
- 공급망 보안
- 감사 기록
SBOM Attestation
SBOM(Software Bill of Materials)은 Image 내부 Software 목록을 기록합니다.
예:
attest = [
"type=sbom"
]
저장 정보:
Image
↓
Package 목록
↓
Library 정보
↓
Version 정보
활용:
- 취약점 검사
- License 관리
- 보안 분석
Docker Buildx Bake Attest 여러 개 사용하기
Provenance와 SBOM을 동시에 추가할 수 있습니다.
예:
target "production" {
attest = [
"type=provenance",
"type=sbom"
]
}
결과:
Docker Image
├── Provenance
└── SBOM
운영 환경에서 많이 사용하는 구성입니다.
Docker Buildx Bake Attest와 Registry Push
Attestation 정보는 일반적으로 Registry에 저장합니다.
예:
target "production" {
tags = [
"registry.company.com/app:v1"
]
attest = [
"type=provenance",
"type=sbom"
]
}
실행:
docker buildx bake production --push
흐름:
Build
↓
Attestation 생성
↓
Image Push
↓
Registry 저장
Docker Buildx Bake Attest 확인 방법
Image 정보 확인:
docker buildx imagetools inspect company/app:v1
확인:
Manifest
↓
Attestation 정보
↓
Provenance
↓
SBOM
Image의 생성 정보를 확인할 수 있습니다.
Docker Buildx Bake Attest와 CI/CD 활용
CI/CD 환경에서는 Build 신뢰성을 높이기 위해 Attest를 사용합니다.
예:
GitHub Actions:
- name: Build Image
run: |
docker buildx bake production --push
Bake:
target "production" {
attest = [
"type=provenance",
"type=sbom"
]
}
흐름:
Code Commit
↓
CI Build
↓
Attestation 생성
↓
Registry 저장
Docker Buildx Bake Attest와 Supply Chain Security
Software Supply Chain 공격이 증가하면서 Image 생성 과정을 검증하는 것이 중요해졌습니다.
Attest 활용:
Source
↓
Build
↓
Image
↓
검증 정보
관리 가능:
- 어디서 생성되었는지
- 어떤 환경에서 Build했는지
- 어떤 Package가 포함되었는지
Docker Buildx Bake Attest SBOM 활용 예제
예:
target "secure-build" {
attest = [
"type=sbom"
]
}
결과:
Image
↓
Package 목록 저장
↓
취약점 검사 가능
보안 점검 과정에서 활용됩니다.
Docker Buildx Bake Attest 실무 예제
프로젝트:
project/
├── Dockerfile
├── docker-bake.hcl
└── security-report/
docker-bake.hcl:
target "production" {
tags = [
"registry.company.com/app:v2.0.0"
]
attest = [
"type=provenance",
"type=sbom"
]
}
실행:
docker buildx bake production --push
결과:
Image 생성
↓
Build 정보 추가
↓
SBOM 생성
↓
Registry 저장
Docker Buildx Bake Attest 문제 해결
Attestation 정보가 보이지 않는 경우
확인:
docker buildx imagetools inspect image-name
Registry Push 여부를 확인합니다.
SBOM 생성 오류
확인:
- Buildx 버전
- Builder 설정
- Registry 지원 여부
CI 환경 오류
확인:
- 권한 설정
- Docker Buildx 최신 버전
- Push 권한
Docker Buildx Bake Attest 사용 시 주의사항
첫 번째는 Attestation 정보가 저장될 Registry 환경을 확인해야 합니다.
두 번째는 SBOM에는 Image 내부 Software 정보가 포함될 수 있습니다.
세 번째는 운영 환경에서는 Provenance와 SBOM 사용을 권장합니다.
네 번째는 CI/CD Build 환경과 정책을 함께 관리해야 합니다.
Best Practice
Docker Buildx Bake Attest 활용 방법:
- Production Image 적용
- Provenance 활성화
- SBOM 생성
- Registry 저장
- CI/CD 자동화
- Supply Chain 보안 강화
자주 묻는 질문
Docker Buildx Bake Attest는 무엇인가요?
Docker Image에 Build 검증 정보와 Software 정보를 추가하는 기능입니다.
Provenance와 SBOM 차이는 무엇인가요?
Provenance는 Image 생성 과정 정보이고, SBOM은 Image 내부 Software 목록입니다.
운영 환경에서도 필요한가요?
필요합니다.
특히 기업 환경과 Cloud 환경에서 Image 신뢰성 관리에 활용됩니다.
CI/CD에서 사용할 수 있나요?
가능합니다.
자동 Build 과정에서 Attestation 정보를 생성할 수 있습니다.
마무리
Docker Buildx Bake Attest는 Docker Image의 신뢰성과 보안을 높이는 중요한 기능입니다.
Provenance를 통해 Image 생성 과정을 추적하고, SBOM을 통해 포함된 Software 정보를 관리할 수 있습니다.
특히 Kubernetes, Cloud, CI/CD 환경에서는 Attest 기능을 활용하면 더욱 안전하고 검증 가능한 Container 공급망을 구축할 수 있습니다.