AI SBOM 적합성 (G7 최소요소)
업로드한 SBOM(Software Bill of Materials)이 AI 시스템을 기술하는 문서라면 — CycloneDX machine-learning-model 컴포넌트가 하나 이상 있으면 — TRUSCA는 적합성 결과에 G7 AI SBOM 최소요소(Minimum Elements) 체크리스트를 추가합니다. 7개 클러스터, 51개 요소를 각각 존재·부재·사람 검토 필요로 보고합니다. 이 체크리스트는 전부 권고(advisory)이며 전체 pass / warn / fail 판정을 바꾸지 않습니다.
AI SBOM(ML-BOM)을 받거나 만들면서 그 완전성을 판단해야 하는 엔지니어와 컴플라이언스 담당자. TRUSCA 프로젝트에 SBOM을 업로드하는 방법을 이미 안다고 가정합니다.
G7 최소요소 소개
G7 Software Bill of Materials for AI — Minimum Elements(2026년 5월)는 독일 연방정보보안청(BSI)과 이탈리아 국가사이버보안청(ACN)이 주도해 만든 공동 기준입니다. AI 시스템의 SBOM이 담아야 할 정보를 규정합니다 — 기존 SBOM이 나열하는 소프트웨어 의존성만이 아니라 모델, 학습에 쓴 데이터셋, 실행 인프라, 그리고 시스템을 평가할 때 필요한 보안·성능 정보까지 포함합니다.
시점도 의미가 있습니다. EU 인공지능법(AI Act)의 주요 의무가 2026년 8월 2일부 터 적용되며, 고위험 AI 시스템에는 기술 문서 작성 의무가 따릅니다. G7 최소요소가 AI Act 준수 체크리스트는 아니지만, 그런 기술 문서가 근거로 삼는 목록 정보 — 모델, 데이터셋, 라이선스, 출처 — 를 항목으로 정리한 것이므로, ML-BOM을 이 기준으로 점검하면 준비 상태를 가늠할 수 있습니다.
ML-BOM 업로드
별도의 업로드 경로나 설정은 없습니다. 기존 받은-SBOM 인제스트로 문서를 보내면(SBOM 업로드 참고) TRUSCA가 AI 내용을 자동 감지합니다.
- CycloneDX
specVersion1.7을 받습니다. 1.7이 ML-BOM 필드(modelCard, 모델 파라미터, 데이터셋 거버넌스)를 담는 버전입니다. 이전 버전(1.2~1.6)도 종전대로 받습니다. - 감지는 자동입니다. 문서에
machine-learning-model타입 컴포넌트가 하나라도 있으면 스캔의 적합성 결과에 G7 검사 51개가 추가됩니다. 없으면 기존 핵심 검사 9개만 수행합니다. - 생성 도구는 제한이 없습니다. BomLens나 OWASP AIBOM Generator 같은 도구가 만든 CycloneDX 1.7 ML-BOM을 그대로 평가하며, 유효한 CycloneDX JSON이라면 손으로 작성한 문서도 됩니다.
체크리스트 읽는 법
체크리스트는 스캔 상세 페이지에서 핵심 검사 9개 아래에 G7 AI SBOM 최소요소라는 전용 섹션으로 표시됩니다. 맨 위 집계 줄이 충족 현황을 요약하고 — 자동 검사 가능한 38개 중 충족 수, 권고 건수, 사람 검토 필요 건수 — 그 아래에 클러스터별 카드가 정해진 순서로 이어집니다. 각 행에는 상태 배지와 source 배지가 함께 붙고, 알려진 요소라면 올바른 CycloneDX 작성 예시와 함께 공식 명세로 가는 "자세히 보기" 링크(예: CycloneDX ML-BOM 소개 페이지)도 제공합니다.
API도 같은 데이터를 반환합니다. GET /v1/projects/{project_id}/scans/{scan_id}/conformance 응답의 checks[]에서 G7 항목에는 cluster·source·role 필드와 (추출된 값이 있으면) evidence 필드가 추가되고, 핵심 검사 9개에는 이 필드가 없습니다.
클러스터 7종
| 클러스터 | 요소 수 | 다루는 내용 |
|---|---|---|
| 메타데이터 | 10 | SBOM 문서 자체 — 작성자, 포맷 이름·버전, 생성 도구, 타임스탬프, 서명, 의존 관계. |
| 시스템 수준 속성 | 9 | AI 시스템 전체 — 이름, 버전, 생산자, 컴포넌트 구성, 데이터 흐름, 의도된 적용 분야. |
| 모델 | 14 | 각 machine-learning-model 컴포넌트 — 식별자, 버전, 해시, 모델 카드, 입력·출력, 학습 속성, 라 이선스와 개방성. |
| 데이터셋 속성 | 10 | data 컴포넌트 — 이름, 식별자, 출처(provenance), 민감도(PII·저작권), 라이선스. |
| 인프라 | 2 | 시스템이 실행되는 소프트웨어 의존성과 (HBOM 링크로 연결되는) 하드웨어. |
| 보안 속성 | 4 | 보안 통제, 컴플라이언스, 사이버보안 정책 정보, 취약점 참조. |
| 핵심성과지표 | 2 | 보안 지표와 운영 성능 수치. |
요소별 상태
각 요소는 세 가지 결과 중 하나로 보고됩니다.
- pass(
present) — 문서에서 요소를 찾았습니다. - 권고 warn(
not present in the SBOM) — 자동 검사가 가능한 요소인데 문서에 없습니다. 핵심 검사의 warn과 달리 전체 판정에는 반영되지 않습니다. - 사람 검토 필요(
requires human review (no automated source)) — G7 문서가 요구하는 요소지만 이를 증명할 CycloneDX 필드가 없습니다. 51개 중 13개가 이 그룹이며(예: 데이터셋 민감도, 보안 통제) 문서 품질과 무관하게 항상 이렇게 표시되고, 집계 줄에서 "사람 검토 필요"로 따로 셉니다.
source 태그 4종
각 요소에는 충족 값의 출처를 기록하는 source 태그가 붙습니다.
| Source | UI 배지 | 의미 |
|---|---|---|
auto | 자동 확인 | 표준 CycloneDX 필드에서 그대로 읽음(예: 모델의 purl). |
inferred | 신호 추정 | 전용 필드가 아니라 신호에서 유추(예: 이름에 timestamp가 들어간 속성). |
declared | 제공 값 | 사람이나 매니페스트가 직접 기입해야만 존재(예: 문서 서명, publisher). |
na | 사람 검토 필요 | 자동 검사 원천 없음 — 항상 "사람 검토 필요"로 보고. |
role 필드는 참고 정보입니다. G7 문서가 해당 요소의 제공자로 지목하는 주체(SBOM 작성자, 시스템 생산자, 모델 생산자, 데이터셋 제작자)를 표시할 뿐, 필수·선택을 가르는 기준이 아닙니다 — G7 문서에는 역할별 필수 매트릭스가 없습니다.
충족된 요소 중 모델 식별자·해시 알고리즘·모델 라이선스·개방성 속성은 추출한 evidence 값(최대 8개, 각 200자 제한)도 함께 표시하므로, 문서를 다시 열지 않아도 어떤 PURL·라이선스가 검사를 충족했는지 확인할 수 있습니다.
전부 권고
G7 검사 51개는 모두 권고(required: false)이며 판정의 n_warn 카운터에서 제외됩니다. G7 요소가 절반 빠진 ML-BOM도 핵심 검사 9개를 통과하면 전체 판정은 pass입니다. 체크리스트는 차단 게이트가 아니라 SBOM 생산자와 완전성을 논의하는 자료로 쓰세요.
도구가 검사하지 않는 것
OpenChain AI SBOM 가이드와 같은 원칙을 따릅니다 — 생성은 도구로, 해석은 사람으로. TRUSCA는 필드가 존재하는지 확인하고 값을 추출할 뿐, 값의 의미까지 보증하지 않습니다.
- 비표준 라이선스 해석. 많은 모델 라이선스(OpenRAIL 계열, 연구용 맞춤 라이선스)는 SPDX 식별자가 없고 조항 해석이 필요합니다. 모델 라이선스 검사는 라이선스 항목의 존재만 확인합니다 — 그 조항이 실제 사용 방식을 허용하는지는 정책과 법무의 판단입니다.
- 데이터셋 출처의 진위. 데이터셋 출처 검사는 출처·거버넌스 필드가 채워져 있는지만 확인합니다. 기재된 출처가 사실인지, 데이터가 적법하게 수집됐는지는 SBOM만으로 기계가 검증할 수 없습니다.
- 사람 검토 요소.
na요소 13개(데이터 흐름, 데이터셋 민감도, 보안 통제 등)는 시스템의 실제 문서를 사람이 읽어야 합니다.
운영상 경계 두 가지도 알아 두세요.
- ML 컴포넌트는 CVE 매칭 대상이 아닙니다. Trivy가
machine-learning-model을 지원하지 않는 컴포넌트 타입으로 건너뛰므로, 인제스트한 ML-BOM의 취약점 결과는 소프트웨어 의존성만 다룹니다. CVE(Common Vulnerabilities and Exposures 식별자)가 모델 자체에 붙는 일은 없습니다. - PURL 없는 모델은 Components 탭에 나오지 않습니다. 컴포넌트 적재에는 패키지 URL이 필요합니다. G7 검사는 적재된 컴포넌트 목록이 아니라 업로드된 원본 문서를 평가하므로 영향이 없습니다.
동작 확인
machine-learning-model컴포넌트가 하나 이상 든 CycloneDX 1.7 문서를 업로드합니다(SBOM 업로드).- 스캔이
succeeded에 도달하면 스캔 상세 페이지를 엽니다. 핵심 검사 9개 아래에 G7 AI SBOM 최소요소 섹션이 나타나고, 집계 줄과 함께 클러스터 카드 7장이 순서대로(메타데이터부터 핵심성과지표까지) 표시됩니다. - 전체 적합성 배지는 ML 내용이 없을 때와 같습니다 — G7 미충족만으로
pass가warn으로 바뀌지 않습니다.
문제 해결
체크리스트가 나오지 않음
문서에 "type": "machine-learning-model" 컴포넌트가 없는 경우입니다 — AI 관련 SBOM이라도 라이브러리만 나열한 문서가 많습니다. 업로드한 파일의 components[].type을 확인하세요. 그리고 스캔 종류가 sbom인지도 확인하세요. 소스·컨테이너 스캔에는 적합성 결과가 생성되지 않습니다.
업로드가 422로 거부됨
이 기능 이전의 TRUSCA 릴리스는 인제스트에서 specVersion: 1.7을 거부합니다. 포털을 업그레이드한 뒤 다시 업로드하세요. 오류의 detail 필드가 구체적 사유를 알려 줍니다 — SBOM 업로드 → 문제 해결 참고.
"사람 검토 필요" 행이 많음
정상입니다. 51개 요소 중 13개는 자동 검사 원천이 없어(source: na) 항상 사람 검토를 요청합니다. SBOM의 결함이 아니라 G7 문서의 성격을 반영한 결과입니다.
모델이 Components 탭에 없음
모델 컴포넌트에 purl이 없어 컴포넌트 목록에 적재되지 않은 경우입니다. 모델을 소프트웨어 컴포넌트와 함께 목록에 올리려면 패키지 URL(예: pkg:huggingface/...)을 추가하세요. G7 체크리스트는 PURL 유무와 무관하게 동작합니다.
더 보기
- SBOM 업로드 — 인제스트 엔드포인트·필드·오류
- 스캔 → 받은 SBOM —
sbom종류 스캔의 동작 - 스캔 → 적합성 결과 — G7 행이 확장하는 핵심 검사 9개
- SBOM — TRUSCA가 생성한 SBOM 내보내기