Docker Buildx Bake SBOM 사용법 완벽 가이드! 소프트웨어 구성 목록 관리하기

Docker 이미지는 단순히 애플리케이션 코드만 포함하는 것이 아닙니다.

실제 Docker Image 내부에는 다양한 구성 요소가 포함됩니다.

예:

  • 운영체제 패키지
  • 라이브러리
  • 프레임워크
  • 오픈소스 의존성
  • 실행 환경

하지만 Image만 보고 내부에 어떤 소프트웨어가 포함되어 있는지 확인하기는 어렵습니다.

이러한 문제를 해결하기 위해 사용하는 것이 SBOM(Software Bill of Materials) 입니다.

SBOM은 Docker Image 내부에 포함된 모든 소프트웨어 구성 요소 목록을 제공하는 기술입니다.

Docker Buildx Bake에서는 Attestation 기능을 활용하여 SBOM 정보를 생성할 수 있습니다.

예:

docker-bake.hcl

target "app" {

  tags = [
    "company/app:v1"
  ]

  attest = [
    "type=sbom"
  ]

}

실행:

docker buildx bake app --push

결과:

Docker Image 생성

↓

SBOM 생성

↓

Registry 저장

이번 글에서는 Docker Buildx Bake SBOM의 개념부터 생성 방법, 확인 방법, CI/CD 활용, 보안 관리까지 자세히 알아보겠습니다.

Docker Buildx Bake SBOM이란 무엇인가?

SBOM은 Software Bill of Materials의 약자로 소프트웨어 자재 명세서라는 의미입니다.

쉽게 말하면 Docker Image 안에 포함된 모든 소프트웨어 목록입니다.

일반적인 Docker Image:

Application

↓

Container 실행

SBOM 적용:

Application

+

OS Package

+

Library

+

Version 정보

↓

Software 목록 생성

Image 내부 구성을 투명하게 확인할 수 있습니다.

Docker Buildx Bake SBOM이 필요한 이유

현대 서버 환경에서는 오픈소스 보안 관리가 중요합니다.

기존 방식:

Docker Image

↓

내부 패키지 확인 어려움

문제:

  • 취약점 발견 어려움
  • 사용 라이브러리 파악 어려움
  • 보안 감사 어려움

SBOM 사용:

Docker Image

↓

Software 목록 확인

↓

취약점 분석 가능

장점:

  • 보안 관리 향상
  • 라이선스 확인 가능
  • 취약점 대응 가능
  • 이미지 신뢰성 향상

Docker Buildx Bake SBOM 생성 방법

docker-bake.hcl:

target "production" {

  context = "."

  tags = [
    "company/app:v1"
  ]

  attest = [
    "type=sbom"
  ]

}

빌드:

docker buildx bake production --push

생성 과정:

Dockerfile

↓

Docker Build

↓

Software 분석

↓

SBOM 생성

↓

Registry 저장

Docker Buildx Bake SBOM과 Provenance 차이

Docker Buildx에서는 SBOM과 Provenance를 함께 사용하는 경우가 많습니다.

SBOM

확인 정보:

  • 어떤 패키지가 포함되었는가?
  • 어떤 버전인가?
  • 어떤 라이브러리를 사용하는가?

예:

Ubuntu 22.04

OpenSSL 3.x

Python 3.x

Node.js 20

Provenance

확인 정보:

  • 어떻게 빌드되었는가?
  • 어떤 소스에서 생성되었는가?
  • 어떤 환경에서 빌드되었는가?

비교:

기능목적
SBOM내부 구성 요소 확인
Provenance빌드 과정 검증

둘을 함께 사용하면 이미지 보안을 강화할 수 있습니다.

Docker Buildx Bake SBOM과 Attestation 함께 사용하기

운영 환경에서는 SBOM과 Provenance를 함께 적용하는 것이 좋습니다.

docker-bake.hcl:

target "production" {

  attest = [
    "type=sbom",
    "type=provenance"
  ]

}

결과:

Docker Image

+

SBOM 정보

+

Build Provenance

이미지 공급망 보안을 강화할 수 있습니다.

Docker Buildx Bake SBOM 확인 방법

Image Push 후 정보를 확인합니다.

명령어:

docker buildx imagetools inspect company/app:v1

확인 내용:

Image Manifest

↓

Attestation

