본문으로 건너뛰기

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 하십시오.