본문 바로가기
클라우드/쿠버네티스 보안

SBOM, 이제 어렵지 않아요! 🤯 bom 커맨드로 손쉽게 SBOM 만들기

by gasbugs 2025. 10. 6.

안녕하세요! 👋 오늘은 소프트웨어 공급망 보안의 핵심! SBOM(Software Bill of Materials)에 대해 이야기하고, 터미널에서 명령어 한 줄로 SBOM을 뚝딱 만들어내는 멋진 도구, bom을 소개해 드리려고 합니다.

 

📜 SBOM, 그게 대체 뭔가요?

우리가 과자 한 봉지를 사도 뒷면에 어떤 재료가 들어갔는지 성분표가 꼼꼼히 적혀있죠? SBOM은 바로 소프트웨어의 성분표입니다.

 

내 애플리케이션을 만드는 데 사용된 모든 오픈소스 라이브러리, 프레임워크, 모듈 등의 목록과 그 버전, 라이선스 정보를 담고 있는 명세서라고 할 수 있어요. 최근 Log4j 사태처럼 오픈소스 취약점 하나가 큰 파장을 일으키면서, 내가 사용하는 소프트웨어에 어떤 부품이 들어있는지 파악하는 SBOM의 중요성은 날이 갈수록 커지고 있습니다. 🛡️

 

하지만... 막상 SBOM을 만들려고 하면 막막하게 느껴질 수 있습니다. "내 프로젝트의 모든 의존성을 어떻게 다 찾아내지?" 하는 고민이 들죠. 바로 이럴 때 우리를 구해줄 영웅이 등장합니다! ✨

✨ Kubernetes가 선택한 SBOM 도구, bom 커맨드!

bom은 Kubernetes의 SIG-Release(릴리스 관리 그룹)에서 개발하고 있는 오픈소스 SBOM 생성 도구입니다. 복잡한 설정 없이 간단한 명령어로 소스 코드 디렉터리, 컨테이너 이미지 등 다양한 대상으로부터 SBOM을 손쉽게 생성할 수 있도록 도와줍니다.

bom의 핵심 장점!

  • 🚀 간단하고 빠르다: 설치도, 사용법도 정말 간단해서 누구나 바로 시작할 수 있습니다.
  • 🌐 표준 형식 지원: SBOM의 양대 산맥인 SPDXCycloneDX 포맷을 모두 지원하여 다른 보안 도구와 쉽게 연동할 수 있습니다.
  • 💪 다재다능: 소스 코드 디렉터리뿐만 아니라, 도커와 같은 컨테이너 이미지, 심지어 단일 파일에 대해서도 SBOM 생성이 가능합니다.

🛠️ bom 설치부터 시작해볼까요?

bom은 다양한 방법으로 설치할 수 있습니다. 가장 편한 방법을 선택해 보세요!

1. Homebrew 사용 (macOS/Linux) 🍺 가장 간단한 방법입니다. 터미널에 아래 명령어만 입력하면 설치 끝!

brew install bom

 

2. Go 언어로 설치 🐹 Go가 설치되어 있다면 아래 명령어로 설치할 수 있습니다.

go install sigs.k8s.io/bom/cmd/bom@latest

 

3. 릴리스 바이너리 다운로드 💻 공식 GitHub 릴리스 페이지에서 자신의 운영체제에 맞는 바이너리 파일을 직접 다운로드하여 사용할 수도 있습니다.

설치가 완료되었다면, 터미널에서 버전 확인 명령어로 성공적으로 설치되었는지 확인해 보세요!

bom version

👨‍💻 자, 이제 SBOM을 직접 만들어봅시다! (핵심 사용법)

bom 사용법은 정말 직관적입니다. 가장 많이 사용되는 두 가지 시나리오를 통해 알아볼까요?

시나리오 1: 소스 코드 디렉터리에서 SBOM 생성하기 📂

프로젝트 소스 코드가 있는 디렉터리를 분석해서 SBOM을 만드는 가장 일반적인 경우입니다.

기본 사용법 프로젝트 최상위 디렉터리로 이동한 후, 아래 명령어를 실행해 보세요.

# 현재 디렉터리(.)를 분석하여 SBOM 생성
bom generate -d .

 

그러면 터미널에 내 프로젝트가 의존하는 패키지 목록이 주르륵 출력되는 것을 볼 수 있습니다.

표준 형식으로 파일 저장하기 터미널 출력 대신, 표준 형식(SPDX 또는 CycloneDX)으로 파일에 저장하는 것이 일반적입니다. -f 또는 --format 옵션을 사용하면 됩니다.

# SPDX 형식(JSON)으로 SBOM 파일 생성
bom generate -d . -f spdx-json > bom.spdx.json

# CycloneDX 형식(JSON)으로 SBOM 파일 생성
bom generate -d . -f cyclonedx-json > bom.cdx.json

이렇게 생성된 bom.spdx.json 또는 bom.cdx.json 파일을 보안 스캐너에 넣거나 자산 관리 시스템에 업로드하여 활용할 수 있습니다. 📝

시나리오 2: 컨테이너 이미지에서 SBOM 생성하기 🚢

DevOps 환경에서는 컨테이너 이미지의 구성 요소를 파악하는 것이 매우 중요합니다. bom은 이미지 이름만 알려주면 바로 분석을 시작합니다.

 

기본 사용법 -i 또는 --image 옵션을 사용해 분석하고 싶은 컨테이너 이미지를 지정합니다.

# 공식 nginx:latest 이미지 분석
bom generate -i nginx:latest

 

표준 형식으로 파일 저장하기 마찬가지로 -f 옵션을 사용하여 파일로 저장할 수 있습니다.

# nginx 이미지의 SBOM을 CycloneDX 형식으로 저장
bom generate -i nginx:latest -f cyclonedx-json > nginx-sbom.cdx.json

이제 컨테이너 이미지 내부에 어떤 소프트웨어 패키지들이 설치되어 있는지 투명하게 들여다볼 수 있게 되었습니다! 🔍

✅ 마치며

소프트웨어 공급망 보안의 첫걸음은 내가 무엇을 사용하고 있는지 아는 것에서 시작됩니다. SBOM은 더 이상 전문가들만의 영역이 아닙니다. bom과 같은 훌륭한 도구 덕분에 이제 우리 모두가 손쉽게 프로젝트의 성분표를 만들고 관리할 수 있게 되었습니다.

지금 바로 여러분의 프로젝트에 bom을 적용해서 숨어있는 의존성을 확인하고, 더 안전한 소프트웨어를 만들어보는 것은 어떨까요?

더 자세한 정보가 필요하다면 bom 공식 GitHub 저장소를 방문해 보세요!


태그: SBOM, Software Bill of Materials, bom, CLI, Security, DevSecOps, Kubernetes, Open Source, CycloneDX, SPDX, 소프트웨어 공급망 보안