5장 SBOM을 생성하고 먼저 정확도를 의심한다
SBOM은 software component와 관계를 machine-readable format으로 기록한다. CISA 등 여러 기관의 공동 지침은 SBOM을 software 공급망 투명성을 위한 재료표로 설명하고 자동 생성·활용을 강조한다. 하지만 tool이 파일을 만들었다고 정확한 것은 아니다.
npm run scan은 lockfile에서 세 component를 뽑아 lab/output/sbom.cdx.json을 만든다.
{
"bomFormat": "CycloneDX",
"specVersion": "1.6",
"components": [{
"type": "library",
"name": "clean-schema",
"version": "2.1.0",
"purl": "pkg:npm/clean-schema@2.1.0"
}]
}
확인할 품질:
- root application identity가 있는가?
- direct와 transitive component가 빠지지 않았는가?
- name·version·purl이 registry와 맞는가?
- build 안에 들어가지 않는 dev dependency를 구분하는가?
- container OS package와 binary도 포함되는가?
- SBOM이 어느 artifact digest에 대응하는가?
source SBOM과 final container SBOM은 다를 수 있다. multi-stage build, copied binary, base image package까지 보려면 final artifact를 scan해야 한다.