↓

SBOM 정보

Registry에 저장된 메타데이터를 확인할 수 있습니다.

Docker Buildx Bake SBOM과 CI/CD 활용

CI/CD 환경에서는 Build 단계에서 자동으로 SBOM을 생성할 수 있습니다.

예:

GitHub Actions:

- name: Build Image

  run: |

    docker buildx bake production --push

docker-bake.hcl:

target "production" {

  attest = [
    "type=sbom"
  ]

}

자동 과정:

Code Push

↓

CI 실행

↓

Docker Build

↓

SBOM 생성

↓

Registry 저장

Docker Buildx Bake SBOM과 Kubernetes 활용

Kubernetes 환경에서는 수많은 Container Image를 운영합니다.

문제:

수백 개 Image 운영

↓

내부 구성 확인 어려움

SBOM 적용:

Image

↓

Software 목록 확인

↓

취약점 검사

대규모 Kubernetes 환경에서 보안 관리가 쉬워집니다.

Docker Buildx Bake SBOM 실무 예제

프로젝트:

project/

├── Dockerfile

├── docker-bake.hcl

└── deployment.yaml

docker-bake.hcl:

target "production" {

  tags = [
    "registry.company.com/app:v1"
  ]

  platforms = [
    "linux/amd64",
    "linux/arm64"
  ]

  attest = [
    "type=sbom",
    "type=provenance"
  ]

}

실행:

docker buildx bake production --push

결과:

Image 생성

↓

SBOM 생성

↓

Registry 저장

↓

Kubernetes 배포

Docker Buildx Bake SBOM 보안 활용

SBOM은 취약점 관리 시스템과 함께 사용할 수 있습니다.

활용:

  • CVE 검색
  • 라이선스 검사
  • 보안 감사
  • 공급망 관리

예:

SBOM

↓

취약점 데이터베이스 확인

↓

위험 패키지 발견

↓

업데이트 진행

Docker Buildx Bake SBOM 문제 해결

SBOM이 생성되지 않는 경우

확인:

docker buildx version

최신 Buildx 환경인지 확인합니다.

Registry에서 보이지 않는 경우

확인:

  • Push 여부
  • Registry 지원 여부
  • OCI Artifact 지원 여부

Package 정보가 부족한 경우

확인:

  • Base Image 종류
  • Package Manager
  • Build 설정

Docker Buildx Bake SBOM 사용 시 주의사항

첫 번째는 SBOM 정보에 민감한 내부 정보가 포함될 수 있습니다.

두 번째는 운영 정책에 맞는 공개 범위를 결정해야 합니다.

세 번째는 정기적으로 취약점 검사를 진행하는 것이 좋습니다.

네 번째는 오래된 Image의 SBOM도 관리해야 합니다.

Best Practice

Docker Buildx Bake SBOM 활용 방법:

  • Production Image 적용
  • Provenance와 함께 사용
  • Registry 저장
  • CI/CD 자동 생성
  • 취약점 검사 연결
  • Image 버전별 관리

자주 묻는 질문

Docker Buildx Bake SBOM은 무엇인가요?

Docker Image 내부에 포함된 소프트웨어 구성 목록을 생성하는 기능입니다.

SBOM이 필요한 이유는 무엇인가요?

Image 내부 패키지와 라이브러리를 확인하고 보안 취약점을 관리하기 위해 필요합니다.

SBOM과 Provenance는 같이 사용할 수 있나요?

가능합니다.

두 기능을 함께 사용하면 이미지 구성과 생성 과정을 모두 확인할 수 있습니다.

Kubernetes에서도 활용할 수 있나요?

가능합니다.

Container Image 보안 관리와 취약점 분석에 활용할 수 있습니다.

마무리

Docker Buildx Bake SBOM은 Docker Image 내부 구성 요소를 투명하게 관리하기 위한 중요한 보안 기능입니다.

단순히 이미지를 생성하는 것을 넘어 어떤 소프트웨어가 포함되어 있는지 확인할 수 있어 기업 환경과 대규모 서버 운영에서 매우 중요한 역할을 합니다.

특히 Kubernetes, CI/CD, Private Registry 환경에서는 SBOM과 Provenance를 함께 활용하면 더욱 안전한 Docker 공급망 보안 환경을 구축할 수 있습니다.

댓글 남기기