본문으로 건너뛰기

SBOM 기본: 소프트웨어 부품 명세서 입문

1. 이 챕터에서 하는 일

이 챕터에서는 SBOM의 개념, 최소 필수 요소, 대표 포맷, 그리고 SBOM 생태계를 이해합니다.

실습은 없습니다. 읽기와 이해에 집중하면 됩니다.

이후 05-tools/sbom-generation 챕터에서 실제 SBOM을 생성할 때 이 배경 지식이 기반이 됩니다. 명령어를 실행하기 전에 "왜 이 도구를 쓰는가", "이 파일은 무엇인가"를 이해하는 것이 목표입니다.


2. SBOM이란 무엇인가

정의

SBOM(Software Bill of Materials)은 소프트웨어에 포함된 모든 구성요소의 목록입니다. 오픈소스 라이브러리, 프레임워크, 런타임, 빌드 도구 등 소프트웨어를 구성하는 모든 재료를 나열합니다.

식품 성분표 비유

식품 포장지에는 "밀가루, 설탕, 계란, 버터 ..."가 적혀 있습니다. SBOM은 소프트웨어의 성분표입니다.

"이 소프트웨어에는 React 18.2.0, axios 1.4.0, log4j 2.14.0이 들어있습니다."

소비자(납품처, 고객, 규제기관)는 이 목록을 보고 안전성과 라이선스를 확인합니다.

SBOM이 없으면 무엇을 모르는가

SBOM 없이는 다음 질문에 답하기 어렵습니다.

상황문제
라이선스 감사어떤 오픈소스를 쓰는지 몰라 라이선스 위반 위험
Log4Shell 같은 취약점 발표우리 제품이 영향을 받는지 즉각 파악 불가
납품처의 SBOM 요청제공할 수 없어 납품 계약에 차질
공급망 감사사용한 컴포넌트 증빙 자료 없음

3. SBOM 최소 필수 요소 (CISA 2026 기준)

2026년 7월 CISA(미국 사이버보안·인프라보안국)가 NSA, FBI 및 한국을 포함한 국제 파트너 기관과 함께 발표한 2026 Minimum Elements for a SBOM 이 2021년 NTIA 최소 요소를 대체했습니다. 기존 7가지 요소는 대부분 그대로 유지되므로 아래 표를 먼저 익히고, 이어지는 신규 필수 요소를 함께 보면 됩니다.

NTIA(미국 통신정보관리청, National Telecommunications and Information Administration)가 2021년에 정의한 7가지 요소입니다.

요소영문명설명예시
공급자명Supplier Name컴포넌트를 만든 조직 또는 개인Apache Software Foundation
컴포넌트명Component Name패키지 또는 라이브러리 이름log4j-core
버전Version정확한 버전 문자열2.14.1
고유 식별자Other Unique IdentifiersCPE, PURL, 해시 등pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1
의존성 관계Dependency Relationship다른 컴포넌트와의 관계spring-boot가 log4j-core에 의존
SBOM 작성자Author of SBOM DataSBOM을 생성한 도구 또는 사람syft v1.x
생성 시각TimestampSBOM이 생성된 날짜와 시간2024-01-15T09:30:00Z

2026년 판에서 새로 필수가 된 요소는 다음과 같습니다.

요소설명
컴포넌트 해시해시 값과 알고리즘. 무결성 검증용으로, 2021년 권고에서 필수로 승격
컴포넌트 라이선스컴포넌트의 라이선스. 선택 항목에서 핵심 필드로 승격
SBOM 생성 도구명어떤 도구가 이 SBOM을 만들었는지
생성 맥락빌드 전·후 등 SBOM이 만들어진 수명주기 단계

적용 범위도 넓어져 오픈소스, AI 소프트웨어, SaaS를 포함한 모든 소프트웨어가 대상입니다. 라이선스가 필수 필드가 된 점은 ISO/IEC 5230 라이선스 컴플라이언스와 직접 맞닿아 있어, SBOM 하나로 두 요구를 함께 충족하기 쉬워졌습니다.

전체 요소 목록과 필드 명칭은 CISA 2026 Minimum Elements for a SBOM 원문에서 확인하세요.

이 단계는 ISO/IEC 18974 [G3B.1 배경] 요구사항의 이해 기반을 충족합니다.

고유 식별자(PURL)란?

PURL(Package URL)은 패키지를 전 세계적으로 유일하게 식별하는 표준 형식입니다.

pkg:{타입}/{네임스페이스}/{이름}@{버전}

예시:

  • pkg:npm/lodash@4.17.21 — npm 패키지
  • pkg:pypi/requests@2.28.0 — Python 패키지
  • pkg:maven/org.springframework/spring-core@6.0.0 — Java Maven 패키지

PURL이 있으면 취약점 데이터베이스(NVD, OSV)와 자동으로 매핑하여 CVE를 찾을 수 있습니다.


4. SBOM 포맷 비교

현재 업계에서 주로 사용하는 두 가지 표준 포맷이 있습니다.

항목SPDXCycloneDX
관리 주체Linux FoundationOWASP
현행 안정판3.0.1 (2024-12-17)1.7 (2025-10-21)
표준화ISO/IEC 5962:2021ECMA-424 2판 (2025-12 발행, 1.7 정의)
특징라이선스 컴플라이언스 중심보안 특화 필드 포함, JSON/XML/Protobuf 지원
지원 도구fossology, reuse, spdx-toolssyft, cdxgen, Dependency-Track
주요 사용처라이선스 감사, 오픈소스 기여보안 취약점 분석, 공급망 보안

