WEBBOOK CHAPTER

AI가 만든 코드, 공급망까지 안전합니까: 5장 SBOM을 생성하고 먼저 정확도를 의심한다

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해야 한다.