v0.12.0 — SBOM 수신 + 온프레미스 동적 스캔
두 가지 테마의 기능 릴리스입니다. 둘 다 추가 기능이며 opt-in입니다 —
기존 스캔과 설정은 바뀌지 않습니다. 전체 머신 리더블 체인지로그는
CHANGELOG.md에
있습니다.
주요 변경 사항
수신 SBOM 적합성 채점과 함께 받기 (Model 3)
TRUSCA가 소스를 클론해 빌드하는 대신, 이미 보유한 도구가 생성한 SBOM을 그대로
전달할 수 있습니다. POST /v1/projects/{id}/sbom-ingest가
CycloneDX-JSON 또는 SPDX(JSON / Tag-Value) 문서를 받아 sbom 종류의 스캔을
큐에 넣고, 컴포넌트를 저장하고, Trivy로 CVE를 매칭하고, 선언된 라이선스를
분류합니다 — 소스 클론이나 빌드가 없습니다.
업로드된 모든 SBOM은 원본 바이트 기준으로 품질을 채점해
pass / warn / fail 판정을 받습니다(필수 검사: 타임스탬프, 도구 정보, 최상위
컴포넌트, 이름+버전 100%, PURL 커버리지 90% 이상, pkg:generic 플레이스홀더
없음, 의존성 그래프. 라이선스·해시 커버리지는 warn 전용). 판정은 참고용입니다
— fail은 기록·표시되지만 매칭을 막지 않습니다.
GET /v1/projects/{id}/scans/{scan_id}/conformance로 노출되고 스캔 상세
페이지에 뱃지와 검사별 표로 렌더링됩니다.
온프레미스 환경별 동적 스캔
SBOM 생성 단계가 플러그형이 됐습니다. SCAN_EXECUTOR=local_docker(opt-in,
온프레미스 단일 테넌트)를 켜면 워커가 자신이 갖추지 않은 툴체인을 위해 환경별
cdxgen 사이드카를 띄우고, 그 안에서 빌드 준비 + cdxgen을 실행해 SBOM을
수집합니다 — 이후 파이프라인(서명 / scancode / Trivy / 저장)은 그대로입니다.
첫 대상은 Android입니다. 워커에는 Android SDK가 없어 Android Gradle Plugin이
의존성을 해석하지 못했는데(컴포넌트 0개), Android를 SDK 사이드카로 라우팅하면
전체 그래프가 해석됩니다. 검증 결과 node / go / rust / ruby / java / python /
php / dotnet은 올인원 워커에서 동일하게 해석되므로, 실제 갭은 Android 하나이며
기본 라우팅 대상도 Android뿐입니다 — 라우팅 대상은 SCAN_LOCAL_DOCKER_ENVS로
설정할 수 있습니다.
Docker 소켓은 호스트 탈출 통로가 될 수 있으므로, 실행기는 강화된 기본값
(워크스페이스 한정 볼륨 마운트, capability 제거, no-new-privileges, 자원 상한,
선별된 환경변수 허용 목록, 고정되지 않은 :latest 이미지 거부, 격리된 egress
네트워크)을 갖추고 보안 리뷰를 거쳤습니다. 켜기 전에
동적 스캔 실행기
관리자 가이드를 먼저 읽으십시오. 새 CDXGEN_SPEC_VERSION /
CDXGEN_FETCH_LICENSE 토글로 SBOM 스펙 버전과 컴포넌트 라이선스 해석을 조정할
수 있습니다.
업그레이드 안내
- 추가 기능이므로 조치가 필요 없습니다. 새 엔드포인트, 새
sbom스캔 종류, 새 환경변수 전부 기본값이 기존 동작과 같습니다. - 마이그레이션은 컨테이너 기동 시 자동 적용됩니다(
AUTO_MIGRATE, 기본값):0032_scan_kind_sbom과0033_sbom_conformance는 forward-only입니다. - 동적 스캔은 기본 꺼짐입니다(
SCAN_EXECUTOR=inprocess).local_docker는 온프레미스 단일 테넌트 전용이며 관리자 가이드의 opt-in 설정이 선행돼야 합니다. 이 경로를 위해 워커 이미지에 Docker CLI가 포함됐고, 기본 실행기에서는 쓰이지 않습니다.
0.12.0 이미지를 받거나 차트 0.12.0으로 helm upgrade 하십시오.