SBOM
포털은 가장 최근 성공 스캔으로부터 Software Bill of Materials(SBOM) 산출물을 생성합니다. 4가지 교환 포맷과 attribution NOTICE 파일을 지원합니다.
이 페이지는 TRUSCA가 스캔으로부터 생성한 SBOM을 내보내는(export) 방법을 다룹니다. 반대로 고객 도구가 이미 만든 SBOM(CycloneDX 또는 SPDX)을 업로드해 TRUSCA가 CVE를 매칭하고 적합성을 채점하게 하려면 SBOM 업로드와 스캔 → SBOM 업로드을 참고하세요.

릴리스를 출고하는 엔지니어, 산출물을 제출하는 컴플라이언스 리드, EO 14028에 따라 SBOM 요청을 처리하는 고객. 팀 멤버십 기반 읽기 권한.
지원 포맷
| 포맷 | 쿼리 값 (format=) | MIME | 사용 사례 |
|---|---|---|---|
| CycloneDX 1.6 (JSON) | cyclonedx-json | application/vnd.cyclonedx+json | SCA 도구의 사실상 표준. VEX 포함. |
| CycloneDX 1.6 (XML) | cyclonedx-xml | application/vnd.cyclonedx+xml | 동일 데이터; 레거시 도구를 위한 XML. |
| SPDX 2.3 (JSON) | spdx-json | application/spdx+json | 규제 산업에서 폭넓게 수용. |
| SPDX 2.3 (Tag-Value) | spdx-tv | text/spdx | 원래의 SPDX 라인 기반 포맷. |
두 포맷 모두 동일한 내부 모델에서 생성되므로 컴포넌트 목록은 (포맷별 필드 제외) 동일합니다.
컴포넌트별 포함 내용
각 컴포넌트는 이름, 버전, 패키지 URL(PURL), 그리고 탐지된 라이선스를 담습니다.
-
라이선스 — 스캔의 라이선스 finding에서 채웁니다. CycloneDX는 컴포넌트
licenses배열을 사용하고(concluded → declared → detected 우선순위), SPDX는licenseDeclared·licenseConcluded를 SPDX license expression으로 채웁니다. 탐지된 라이선스가 없거나 SPDX 식별자가 없는 라이선스(ORTLicenseRef-*)는 SPDX에서 스펙 sentinelNOASSERTION으로 출력됩니다 (CycloneDX는 라이선스 이름을 그대로 담음).copyrightText는 현재 항상NOASSERTION입니다. -
최상위 버전 —
metadata.component.version은 스캔된 릴리스를 반영합니다. 스캔 제출 시release라벨(예:v1.2.3)이 지정됐으면 그 값을, 없으면 스캔 id를 안정적 fallback으로 사용합니다. -
문서 메타데이터 — 스캔이 만드는 SBOM(서명해서 내려받는 그 문서)과 이 페이지가 내보내는 SBOM 모두 2026 SBOM 최소 요소가 요구하는 자기 기술을 기록합니다. 생성 시점(
metadata.lifecycles— 소스 스캔은pre-build, 컨테이너 스캔은post-build. 인제스트한 공급자 문서를 다시 내보낼 때 는 단계를 적지 않습니다. 남의 문서를 변환한다고 우리가 작성자가 되지는 않기 때문입니다), 생성 도구와 그 버전,SBOM_AUTHOR로 선언한 작성자, 그리고 비어 있는 필드는 숨긴 것이 아니라 이번 스캔이 확인하지 못한 것이라는 문서 단위 선언입니다. 버전을 확인하지 못한 컴포넌트는 버전 문자열 대신 그 표시를 달고 나갑니다. 확인하지 못한 값을 답처럼 보여 주지 않기 위해서입니다.
의존성 그래프와 완전성
CycloneDX 내보내기(JSON, XML)에는 스캔의 의존성 그래프를 담은 dependencies 절이 들어 있습니다. 프로젝트가 맨 앞에 오고, 목록에 있는 컴포넌트마다 항목이 하나씩 있으며, 의존하는 것이 없으면 dependsOn이 빈 배열입니다. SPDX 내보내기에는 이 절이 없습니다.
문서가 얼마나 완전한지도 CycloneDX compositions로 밝힙니다. 컴포넌트 목록(assemblies)과 그래프(dependencies)에 대해 각각 complete, incomplete, unknown 중 하나를 씁니다. complete는 스캔이 기록한 실패 가운데 컴포넌트나 간선을 빠뜨릴 수 있는 것이 없었다는 뜻입니다. 소프트웨어에 들어 있는 모든 것이 SBOM에 있다는 뜻은 아닙니다. 잠금 파일 없이 매니페스트만 있으면 직접 의존성만 나오는데, 기록으로는 그것을 볼 수 없습니다. 문서 속성 trusca:composition-basis가 판정의 이유를 알려 줍니다.