SPDX는 3.1 첫 Release Candidate가 2026년 1월 24일 공개돼 검토가 진행 중입니다. 아직 정식 판이 아니므로 실무 도입 기준은 3.0.1입니다. CycloneDX 1.7은 2025년 12월 ECMA-424 2판으로 국제 표준 문서에 반영됐고, 사양 저장소에는 1.7.1 패치(2026-06-02)까지 나와 있습니다. specVersion 값은 패치와 무관하게 1.7입니다.

이 키트에서 CycloneDX를 선택한 이유

  1. 도구 지원이 풍부: syft, cdxgen 모두 CycloneDX를 기본 출력으로 지원합니다
  2. 보안 특화 필드: 취약점 정보(VEX)를 SBOM 안에 직접 포함할 수 있습니다
  3. JSON 형식: 사람이 읽기 쉽고 CI/CD 파이프라인과 API 연동이 용이합니다
  4. Dependency-Track 연동: SBOM 관리 플랫폼과 완벽하게 연동됩니다

5. SBOM 생태계

SBOM은 단독으로 존재하지 않습니다. 생성 → 관리 → 분석 → 공유의 흐름으로 이어집니다.

생성 도구 소개

syft

  • 제공: Anchore
  • 용도: Docker 이미지, 컨테이너, 파일시스템에서 SBOM 생성
  • 특징: 설치가 간단하고 다양한 언어 런타임을 자동 감지
  • 명령어: syft <이미지명> -o cyclonedx-json

cdxgen

  • 제공: OWASP
  • 용도: 소스코드 디렉토리의 패키지 매니페스트 분석
  • 특징: package.json, pom.xml, requirements.txt 등 언어별 파일을 자동 인식
  • 명령어: cdxgen -o bom.json

두 도구 모두 05-tools/sbom-generation 챕터에서 실습합니다.

AI SBOM: 모델과 데이터셋까지 담는 확장

AI 시스템을 개발하는 조직에는 일반 SBOM만으로 부족합니다. 코드 의존성 외에 사전 훈련 모델(Llama 등)과 학습 데이터셋도 라이선스 의무가 있는 공급망 구성 요소이기 때문입니다. 이를 담는 확장이 AI SBOM입니다.

사실상의 산업 표준 형식은 두 가지입니다. SPDX 3.0 AI Profile은 라이선스와 저작권 표현이 정밀하고, CycloneDX 1.7 ML-BOM은 모델 카드(성능, 윤리, 보안) 메타데이터가 풍부합니다. 조직은 한쪽 또는 양쪽을 채택할 수 있습니다. 2026-05-12에는 G7 사이버보안 워킹그룹이 "SBOM for AI: Minimum Elements"를 발표해, 일반 SBOM 최소 요소에 더해 AI 시스템이 추가로 담아야 할 요소를 7개 클러스터(메타데이터, 시스템 수준 속성, 모델, 데이터셋 속성, 인프라, 보안 속성, 성능 지표)로 정의했고, CISA 2026 최소 요소 개정판도 AI 구성 요소 부분을 이 문서로 위임합니다.

직접 만들어 보려면 이 키트의 5.4 AI SBOM 실습에서 BomLens로 HuggingFace 모델의 ML-BOM 을 생성해 볼 수 있습니다.

이 키트의 실습(챕터 05)은 일반 SBOM을 대상으로 합니다. AI 시스템까지 다루려면 조항 체크리스트, 단계별 구축 로드맵, 도구 사용법(OWASP AIBOM Generator, cdxgen)을 담은 KWG AI SBOM 컴플라이언스 가이드를 참조하세요. AI 코딩 도구 사용 시의 법적 고려는 AI 코딩 거버넌스에서 다룹니다.


6. 자주 묻는 질문

Q: SBOM을 만들면 회사 기술이 노출되지 않나요?

A: SBOM은 사용한 오픈소스 목록이지 독자 개발 코드가 아닙니다. 노출되는 것은 "어떤 오픈소스 라이브러리를 사용하는가"입니다. 이미 대부분의 경쟁사가 같은 라이브러리를 사용하므로 경쟁 우위와 무관합니다.


Q: 오픈소스가 없는 소프트웨어도 SBOM이 필요한가요?

A: 현실적으로 순수 독자 개발 소프트웨어는 극히 드뭅니다. 빌드 도구, 런타임, 표준 라이브러리조차 오픈소스인 경우가 많습니다. SBOM을 생성해보면 예상보다 많은 오픈소스 컴포넌트가 발견됩니다.


Q: SBOM은 얼마나 자주 갱신해야 하나요?

A: 최소 릴리즈마다 갱신을 권장합니다. CI/CD 파이프라인에 통합하면 자동으로 최신 상태를 유지할 수 있습니다. ISO/IEC 18974는 SBOM의 최신성 유지를 요구합니다.


Q: 납품처가 SBOM을 요구하면 어떻게 해야 하나요?

A: 이 키트를 따라가면 CycloneDX JSON 형식의 SBOM을 생성할 수 있습니다. 납품처가 다른 포맷을 요구하는 경우 변환 도구를 사용하거나 담당자와 협의하여 조정할 수 있습니다.


7. 완료 확인 체크리스트

  • SBOM의 정의와 필요성을 설명할 수 있다
  • SBOM 최소 필수 요소(CISA 2026 기준)를 알고 있다
  • SPDX vs CycloneDX 차이를 이해했다
  • SBOM 생태계(생성 → 관리 → 분석 → 공유)를 파악했다

8. 다음 단계

이 문서를 읽었다면 SBOM의 개념과 생태계를 충분히 이해한 것입니다.