Docker 이미지는 다양한 패키지와 라이브러리를 포함하고 있습니다.
예:
- 운영체제 패키지
- 애플리케이션 라이브러리
- 오픈소스 의존성
- 시스템 도구
하지만 운영 환경에서 중요한 것은 단순히 이미지가 실행되는 것이 아닙니다.
다음 정보를 확인할 수 있어야 합니다.
- 어떤 패키지가 포함되어 있는가?
- 취약한 라이브러리가 존재하는가?
- 어떤 오픈소스를 사용하고 있는가?
이러한 정보를 관리하기 위해 사용하는 것이 SBOM(Software Bill of Materials)입니다.
Docker Buildx는 이미지에 SBOM 정보를 생성할 수 있는 기능을 제공합니다.
바로 --sbom 옵션입니다.
예:
docker buildx build \
--sbom=true \
-t app:v1 \
--push .
빌드된 Docker 이미지에 포함된 소프트웨어 구성 정보를 생성할 수 있습니다.
이번 글에서는 Docker Buildx Build –sbom의 개념부터 SBOM 확인 방법, 보안 취약점 관리, CI/CD 활용 방법까지 자세히 알아보겠습니다.
Docker Buildx Build –sbom이란 무엇인가?
--sbom은 Docker 이미지 내부의 소프트웨어 구성 목록을 생성하는 옵션입니다.
기본 형식:
docker buildx build \
--sbom=true \
-t 이미지명 .
동작 과정:
Dockerfile
↓
이미지 빌드
↓
패키지 분석
↓
SBOM 생성
↓
이미지 연결
이미지 내부 구성 요소를 확인할 수 있습니다.
SBOM이란 무엇인가?
SBOM은 Software Bill of Materials의 약자입니다.
쉽게 말하면:
소프트웨어 부품 목록
입니다.
예:
Docker Image
├── Ubuntu
├── OpenSSL
├── Python
├── Node.js Package
└── Application Library
어떤 구성 요소가 포함되어 있는지 기록합니다.
Docker Buildx Build –sbom을 사용하는 이유
운영 환경에서는 다음 문제가 발생할 수 있습니다.
취약한 라이브러리 포함
오래된 패키지 사용
보안 업데이트 누락
SBOM을 사용하면:
- 포함 패키지 확인
- 취약점 분석
- 라이선스 관리
- 보안 감사
가 가능합니다.
Docker Buildx Build –sbom 기본 사용법
기본:
docker buildx build \
--sbom=true \
-t app:v1 .
빌드 완료 후 이미지에 SBOM 정보가 추가됩니다.
Docker Buildx Build –sbom과 –attest 관계
SBOM은 Attestation 기능의 한 종류입니다.
예:
docker buildx build \
--attest type=sbom \
-t app:v1 .
또는:
docker buildx build \
--sbom=true \
-t app:v1 .
같은 목적입니다.
차이:
Provenance
= 어떻게 만들어졌는가
SBOM
= 무엇이 들어있는가
SBOM 정보 확인하기
이미지 확인:
docker buildx imagetools inspect app:v1
결과:
Attestations:
SBOM
이미지 구성 정보가 연결된 것을 확인할 수 있습니다.
Docker Buildx Build –sbom 실무 활용 예제
운영 이미지 보안 관리
빌드:
docker buildx build \
--sbom=true \
-t company/app:v1 \
--push .
생성:
Docker Image
+
SBOM 정보
운영 배포 전 포함된 패키지를 분석할 수 있습니다.
CI/CD 보안 검사 활용
CI 과정:
소스 코드
↓
Docker Build
↓
SBOM 생성
↓
취약점 검사
↓
배포
자동 보안 검사를 구성할 수 있습니다.
SBOM과 취약점 관리
예:
SBOM 확인:
openssl 1.1.1
python 3.x
nginx
취약점 데이터베이스와 비교:
CVE 발견
↓
패키지 업데이트
↓
이미지 재빌드
보안 관리가 쉬워집니다.
Linux 서버 문제 해결
운영 서버에서 보안 점검을 진행했습니다.
기존 이미지:
docker pull company/app:v1
문제:
포함 라이브러리 확인 불가
SBOM 추가 빌드:
docker buildx build \
--sbom=true \
-t company/app:v2 \
--push .
확인:
docker buildx imagetools inspect company/app:v2
결과:
Attestations:
SBOM
포함 패키지를 확인하고 취약점 검사를 진행할 수 있었습니다.
Docker Buildx Build –sbom 사용 시 주의사항
첫 번째는 SBOM 생성 과정에서 추가 시간이 발생할 수 있습니다.
두 번째는 Registry가 Attestation 저장을 지원해야 합니다.
세 번째는 SBOM 자체를 주기적으로 관리해야 합니다.
네 번째는 SBOM만으로 모든 보안 문제가 해결되는 것은 아닙니다.
Best Practice
Docker Buildx Build –sbom 활용 방법:
- 운영 이미지에 SBOM 적용
- CI/CD 취약점 검사 연결
- Provenance와 함께 사용
- 정기적인 패키지 분석
- 오픈소스 라이선스 관리
- 이미지 변경 시 SBOM 갱신
자주 묻는 질문
Docker Buildx Build –sbom은 무엇인가요?
Docker 이미지 내부 소프트웨어 구성 정보를 생성하는 기능입니다.
SBOM은 왜 필요한가요?
이미지에 포함된 패키지와 라이브러리를 확인하고 보안 관리를 하기 위해 필요합니다.
SBOM과 Provenance 차이는 무엇인가요?
SBOM은 구성 요소, Provenance는 생성 과정을 기록합니다.
모든 Docker 이미지에 SBOM이 필요한가요?
운영 서비스나 보안 관리가 필요한 환경에서 특히 유용합니다.
마무리
Docker Buildx Build –sbom은 Docker 이미지의 내부 구성 요소를 투명하게 관리하기 위한 핵심 기능입니다.
어떤 패키지와 라이브러리가 포함되어 있는지 확인할 수 있어 취약점 관리, 보안 감사, 오픈소스 관리에 활용할 수 있습니다.
특히 기업 환경이나 CI/CD 배포 환경에서는 --sbom과 --attest, Provenance 기능을 함께 사용하면 더욱 안전한 Docker 공급망 관리 환경을 구축할 수 있습니다.