<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>기업용 AI BOM 필드 요구사항 매트릭스 — 표준과 규제 근거로 정의한 필수/선택 | Haksung</title><link>https://haksungjang.github.io/research/2026-ai-bom-requirements/</link><description>Haksung's Homepage 장학성 오픈소스 프로그램 매니저 / SK텔레콤</description><generator>Hugo</generator><language>ko-KR</language><lastBuildDate>Mon, 29 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://haksungjang.github.io/research/2026-ai-bom-requirements/index.xml" rel="self" type="application/rss+xml"/><item><title>이 시리즈를 만든 과정</title><link>https://haksungjang.github.io/research/2026-ai-bom-requirements/meta/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">장학성</dc:creator><guid>https://haksungjang.github.io/research/2026-ai-bom-requirements/meta/</guid><description>AI BOM 필드 요구사항 시리즈가 표준 합의 매트릭스, 운영 문서 3종, 도구 세트 전략, 검증과 red-team 검토를 거쳐 만들어진 과정을 정리합니다.</description><content:encoded>&lt;![CDATA[<div class="alert alert-info" role="alert"><p>이 글은 Claude Code를 이용해 작성했고, 인용한 핵심 사실은 1차 출처로 교차 검증했습니다.</p></div><p>이 시리즈는 세 단계로 쌓아 올렸습니다. 먼저 무엇을 요구할지를 표준으로 정하고, 그것을 기업의 세 가지 사용 맥락에 맞춘 운영 문서로 옮긴 다음, 그 요구사항을 실제로 검사할 도구 세트를 조사했습니다. 각 단계는 다음 단계의 입력이 되므로, 매트릭스가 흔들리면 운영 문서와 도구 전략이 함께 흔들립니다. 그래서 매트릭스의 근거를 가장 단단하게 잡았습니다.</p><h2 id="1단계--표준-합의-매트릭스">1단계 — 표준 합의 매트릭스</h2><p>출발점은 G7 사이버보안 작업반이 정의한 「AI를 위한 SBOM 최소 요소」의 50개 요소입니다. 이 50개를 행으로 두고 SPDX 3.0.1, CycloneDX 1.6, NTIA 2021, OpenChain AI V1 네 표준의 요구 강도를 대조했습니다. 어떤 필드의 존재를 두 곳 이상이 요구하면 필수, 아니면 선택으로 갈랐습니다. 그 결과 50개 중 20개가 필수, 30개가 선택으로 나뉘었습니다.</p><p>판정의 핵심 근거인 SPDX 3.0.1 클래스 카디널리티와 CycloneDX 1.6 JSON 스키마의<code>required</code> 배열은 1차 명세에서 직접 확인했습니다. 객체 생성 시에만 강제되는 조건부 필수를 &ldquo;존재 요구"로 세지 않는다는 규칙을 일관되게 적용해, 모델 해시나 데이터셋 의존성 관계 같은 항목이 과도하게 필수로 올라가지 않게 했습니다. 규제(CRA, AI Act, FDA, 국내 제도)는 합의 카운트와 분리된 별도 축으로 두어, 표준이 데이터 필드로 규정하지 않아도 규제가 같은 정보를 요구하는 경우(취약점 참조 등)를 역할별 적용에서 끌어올릴 수 있게 했습니다.</p><h2 id="2단계--운영-문서-3종">2단계 — 운영 문서 3종</h2><p>같은 매트릭스를 기업이 실제로 쓰는 세 가지 맥락으로 옮겼습니다. 자사 개발팀이 직접 작성하는 생산, 외부 모델·데이터셋을 들여올 때 점검하는 도입, 공급사에 제출을 요구하는 공급사 요구입니다. 정보 접근성이 가장 좋은 생산 시점은 요구 수준을 가장 높게, 위험 평가가 목적인 도입은 라이선스와 출처, 민감도, 취약점에 무게를 두는 식으로, 같은 필드라도 맥락에 따라 필수와 권장을 다르게 배치했습니다. 세 문서의 역할별 필수 집합은 매트릭스 §4.6 역할 표에서 그대로 도출했습니다.</p><h2 id="3단계--도구-세트-전략">3단계 — 도구 세트 전략</h2><p>요구사항을 정의했으면 그것을 검사할 수단이 필요합니다. 7개 도구 범주를 공식 리포지토리와 문서로 조사해, 무엇을 재사용하고 무엇을 확장하거나 새로 만들지 판단했습니다. 생성(cdxgen<code>aibom</code>), 검증(sbomqs, OPA/Rego), 저장(Dependency-Track), 모델 무결성(ModelScan, sigstore)은 이미 오픈소스로 작동하므로 재사용하고, AI 고유 필드의 역할별 적합성 검사와 모델·데이터 인벤토리, 라이선스 사용 제한 판정만 신규 구축 대상으로 좁혔습니다. 매트릭스를 필드 레지스트리와 역할별 정책 파일로 코드화하는 설계까지 포함했습니다.</p><h2 id="검증과-red-team-검토">검증과 red-team 검토</h2><p>세 단계 전체를 fact-checker가 별도로 검증했습니다. 매트릭스의 표준 근거는 1차 명세로 직접 확인해 일치했고, 도구 전략의 핵심 단정 일곱 가지도 각 프로젝트의 공식 리포지토리·문서로 뒷받침됨을 확인했습니다. 전체 판정은 CONDITIONAL PASS입니다. NTIA 일곱 기준 필드의 1차 명세(ntia.gov)가 인증서 오류로 직접 조회되지 않아 공개 미러로 확인한 점, 도구 전략의 예시 정책 파일이 공급사 필수 집합을 일부만 옮긴 점이 조건부 사유로 남았습니다. 발행을 차단할 사실 오류나 환각은 발견되지 않았습니다. 자세한 검증 기록은<a href="/research/2026-ai-bom-requirements/verification/">검증 보고서</a>에 있습니다.</p><p>발행 전에는 적대적 관점의 red-team 검토를 한 차례 더 거쳐, 매트릭스 판정 규칙의 일관성과 역할별 적용의 근거, 도구 단정의 과장 여부를 다시 점검했습니다.</p>
]]></content:encoded></item><item><title>검증 보고서</title><link>https://haksungjang.github.io/research/2026-ai-bom-requirements/verification/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">장학성</dc:creator><guid>https://haksungjang.github.io/research/2026-ai-bom-requirements/verification/</guid><description>기업용 AI BOM 필드 요구사항 매트릭스와 운영 문서, 도구 전략(1~3단계)의 사실 검증 기록입니다. 표준 근거, 합의 계산, 규제 축, 도구 단정의 1차 출처 확인 결과를 담습니다.</description><content:encoded>&lt;![CDATA[<div class="alert alert-info" role="alert"><p>이 글은 Claude Code를 이용해 작성했고, 인용한 핵심 사실은 1차 출처로 교차 검증했습니다.</p></div><p>본 보고서는 1단계(REPORT.md 매트릭스)의 기존 검증을 보존하고, 2단계(운영 문서<code>operational/01~03</code>)와 3단계(도구 전략<code>operational/04</code>)의 검증을 추가했습니다. 1~3단계 전체 판정은 CONDITIONAL PASS이며, 발행 가능합니다. 발행 차단(FAIL) 사유는 없습니다. 2·3단계 검증은 이 문서 후반의 &ldquo;2·3단계 검증&rdquo; 섹션에 있습니다.</p><hr><h2 id="1단계-매트릭스-검증-기존-보존">1단계: 매트릭스 검증 (기존, 보존)</h2><h2 id="판정-conditional-pass">판정: CONDITIONAL PASS</h2><p>매트릭스의 핵심인 표준 근거(SPDX 3.0.1, CycloneDX 1.6 카디널리티)와 합의 계산은 1차 명세로 직접 확인했고 모두 일치합니다. 규제 축의 시행일과 조문은 워크스페이스의 기존 1차 검증 자산과 안정적 출처로 교차확인했습니다. 필수 수정(Critical)에 해당하는 환각이나 잘못된 사실 진술은 없습니다. NTIA 일곱 기준 필드의 1차 명세(ntia.gov)가 인증서 오류로 직접 조회되지 않아 공개 미러로만 확인된 점 하나가 CONDITIONAL 사유이며, 권장 수정으로 분류합니다.</p><p>검증 경위: 지정된 fact-checker 에이전트가 차단 URL(ntia.gov 인증서 오류로 추정)에서 600초 무응답으로 중단되어<code>_verification.md</code>를 남기지 못했습니다. 이에 코디네이터가 차단 URL을 우회해 안정적 1차 경로와 워크스페이스 기존 검증 자산으로 직접 검증을 완료했습니다.</p><h2 id="1-표준-근거-검증-매트릭스-핵심--일치">1. 표준 근거 검증 (매트릭스 핵심) — 일치</h2><table><thead><tr><th>검증 항목</th><th>1차 출처</th><th>결과</th></tr></thead><tbody><tr><td>SPDX 3.0.1 AIPackage 필수 속성: name, packageVersion, releaseTime, suppliedBy, downloadLocation, primaryPurpose, creationInfo, spdxId 모두 minCount 1</td><td>spdx.github.io v3.0.1 AIPackage 클래스 (200 OK, WebFetch)</td><td>일치</td></tr><tr><td>SPDX 3.0.1 DatasetPackage 필수 속성: datasetType(1..*), originatedBy, builtTime, downloadLocation, primaryPurpose, releaseTime 필수</td><td>spdx.github.io v3.0.1 DatasetPackage 클래스 (200 OK, WebFetch)</td><td>일치</td></tr><tr><td>CycloneDX 1.6 루트 required는 bomFormat, specVersion 둘뿐</td><td>github CycloneDX bom-1.6.schema.json (200 OK, WebFetch)</td><td>일치</td></tr><tr><td>CycloneDX 조건부 required: component[type,name], hash[alg,content], dependency[ref], externalReference[url,type]</td><td>동일 스키마</td><td>일치</td></tr></tbody></table><p>표준 검증 결과, 모델 클러스터 필수 6개(이름, 식별자, 버전, 타임스탬프, 생산자, 라이선스)와 데이터셋 필수 5개(이름, 내용, 식별자, 출처, 라이선스) 중 SPDX 기여분이 명세와 정확히 일치합니다. 해시와 의존성 관계를 &ldquo;선택"으로 둔 판정도 검증과 일치합니다. 두 항목 모두 객체 생성 시에만 강제되는 조건부 필수일 뿐, 명세가 그 객체의 존재 자체를 요구하지 않기 때문입니다.</p><h2 id="2-합의-계산-정합성--일치">2. 합의 계산 정합성 — 일치</h2><p>§2.2 규칙(&ldquo;G7 1표 + 존재 요구 출처 1곳 이상 → 필수&rdquo;)이 §4 매트릭스에 일관 적용됐는지 표본 점검했습니다.</p><ul><li>필수 20개 전수: 메타데이터 5, 시스템수준 4, 모델 6, 데이터셋 5. §3 개관표의 클러스터별 합계와 일치.</li><li>&ldquo;조건부&rdquo;, &ldquo;근사&rdquo;, &ldquo;함의"를 존재 요구로 세지 않는다는 규칙 위반 셀 없음. 예: 모델 해시 값(SPDX 조건부 + CycloneDX 조건부)과 데이터셋 의존성 관계(조건부+조건부)는 정확히 &ldquo;선택"으로 판정됨.</li><li>OpenChain &ldquo;필수(P)&ldquo;가 부여된 모델 라이선스, 데이터셋 라이선스는 정확히 &ldquo;필수"로 반영됨.</li></ul><h2 id="3-규제-축-검증--교차확인-일치">3. 규제 축 검증 — 교차확인 일치</h2><table><thead><tr><th>검증 항목</th><th>확인 경로</th><th>결과</th></tr></thead><tbody><tr><td>AI Act Article 53(1)(d) 학습 콘텐츠 요약 공개 의무</td><td>artificialintelligenceact.eu Article 53 (200 OK, WebFetch)</td><td>일치</td></tr><tr><td>AI Act GPAI 의무 시행 2025-08-02 (Article 113(b))</td><td>동일 출처</td><td>일치</td></tr><tr><td>AI Act 고위험 시행 2026-08-02</td><td>워크스페이스 g7-sbom-for-ai 검증 자산(EU 집행위 정책 페이지)</td><td>일치</td></tr><tr><td>CRA 발효 2024-12-10, 보고의무 2026-09-11, 전면적용 2027-12-11</td><td>워크스페이스 sw-supply-chain-roadmap 검증 자산(EUR-Lex Reg 2024/2847 Art.71, B1 200 OK)</td><td>일치</td></tr><tr><td>CRA SBOM Annex I Part II 최상위 종속성</td><td>워크스페이스 g7 검증 자산(Annex I Part II 적용일 2027-12-11)</td><td>일치</td></tr><tr><td>FDA §524B 신설(§3305), 시행 2023-03-29</td><td>워크스페이스 sw-supply-chain-roadmap 검증 자산(1차 보도자료)</td><td>일치</td></tr></tbody></table><p>규제 시행일과 조문은 본 워크스페이스의 두 선행 보고서(g7-sbom-for-ai, sw-supply-chain-roadmap)가 이미 1차 출처로 검증해 PASS 판정한 자산과 일치합니다. 이 선행 검증 중 CRA는 EUR-Lex 원문을 200 OK로 직접 확인한 기록이 있어, 본 보고서의 규제 축은 미러 단독이 아니라 1차 검증 경유로 뒷받침됩니다.</p><h2 id="4-권장-수정-highmedium">4. 권장 수정 (High/Medium)</h2><ul><li>NTIA 일곱 기준 데이터 필드: 1차 명세(ntia.gov)가 인증서 오류로 직접 조회 불가하여 공개 미러(sbomify)로만 확인했습니다. 일곱 필드(Author of SBOM Data, Timestamp, Supplier Name, Component Name, Version, Other Unique Identifiers, Dependency Relationship)는 업계 표준으로 널리 통용되는 비논쟁적 사실이나, 발행 시에는 NTIA 보고서 PDF나 CISA 2025 개정 초안을 1차 인용으로 보강할 것을 권장합니다.</li><li>국내 AI 기본법: 학습데이터 관련 의무의 조항·항 번호를 1차 조문으로 못 박지 못해 &ldquo;간접(조문 미특정)&ldquo;으로 표시했습니다. 조항 단위 인용이 필요한 단계(예: 공급사 계약서 근거)에서는 국가법령정보센터 본문으로 조문을 특정할 것을 권장합니다.</li><li>FDA SBOM 권고 항목 상세(지원종료일, 알려진 취약점)는 fda.gov 가이던스 PDF 직접 URL이 404를 반환해 FAQ와 요약으로 교차확인했습니다. §524B 발효일은 1차 검증 자산과 일치하므로 핵심 사실은 안정적입니다.</li></ul><h2 id="5-참고-사항-low">5. 참고 사항 (Low)</h2><ul><li>본 보고서는 표준 파이프라인의 단일 원본 번역이 아니라 다중 출처 종합이므로 00~03 단계 파일 대신<code>workspace/</code>의 네 매핑 파일이 출처 근거를 보존합니다. 03-references에 해당하는 통합 출처는 REPORT.md §7에 단락 형식으로 수록했습니다.</li></ul><h2 id="6-재현성-점검">6. 재현성 점검</h2><p>판정 직후 핵심 사실 표본을 다른 경로로 재확인했습니다.</p><ul><li>SPDX AIPackage<code>suppliedBy</code> minCount 1: AIPackage 클래스 페이지에서 직접 확인(WebFetch). DatasetPackage<code>originatedBy</code> minCount 1도 동일 경로로 확인. 두 속성은 각각 모델 생산자, 데이터셋 출처의 필수 판정 근거이며 일치.</li><li>CycloneDX 루트 required 2개: 스키마 원문<code>required</code> 배열에서 직접 확인. &ldquo;조건부 필수를 존재 요구로 세지 않는다"는 규칙의 근거가 되는 핵심 사실이며 일치.</li><li>AI Act 2025-08-02와 CRA 2027-12-11: 안정적 출처(AI Act Explorer)와 워크스페이스 1차 검증 자산이라는 두 독립 경로에서 일치.</li></ul><p>재현성 점검 결과, 표본 사실에서 드리프트가 발견되지 않았습니다.</p><h2 id="권장-수정-반영-현황">권장 수정 반영 현황</h2><table><thead><tr><th>항목</th><th>분류</th><th>반영 여부</th></tr></thead><tbody><tr><td>NTIA 일곱 필드 1차 인용 보강</td><td>High</td><td>미반영 (발행 전 권장)</td></tr><tr><td>국내 AI 기본법 조문 특정</td><td>Medium</td><td>미반영 (계약 근거 단계에서 권장)</td></tr><tr><td>FDA 권고 항목 1차 보강</td><td>Low</td><td>미반영 (핵심 사실은 검증됨)</td></tr></tbody></table><hr><h2 id="23단계-검증-운영-문서와-도구-전략">2·3단계 검증: 운영 문서와 도구 전략</h2><h2 id="판정-conditional-pass-1">판정: CONDITIONAL PASS</h2><p>2단계(운영 문서<code>operational/01-supplier-requirements.md</code>,<code>02-producer-guide.md</code>,<code>03-ingestion-checklist.md</code>)와 3단계(도구 전략<code>operational/04-toolset-strategy.md</code>)를 검증했습니다. 도구 전략의 핵심 단정 일곱 가지는 모두 각 프로젝트의 1차 출처(공식 리포지토리·문서)로 뒷받침되며, 표본 네 곳의 URL을 200 OK + 본문 일치로 직접 재확인했습니다. 운영 문서의 역할별 필수 집합은 REPORT.md §4.6 역할 표와 정합합니다. 환각이나 발행을 막을 사실 오류는 없습니다. CONDITIONAL 사유는 1단계와 동일한 NTIA 1차 명세 접근 제약(비논쟁적 사실), 그리고 도구 전략의 예시 정책 파일이 §4.6 공급사 필수 집합을 일부만 옮긴 점(권장 수정)입니다.</p><p>검증 비용 통제: 이전 검증이 차단 URL 재시도로 타임아웃된 전례가 있어, 이번에는<code>workspace/tools/</code>의 다섯 조사 파일이 수집해 둔 1차 출처 URL을 근거로 삼고 WebFetch는 표본 다섯 건(도구 4 + NTIA 1)으로 제한했습니다. 차단·인증서 오류는 1회 시도 후 즉시 &ldquo;확인 불가(접근 제약)&ldquo;로 표기하고 재시도하지 않았습니다.</p><h2 id="23단계-요약">2·3단계 요약</h2><ul><li>검증한 도구 단정: 7건 (전부 1차 출처 뒷받침)</li><li>도구 인용(A1~A14): 14건, 표본 4건 WebFetch 200 OK + 내용 일치 / 나머지 10건은 workspace/tools 조사 파일이 동일 URL을 1차 출처로 수집한 것으로 교차확인</li><li>역할별 필수 집합 정합(운영 문서 ↔ §4.6): 생산 20/20 일치, 공급사 20/20 일치, 도입 실질 일치(경미한 누락 1)</li><li>표 분리 보존(§4.1~4.5 ↔ §4.6): 표본 10항목 합의 판정 일치, 필수 합계 20 보존</li><li>arXiv 2602.08816 잔존: 0건 (발행 대상 문서에 없음)</li><li>환각 의심: 0건</li><li>FAIL(발행 차단): 0건</li></ul><h2 id="1-도구-전략-단정-검증-3단계-04-toolset-strategy">1. 도구 전략 단정 검증 (3단계, 04-toolset-strategy)</h2><p>본문 도구 단정과 §7 참고문헌(A1~A14)의 정합을 점검했습니다. 표본 URL 네 곳은 직접 WebFetch했고, 나머지는<code>workspace/tools/01~05</code>가 같은 URL을 1차 출처로 수집한 기록과 대조했습니다.</p><table><thead><tr><th>본문 단정</th><th>인용</th><th>1차 출처 확인</th><th>결과</th></tr></thead><tbody><tr><td>cdxgen<code>aibom</code>이 CycloneDX AI BOM을 생성하고<code>--spec-version 1.6</code>으로 1.6 출력 가능(기본 1.7)</td><td>A1</td><td>github.com/CycloneDX/cdxgen 직접 확인(WebFetch 200 OK).<code>aibom</code> 명령과<code>--spec-version 1.6</code> 예시 본문 확인</td><td>일치</td></tr><tr><td>SPDX 3.0 AI 프로파일을 생성하는 성숙한 도구 부재(spdx-tools는 실험적 쓰기 전용, AI 프로파일 생성 미문서화)</td><td>A3, A4</td><td>workspace/tools/01이 spdx-tools README의 &ldquo;실험적·쓰기 전용·프로덕션 비권장&rdquo; 문구를 수집. SPDX 3.0 AI 프로파일 사양 존재는 A3로 별도 확인</td><td>일치</td></tr><tr><td>sbomqs custom policy의<code>required</code> 타입으로 필드 존재 강제</td><td>A5</td><td>sbomqs policy.md 직접 확인(WebFetch 200 OK).<code>type: required</code>(&ldquo;Ensures the field is present&rdquo;) 본문 확인</td><td>일치</td></tr><tr><td>OPA/Rego(conftest)로 역할별 필수 집합 분기</td><td>A6</td><td>conftest는 CNCF 표준 도구로 workspace/tools/02가 수집(공식 페이지 본문 1차 열람은 미완, 존재·기능은 다수 출처 교차확인)</td><td>일치(보조 출처)</td></tr><tr><td>Dependency-Track이<code>machine-learning-model</code>·<code>data</code> 분류자·modelCard 미인입(이슈 #4361 open)</td><td>A8</td><td>issue #4361 직접 확인(WebFetch 200 OK). 제목 &ldquo;Basic Support for Classifiers &hellip; 1.5 &amp; 1.6&rdquo;, 상태 open, 누락 분류자에 machine-learning-model·data 포함 확인</td><td>일치</td></tr><tr><td>ModelScan 정적 스캔(JSON 리포트·종료코드), sigstore model-signing DSSE+in-toto</td><td>A9, A10</td><td>sigstore model-transparency 직접 확인(WebFetch 200 OK). &ldquo;DSSE envelope &hellip; in-toto statement&rdquo;, predicate<code>model_signing/signature/v1.0</code> 확인. ModelScan은 workspace/tools/04가 수집</td><td>일치</td></tr><tr><td>데이터 오염 탐지는 연구 단계, 범용 production 도구 부재 → 추적성으로 대체</td><td>A11</td><td>workspace/tools/04가 동일 결론을 서베이(arXiv 2503.22759)로 뒷받침. 인용 형식 정상</td><td>일치</td></tr></tbody></table><p>이슈 #4361은 외부 일정에 달린 &ldquo;조사 시점 스냅샷"이며, 본문도 &ldquo;조사 시점 open, 추후 변경될 수 있다"고 명시했습니다. 검증 시점에도 open으로 확인됐고, 지침에 따라 FAIL 트리거에서 제외했습니다.</p><h2 id="2-운영-문서--46-역할-표-정합-2단계">2. 운영 문서 ↔ §4.6 역할 표 정합 (2단계)</h2><p>REPORT.md §4.6 역할 표에서 역할별 필수 집합을 산출해 운영 문서가 도출했다는 집합과 대조했습니다.</p><p>생산(02-producer-guide §2): §4.6 생산 필수 20개(메타 5, 시스템 4, 모델 6 — 모델 타임스탬프 포함, 데이터셋 5 — 데이터셋 내용 포함)와 정확히 일치합니다. 20/20 일치.</p><p>공급사(01-supplier-requirements §2): §4.6 공급사 필수 20개와 정확히 일치합니다. 특히 §4.6에서 공급사 기준으로 권장인 모델 타임스탬프와 데이터셋 내용을 01 문서도 필수에서 빼고(2.3·2.4) 권장으로 두지 않은 점, 취약점 참조를 규제(CRA·FDA) 근거로 필수에 올린 점이 표와 일치합니다. 20/20 일치.</p><p>도입(03-ingestion-checklist): §4.6 도입 필수 15개(메타 의존성 1, 시스템 3, 모델 5 — 모델 설명 포함, 데이터셋 5, 보안 1)와 실질적으로 일치합니다. 체크리스트 §2~§5가 모델 설명·계보(필수 승급), 데이터셋 민감도·출처, 취약점 참조를 모두 필수 확인으로 담았습니다. 경미한 누락 한 건은 아래 권장 수정으로 분류합니다.</p><h2 id="3-표-분리-보존-점검-report-4145--46">3. 표 분리 보존 점검 (REPORT §4.1~4.5 ↔ §4.6)</h2><p>합의 7열 표(§4.1~4.5)와 역할 표(§4.6)로 분리하면서 합의 판정 값이 바뀌거나 누락됐는지 표본 대조했습니다. SBOM 작성자(필수), SBOM 버전(선택), 메타 의존성 관계(필수), 시스템 데이터 사용(선택), 모델 해시 값(선택), 모델 라이선스(필수), 데이터셋 내용(필수), 데이터셋 민감도(선택), 취약점 참조(선택), 데이터셋 라이선스(필수) 등 10개 표본의 합의 판정이 두 표에서 동일합니다. §4.6 합의=필수 합계는 20으로 §3 개관표(5+4+6+5)와 보존 일치합니다. 표 분리에 따른 값 변경·누락은 없습니다.</p><h2 id="4-arxiv-260208816-잔존-확인">4. arXiv 2602.08816 잔존 확인</h2><p>발행 대상 문서(REPORT.md, operational/01~04) 전체를 검색한 결과 arXiv<code>2602.08816</code>은 한 건도 남아 있지 않습니다. 데이터 오염 관련 인용(A11)은 실재하는 서베이 arXiv 2503.22759(2025-03)로, 식별자 형식과 발행 시점이 정상입니다. 환각 식별자가 발행본에 유입되지 않았습니다.</p><h2 id="5-필수-수정-critical">5. 필수 수정 (Critical)</h2><p>없음. 발행을 차단할 사실 오류나 환각, 죽은 인용은 발견되지 않았습니다.</p><h2 id="6-권장-수정-highmedium">6. 권장 수정 (High/Medium)</h2><ul><li>(Medium)<code>04-toolset-strategy.md</code> §4.2의 예시 정책 파일<code>policy/supplier.yaml</code>은 공급사 필수 15개만 나열해, §4.6 공급사 필수 20개 중 데이터 형식 버전, 시스템 생산자, 시스템 버전, 모델 버전 네 항목이 required에서 빠져 있습니다. 본문은 &ldquo;매트릭스의 역할 열을 그대로 옮기면 됩니다"라고 설명하므로, 예시가 축약본임을 한 줄 명시하거나 누락 네 항목을 채워 §4.6·01-supplier와 정합시키는 것을 권장합니다. 도구 사실이 아니라 예시 완성도 문제이므로 발행 차단 사유는 아닙니다.</li><li>(High, 1단계 이월) NTIA 일곱 기준 필드의 1차 명세(ntia.gov)는 이번에도 인증서 오류(&ldquo;unable to get local issuer certificate&rdquo;)로 직접 조회되지 않았습니다. 1회 시도 후 재시도하지 않았습니다. 일곱 필드는 업계 표준으로 널리 통용되는 비논쟁적 사실이며, 발행 시 NTIA 보고서 PDF나 CISA 2025 개정 초안을 1차 인용으로 보강할 것을 권장합니다.</li></ul><h2 id="7-참고-사항-low">7. 참고 사항 (Low)</h2><ul><li>(Low)<code>03-ingestion-checklist.md</code> §2는 &ldquo;시스템 구성요소와 버전"을 필수 확인으로 두나 §4.6 도입 필수의 &ldquo;시스템 이름"을 명시 항목으로 분리하지 않았습니다. 식별 맥락상 자명하나, 점검 항목 완전성을 위해 시스템 이름을 한 줄 추가하면 표와 1:1 대응이 됩니다.</li><li>(Low) A5(sbomqs policy.md)는 &ldquo;필드 존재 강제"의 근거로는 정확합니다. 다만 §4.3·workspace의 &ldquo;충족률을 점수로 환산"은 policy.md가 아니라 sbomqs의 별도<code>score</code> 기능에 해당합니다. policy.md는 pass/warn/fail 판정이 본문입니다. 점수화는 sbomqs의 잘 알려진 핵심 기능이라 사실 자체는 맞으나, 점수화 근거로는 policy.md가 아닌 score 문서를 인용하는 편이 정밀합니다.</li></ul><h2 id="8-재현성-점검-23단계">8. 재현성 점검 (2·3단계)</h2><p>판정 근거 핵심 사실 표본을, 최초 확인에 쓰지 않은 경로로 재확인했습니다.</p><table><thead><tr><th>핵심 사실</th><th>최초 확인 경로</th><th>재확인 경로</th><th>일치</th></tr></thead><tbody><tr><td>cdxgen<code>aibom</code> +<code>--spec-version 1.6</code> 가능</td><td>workspace/tools/01 수집 URL</td><td>github.com/CycloneDX/cdxgen 본문 직접 WebFetch</td><td>일치</td></tr><tr><td>이슈 #4361 open, machine-learning-model·data 분류자 미지원</td><td>workspace/tools/03 수집</td><td>github 이슈 본문 직접 WebFetch(제목·상태·분류자 목록)</td><td>일치</td></tr><tr><td>sigstore model-signing = DSSE+in-toto 번들</td><td>workspace/tools/04 수집</td><td>github.com/sigstore/model-transparency 본문 직접 WebFetch</td><td>일치</td></tr><tr><td>생산 필수 20개 = §4.6 생산 열</td><td>§4.6 표 카운트</td><td>02-producer-guide §2 항목 카운트</td><td>일치</td></tr><tr><td>공급사 필수 20개 = §4.6 공급사 열</td><td>§4.6 표 카운트</td><td>01-supplier-requirements §2 항목 카운트</td><td>일치</td></tr></tbody></table><p>표본에서 드리프트가 없어 2·3단계 판정(CONDITIONAL PASS)을 유지합니다.</p><h2 id="9-검증-매트릭스-23단계">9. 검증 매트릭스 (2·3단계)</h2><table><thead><tr><th>항목</th><th>결과</th><th>비고</th></tr></thead><tbody><tr><td>도구 인용 URL 실재성</td><td>정상 (표본 4/4 200 OK)</td><td>나머지 10건 workspace 1차 수집과 교차확인</td></tr><tr><td>도구 단정-출처 일치</td><td>정상 (7/7)</td><td>핵심 단정 전부 1차 출처 뒷받침</td></tr><tr><td>운영 문서-§4.6 정합</td><td>정상 (생산 20/20, 공급사 20/20, 도입 실질 일치)</td><td>도입 시스템 이름 누락 1건은 Low</td></tr><tr><td>표 분리 보존</td><td>정상 (표본 10/10, 필수 합계 20 보존)</td><td/></tr><tr><td>arXiv 2602.08816 잔존</td><td>정상 (0건)</td><td>정당 인용은 arXiv 2503.22759</td></tr><tr><td>환각 패턴</td><td>정상</td><td>깔끔한 인용·구체 수치 표본 추적, 환각 없음</td></tr><tr><td>NTIA 일곱 필드 1차 명세</td><td>확인 불가 (접근 제약)</td><td>인증서 오류, 1회 시도. 비논쟁적 사실</td></tr><tr><td>예시 정책 파일 완성도</td><td>주의 (1건)</td><td>§4.2 supplier.yaml 4항목 누락, 권장 수정</td></tr></tbody></table><h2 id="10-발행-가부">10. 발행 가부</h2><p>발행 가능(CONDITIONAL PASS). 발행을 차단할 Critical은 없습니다. 권장 수정 두 건(예시 정책 파일 완성·NTIA 1차 보강)과 참고 사항 두 건은 발행 후 보완해도 무방하며, 사용자 판단에 맡깁니다.</p><h2 id="권장-수정-반영-현황-23단계">권장 수정 반영 현황 (2·3단계)</h2><table><thead><tr><th>항목</th><th>분류</th><th>반영 여부</th></tr></thead><tbody><tr><td>§4.2 supplier.yaml 4항목 보강 또는 축약 명시</td><td>Medium</td><td>미반영 (발행 후 권장)</td></tr><tr><td>NTIA 일곱 필드 1차 인용 보강</td><td>High</td><td>미반영 (1단계 이월, 발행 전 권장)</td></tr><tr><td>03 도입 체크리스트에 시스템 이름 추가</td><td>Low</td><td>미반영</td></tr><tr><td>A5 점수화 근거를 sbomqs score 문서로 정밀화</td><td>Low</td><td>미반영</td></tr></tbody></table>
]]></content:encoded></item><item><title>AI BOM 도구 세트 설계 전략</title><link>https://haksungjang.github.io/research/2026-ai-bom-requirements/toolset-strategy/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">장학성</dc:creator><guid>https://haksungjang.github.io/research/2026-ai-bom-requirements/toolset-strategy/</guid><description>7개 도구 범주를 공식 리포지토리와 문서로 조사해, 무엇을 재사용·확장·신규 구축할지와 구축 순서, 매트릭스를 코드화할 정책 스키마, Dependency-Track 통합 아키텍처를 정리합니다.</description><content:encoded>&lt;![CDATA[<div class="alert alert-info" role="alert"><p>이 글은 Claude Code를 이용해 작성했고, 인용한 핵심 사실은 1차 출처로 교차 검증했습니다.</p></div><p>7개 도구 범주를 공식 리포지토리와 문서로 조사한 결과를 근거로, 무엇을 기존 도구로 재사용하고 무엇을 확장하거나 새로 만들지, 어떤 순서로 구축하며, 매트릭스를 어떤 정책 스키마로 정의할지를 정리합니다. 확보 전략은 미리 정하지 않고 조사 결과로 판단하며, 기존 SBOM 플랫폼(Dependency-Track)을 이미 운영 중이라는 전제를 둡니다.</p><h2 id="1-핵심-판단-세-가지">1. 핵심 판단 세 가지</h2><p>생성과 검증, 저장, 모델 스캔의 표준 경로는 이미 오픈소스로 작동합니다. cdxgen의<code>aibom</code> 명령이 CycloneDX 1.6 AI BOM을 실제로 만들고, sbomqs와 OPA가 필드 적합성을 검사하며, Dependency-Track이 소프트웨어 계층을 받고, ModelScan과 sigstore model-signing이 모델 무결성을 보강합니다. 자체 구축을 처음부터 다 할 필요가 없습니다.</p><p>포맷은 CycloneDX 1.6으로 단일화하는 편이 현실적입니다. SPDX 3.0 AI 프로파일은 표현력이 더 풍부하지만 이를 실제로 생성하는 성숙한 도구가 없고, Dependency-Track이 SPDX를 인입하지 못합니다. SPDX 3.0은 표준 추종 대상으로 두되 운영 1차 포맷은 CycloneDX로 잡습니다.</p><p>신규 구축이 불가피한 곳은 좁고 분명합니다. AI 고유 필드를 검사하는 정책 계층, 모델과 데이터셋을 1급 객체로 다루는 인벤토리, 라이선스 사용 제한 판정입니다. 나머지는 재사용이나 확장으로 메워집니다.</p><h2 id="2-영역별-재사용-판정">2. 영역별 재사용 판정</h2><table><thead><tr><th>기능 영역</th><th>대표 도구</th><th>판정</th><th>근거</th></tr></thead><tbody><tr><td>AI BOM 생성(CycloneDX)</td><td>cdxgen<code>aibom</code></td><td>재사용</td><td>CycloneDX 1.6 AI BOM 자동 생성이 작동(조사 시점 기준 활발히 개발 중)</td></tr><tr><td>AI BOM 생성(SPDX 3.0)</td><td>spdx-tools</td><td>불가</td><td>3.0이 실험적 쓰기 전용, AI 프로파일 생성 미지원</td></tr><tr><td>심층 필드 자동 추출</td><td>없음</td><td>신규</td><td>데이터셋 통계, 바이어스, 해시, 라이선스를 자동으로 못 채움</td></tr><tr><td>검증·적합성 엔진</td><td>sbomqs, sbom-utility</td><td>재사용</td><td>범용 필드 존재 검사와 점수화 제공</td></tr><tr><td>AI·역할별 적합성 규칙</td><td>없음</td><td>신규</td><td>G7 50요소와 역할별 필수 집합을 검사하는 기성 프로파일 부재</td></tr><tr><td>저장소·인벤토리(SW 계층)</td><td>Dependency-Track</td><td>재사용</td><td>소프트웨어 의존성 인벤토리와 영향분석이 성숙</td></tr><tr><td>저장소·인벤토리(모델·데이터 계층)</td><td>Dependency-Track</td><td>확장 대기</td><td><code>machine-learning-model</code>과<code>data</code> 분류자, modelCard 미인입(이슈 #4361, 조사 시점 open)</td></tr><tr><td>취약점 매칭(SW 의존성)</td><td>Dependency-Track, OSV</td><td>재사용</td><td>이미 연결, ML 라이브러리도 일반 패키지로 매칭</td></tr><tr><td>위험 피드(모델 고유)</td><td>huntr, Insights</td><td>확장</td><td>huntr 발급 CVE는 NVD 경유 유입, 직접 커넥터는 없음</td></tr><tr><td>모델 직렬화 스캔</td><td>ModelScan, Fickling</td><td>재사용</td><td>성숙, JSON 리포트와 종료코드로 CI 삽입</td></tr><tr><td>무결성·서명</td><td>sigstore model-signing</td><td>재사용</td><td>DSSE와 in-toto라 BOM 무결성·출처 필드에 매핑</td></tr><tr><td>데이터 오염 탐지</td><td>없음(연구 단계)</td><td>추적성으로 대체</td><td>production 도구 부재, 탐지 보증 대신 출처·무결성 기록</td></tr><tr><td>라이선스 식별·표기</td><td>ScanCode, ORT + SPDX/HF 사전</td><td>재사용+확장</td><td>엔진은 재사용, AI 라이선스 사전 보강 필요</td></tr><tr><td>라이선스 사용 제한 판정</td><td>없음</td><td>신규</td><td>RAIL 계열 행위 제한의 기계 판독·자동 판정 표준 부재</td></tr><tr><td>정책 코드화</td><td>OPA/Rego, sbomqs YAML</td><td>재사용</td><td>역할별 정책 파일 분리로 매트릭스 표현</td></tr></tbody></table><p>요약하면 열세 영역 중 일곱은 재사용, 셋은 확장, 셋은 신규입니다. 신규 셋(AI·역할별 적합성 규칙, 모델·데이터 인벤토리, 라이선스 사용 제한 판정)이 이 프로젝트의 고유 가치가 모이는 지점입니다.</p><h2 id="3-구축-우선순위">3. 구축 우선순위</h2><h3 id="p0--작동하는-최소-파이프라인-재사용-위주">P0 — 작동하는 최소 파이프라인 (재사용 위주)</h3><p>가장 먼저 기성 도구를 엮어 끝에서 끝까지 도는 파이프라인을 세웁니다. 생성은 cdxgen<code>aibom</code>으로 CycloneDX 1.6을 만들고, 모델 파일은 ModelScan으로 스캔하고 sigstore로 서명하며, 결과를 Dependency-Track에 올려 소프트웨어 계층 취약점과 영향분석을 얻습니다. 검증은 sbomqs custom policy로 필수 필드 존재를 점검합니다. 이 단계는 거의 전부 재사용이라 빠르게 가치를 냅니다.</p><h3 id="p1--ai-고유-계층-확장">P1 — AI 고유 계층 확장</h3><p>다음으로 신규 가치를 얹습니다. 매트릭스를 정책 스키마로 코드화해 역할별 적합성 검사를 구현하고(4절), 모델과 데이터셋을 CycloneDX<code>properties</code>나 외부 참조로 실어 인벤토리 추적성을 확보합니다. 라이선스 파이프라인에 AI 라이선스 사전(RAIL, OpenRAIL, Llama, Gemma, OpenMDW, CDLA)을 보강하고, 모델 위험은 huntr CVE를 NVD 경유로 받습니다.</p><h3 id="p2--신규연구-영역">P2 — 신규·연구 영역</h3><p>마지막은 표준과 연구가 더 익어야 하는 부분입니다. 데이터셋 통계나 바이어스 같은 심층 필드의 자동 추출, 라이선스 사용 제한의 자동 판정, 데이터 오염은 탐지 대신 출처와 무결성 추적성으로 다룹니다. SPDX 3.0 생성은 도구 생태계가 성숙하면 합류시키되 지금은 표준 추종 대상으로만 둡니다. Dependency-Track의 모델·데이터 분류자 지원(이슈 #4361)이 들어오면 P1의 우회책을 1급 인벤토리로 승격합니다.</p><h2 id="4-정책-스키마-설계">4. 정책 스키마 설계</h2><p>매트릭스의 &ldquo;요소 × 필수/선택 × 역할"을 기계 판독 정책으로 정의하는 것이 이 도구 세트의 핵심입니다. 조사 결과 어떤 도구도 역할별 필수 집합을 1급 개념으로 갖지 않으므로, 직접 설계합니다. 두 계층으로 나눕니다.</p><h3 id="41-필드-레지스트리">4.1 필드 레지스트리</h3><p>G7 50요소 각각을 CycloneDX 경로(그리고 장래 SPDX 경로)에 매핑하는 표를 한곳에 둡니다.<a href="/research/2026-ai-bom-requirements/">「AI BOM 필드 요구사항 매트릭스」</a>가 이미 요소별 출처 매핑을 담고 있으므로, 이를 기계 판독용으로 옮기면 다음과 같은 모양입니다.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># field-registry.yaml — G7 요소를 BOM 경로에 매핑</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">model_license</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">g7</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">모델 라이선스</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">cyclonedx</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#4e9a06">"components[?type=='machine-learning-model'].licenses"</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">spdx</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#4e9a06">"Relationship(hasDeclaredLicense) from AIPackage"</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">dataset_provenance</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">g7</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">데이터셋 출처</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">cyclonedx</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#4e9a06">"components[?type=='data'].data[].governance"</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">spdx</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#4e9a06">"DatasetPackage.originatedBy / dataCollectionProcess"</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">vulnerability_referencing</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">g7</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">취약점 참조</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">cyclonedx</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#4e9a06">"vulnerabilities[] 또는 externalReferences[?type=='vcs']"</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">spdx</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#4e9a06">"VulnAssessmentRelationship"</span><span style="color:#f8f8f8"/></span></span></code></pre></div><h3 id="42-역할별-정책-파일">4.2 역할별 정책 파일</h3><p>생산, 도입, 공급사 각각의 필수 집합을 별도 정책 파일로 둡니다. 매트릭스의 역할 열을 그대로 옮기면 됩니다.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># policy/supplier.yaml — 공급사 제출 시 필수 요소 (§4.6 공급사 필수 20개)</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">required</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">sbom_author</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">sbom_data_format_name</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">sbom_data_format_version</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">sbom_timestamp</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">sbom_dependency_relationship</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">system_name</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">system_components</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">system_producer</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">system_version</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">model_name</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">model_identifier</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">model_version</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">model_producer</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">model_license</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">dataset_name</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">dataset_identifier</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">dataset_provenance</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">dataset_sensitivity</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">dataset_license</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">vulnerability_referencing</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">recommended</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">model_timestamp</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">dataset_content</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">model_hash_value</span><span style="color:#f8f8f8"/></span></span></code></pre></div><h3 id="43-판정-엔진">4.3 판정 엔진</h3><p>엔진은 두 가지를 함께 권합니다. 빠른 시작은 sbomqs custom policy(YAML)로, 별도 엔진 학습 없이 역할별 파일을 오늘 바로 운용하고 충족률을 점수로 환산합니다. 표현력이 필요한 곳은 OPA/Rego(conftest)로, 입력 BOM의 역할 값을 보고 필수 집합을 분기합니다. Rego는 필드 레지스트리의 경로를 따라가 존재 여부를 평가하므로 조건부 필수나 교차 필드 일관성까지 표현할 수 있습니다.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-rego" data-lang="rego"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># policy/aibom.rego — 역할별 필수 필드 검사 골격</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">package</span><span style="color:#f8f8f8"/><span style="color:#000">aibom</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#000">deny</span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">msg</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8"/><span style="color:#000;font-weight:bold">{</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#000">role</span><span style="color:#f8f8f8"/><span style="color:#ce5c00;font-weight:bold">:=</span><span style="color:#f8f8f8"/><span style="color:#000">input</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#000">metadata</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#000">properties</span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">_</span><span style="color:#000;font-weight:bold">]</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#000">value</span><span style="color:#f8f8f8"/><span style="color:#8f5902;font-style:italic"># "supplier" 등</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#000">req</span><span style="color:#f8f8f8"/><span style="color:#ce5c00;font-weight:bold">:=</span><span style="color:#f8f8f8"/><span style="color:#000">data</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#000">policy</span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">role</span><span style="color:#000;font-weight:bold">]</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#000">required</span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">_</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">not</span><span style="color:#f8f8f8"/><span style="color:#000">field_present</span><span style="color:#000;font-weight:bold">(</span><span style="color:#000">req</span><span style="color:#000;font-weight:bold">)</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#000">msg</span><span style="color:#f8f8f8"/><span style="color:#ce5c00;font-weight:bold">:=</span><span style="color:#f8f8f8"/><span style="color:#000">sprintf</span><span style="color:#000;font-weight:bold">(</span><span style="color:#4e9a06">"필수 요소 누락: %s (역할: %s)"</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#f8f8f8"/><span style="color:#000;font-weight:bold">[</span><span style="color:#000">req</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#f8f8f8"/><span style="color:#000">role</span><span style="color:#000;font-weight:bold">])</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span><span style="color:#f8f8f8"/></span></span></code></pre></div><p>OSCAL은 보안 통제 표현용이라 SBOM 필드 적합성에는 과중량이고, 검증을 스스로 실행하지 않으므로 채택하지 않습니다. 다만 규제·감사용 상위 산출물(요구사항 카탈로그, 평가 결과 보고)을 연방 친화 포맷으로 남길 필요가 생기면 그 층위에서만 고려합니다.</p><h2 id="5-참조-아키텍처와-dependency-track-통합">5. 참조 아키텍처와 Dependency-Track 통합</h2><p>AI 시스템의 BOM은 소프트웨어 의존성 계층과 모델·데이터셋 계층으로 갈립니다. Dependency-Track은 앞 계층을 지금 바로 처리하고, 뒤 계층은 아직 1급으로 받지 못합니다(이슈 #4361은 조사 시점에 open 상태이며 추후 변경될 수 있습니다). 그래서 계층을 나눠 통합합니다.</p><pre class="mermaid">%%{init: {'theme':'neutral','themeVariables':{'fontSize':'18px'}}}%%
flowchart TD
GEN["생성&lt;br/&gt;cdxgen aibom&lt;br/&gt;CycloneDX 1.6"]
SEC["보강&lt;br/&gt;ModelScan 스캔&lt;br/&gt;sigstore 서명"]
POL["검증&lt;br/&gt;역할별 정책&lt;br/&gt;sbomqs, Rego"]
DT["저장·취약점&lt;br/&gt;Dependency-Track&lt;br/&gt;SW 계층 매칭"]
INV["모델·데이터 계층&lt;br/&gt;properties 우회&lt;br/&gt;또는 분류자 대기"]
GEN --&gt; SEC
SEC --&gt; POL
POL --&gt; DT
POL --&gt; INV</pre><p><strong>그림 2.</strong> AI BOM 도구 파이프라인과 계층 분리<em>(조사 종합)</em></p><p>소프트웨어 계층은 추가 작업이 거의 없습니다. cdxgen이 ML 프로젝트의 PyPI나 npm 의존성을 CycloneDX로 만들어 Dependency-Track에 올리면, OSV와 NVD로 취약점을 상관하고 &ldquo;이 컴포넌트를 쓰는 프로젝트는?&rdquo; 영향분석까지 제공합니다. huntr가 ML 라이브러리에 발급한 CVE도 NVD를 거쳐 잡힙니다.</p><p>모델·데이터셋 계층은 분류자 지원이 올 때까지 우회합니다. 단기로는 모델과 데이터셋을 일반 컴포넌트로 올리되 모델 카드 핵심 필드를 CycloneDX<code>properties</code>나 외부 참조로 실어 보존합니다. 검색성은 제한되지만 추적은 됩니다. 모델 파일 고유 위협(안전하지 않은 pickle, 백도어 가중치)은 CVE 매칭 모델에 맞지 않으므로 ModelScan으로 따로 점검하고 그 결과를 정책이나 티켓으로 연계합니다.</p><h2 id="6-한계와-검증-필요-사항">6. 한계와 검증 필요 사항</h2><p>이 전략의 도구 사실은 각 프로젝트의 공식 리포지토리와 문서로 확인했습니다. 다음은 채택 전 재확인이 필요합니다.</p><p>라이선스 영역에는 표기와 실제의 불일치 위험이 있습니다. 플랫폼에 선언된 라이선스가 모델·데이터셋의 실제 구성요소 라이선스와 어긋나는 이른바 permissive-washing은 잘 알려진 위험이며, 기존 소프트웨어 라이선스 도구가 모델 카드나 데이터셋 카드를 파싱하고 학습 데이터 출처를 추적하지 못한다는 한계와 맞물립니다. 도구 세트는 이를 자동 탐지로 약속하지 않고 선언 라이선스와 산출물의 일치 검증을 신규 구축 대상으로 남겨 둡니다.</p><p>Dependency-Track의 모델·데이터 분류자 지원 시점(#4361)은 외부 일정이라 통제할 수 없습니다. P1의 모델·데이터 인벤토리는 이 일정에 의존하므로, 우회책(<code>properties</code> 보존)을 기본으로 두고 분류자 지원이 들어오면 승격하는 방식으로 설계해야 합니다.</p><p>GUAC의 AI 전용 처리, OSV의 모델 전용 레코드 체계, huntr Insights와 ModelScan 결과를 Dependency-Track이 직접 소비하는 커넥터는 모두 부재로 확인되거나 미확인(unverifiable)입니다. 모델 위험 피드와 SBOM 인벤토리를 잇는 표준은 아직 비어 있어, 이 연계는 자체 글루 코드로 메워야 합니다.</p><p>데이터 오염 탐지는 production 도구가 없습니다. 도구 세트에서 오염 자동 탐지를 약속하지 않고, 데이터 출처와 해시, 검증 통과 여부를 기록하는 추적성과 예방 통제로 한정합니다.</p><h2 id="7-참고문헌">7. 참고문헌</h2><p>본문의 도구 판정은 각 프로젝트의 공식 리포지토리와 문서를 1차 출처로 확인했습니다. 접속 시점은 모두 2026-06입니다.</p><p><strong>A1.</strong> CycloneDX / cdxgen 프로젝트.<em>cdxgen — AI/ML BOM 생성과<code>aibom</code> CLI,<code>--spec-version</code></em>.<a href="https://github.com/CycloneDX/cdxgen">https://github.com/CycloneDX/cdxgen</a> (접속: 2026-06). —<em>용도: cdxgen<code>aibom</code>이 CycloneDX 1.6 AI BOM을 자동 생성한다는 근거.</em></p><p><strong>A2.</strong> CycloneDX.<em>Machine Learning Bill of Materials (ML-BOM) 역량 소개</em>.<a href="https://cyclonedx.org/capabilities/mlbom/">https://cyclonedx.org/capabilities/mlbom/</a> (접속: 2026-06). —<em>용도: CycloneDX 1.6이<code>machine-learning-model</code>과 modelCard를 정의한다는 표준 근거.</em></p><p><strong>A3.</strong> SPDX.<em>SPDX 3.0.1 — AI Profile 사양</em>.<a href="https://spdx.github.io/spdx-spec/v3.0.1/model/AI/AI/">https://spdx.github.io/spdx-spec/v3.0.1/model/AI/AI/</a> (접속: 2026-06). —<em>용도: SPDX 3.0 AI 프로파일이 사양 차원에서 존재한다는 근거(표현력 비교).</em></p><p><strong>A4.</strong> SPDX.<em>tools-python (spdx-tools) — 3.0 실험적 쓰기 전용, 프로덕션 비권장</em>.<a href="https://github.com/spdx/tools-python">https://github.com/spdx/tools-python</a> (접속: 2026-06). —<em>용도: SPDX 3.0 AI 프로파일을 생성하는 성숙한 도구가 부재하다는 근거.</em></p><p><strong>A5.</strong> interlynk-io.<em>sbomqs — 정책 가이드(custom policy, required 타입, feature 점수화)</em>.<a href="https://github.com/interlynk-io/sbomqs/blob/main/docs/guides/policy.md">https://github.com/interlynk-io/sbomqs/blob/main/docs/guides/policy.md</a> (접속: 2026-06). —<em>용도: sbomqs가 사용자 정의 정책으로 필드 존재를 강제하고 충족률을 점수화한다는 근거.</em></p><p><strong>A6.</strong> Open Policy Agent.<em>Conftest — 구성 파일에 대한 OPA/Rego 정책 평가</em>.<a href="https://github.com/open-policy-agent/conftest">https://github.com/open-policy-agent/conftest</a> (접속: 2026-06). —<em>용도: CycloneDX/SPDX JSON을 Rego로 평가해 역할별 필수 집합을 분기한다는 근거.</em></p><p><strong>A7.</strong> OWASP Dependency-Track.<em>정책 컴플라이언스 문서(조건 종류, regex 값)</em>.<a href="https://docs.dependencytrack.org/usage/policy-compliance/">https://docs.dependencytrack.org/usage/policy-compliance/</a> (접속: 2026-06). —<em>용도: Dependency-Track 정책 엔진이 라이선스·취약점·컴포넌트 좌표 중심이며 프로젝트/태그 단위 정책이 가능하다는 근거.</em></p><p><strong>A8.</strong> DependencyTrack.<em>이슈 #4361 — CycloneDX 1.5/1.6 분류자(<code>machine-learning-model</code>·<code>data</code>) 지원 요청</em>.<a href="https://github.com/DependencyTrack/dependency-track/issues/4361">https://github.com/DependencyTrack/dependency-track/issues/4361</a> (접속: 2026-06). —<em>용도: Dependency-Track이 모델·데이터 분류자와 modelCard를 아직 인입하지 못한다는 근거(조사 시점 open).</em></p><p><strong>A9.</strong> Protect AI.<em>ModelScan — 모델 직렬화 공격 정적 스캐너(JSON 리포트, 종료코드)</em>.<a href="https://github.com/protectai/modelscan">https://github.com/protectai/modelscan</a> (접속: 2026-06). —<em>용도: 모델 파일 직렬화 스캔이 CI 삽입 가능한 수준으로 성숙했다는 근거.</em></p><p><strong>A10.</strong> Sigstore / OpenSSF.<em>model-transparency (model-signing) — DSSE + in-toto 모델 서명</em>.<a href="https://github.com/sigstore/model-transparency">https://github.com/sigstore/model-transparency</a> (접속: 2026-06). —<em>용도: 모델 서명·출처 보증이 BOM 무결성·출처 필드에 매핑된다는 근거.</em></p><p><strong>A11.</strong> Z. Tian 외 (2025).<em>Data Poisoning in Deep Learning: A Survey</em>.<a href="https://arxiv.org/html/2503.22759v1">https://arxiv.org/html/2503.22759v1</a> (접속: 2026-06). —<em>용도: 데이터 오염 탐지가 여전히 연구 단계이며 범용 production 도구가 없다는 근거.</em></p><p><strong>A12.</strong> AboutCode.<em>ScanCode Toolkit — 라이선스·저작권 텍스트 매칭 엔진</em>.<a href="https://github.com/aboutcode-org/scancode-toolkit/">https://github.com/aboutcode-org/scancode-toolkit/</a> (접속: 2026-06). —<em>용도: 라이선스 식별 엔진을 재사용하되 AI 라이선스 텍스트 보강이 필요하다는 근거.</em></p><p><strong>A13.</strong> Responsible AI Licenses (RAIL).<em>FAQ / BigScience OpenRAIL-M — 파생 전파되는 사용 기반 제한</em>.<a href="https://www.licenses.ai/faq-2">https://www.licenses.ai/faq-2</a> (접속: 2026-06). —<em>용도: RAIL 계열의 행위 제한을 기계가 읽고 자동 판정하는 표준이 부재하다는 근거.</em></p><p><strong>A14.</strong> LF AI &amp; Data.<em>Simplifying AI Model Licensing with OpenMDW</em>.<a href="https://lfaidata.foundation/blog/2025/07/22/simplifying-ai-model-licensing-with-openmdw/">https://lfaidata.foundation/blog/2025/07/22/simplifying-ai-model-licensing-with-openmdw/</a> (접속: 2026-06). —<em>용도: OpenMDW가 모델과 데이터, 가중치를 묶는 허용형 라이선스로 SPDX에 등재됐다는 근거(AI 라이선스 사전 보강 대상).</em></p><p><strong>A15.</strong> Protect AI.<em>huntr — AI와 ML 대상 버그바운티이자 CNA</em>.<a href="https://huntr.com/">https://huntr.com/</a> (접속: 2026-06). —<em>용도: huntr가 발급한 CVE가 NVD를 거쳐 Dependency-Track 매칭에 유입된다는 근거.</em></p><p><strong>A16.</strong> Google와 OpenSSF.<em>OSV.dev — 오픈소스 취약점 데이터베이스</em>.<a href="https://osv.dev/">https://osv.dev/</a> (접속: 2026-06). —<em>용도: OSV가 ML 라이브러리 취약점을 포함하나 모델 가중치 자체 위험은 수록하지 않는다는 근거.</em></p><p><strong>A17.</strong> Trail of Bits.<em>Fickling — pickle 정적 분석 도구</em>.<a href="https://github.com/trailofbits/fickling">https://github.com/trailofbits/fickling</a> (접속: 2026-06). —<em>용도: 고위험 pickle 정밀 검사 도구 근거.</em></p><p><strong>A18.</strong> OSS Review Toolkit.<em>ORT — 라이선스 컴플라이언스 오케스트레이션</em>.<a href="https://github.com/oss-review-toolkit/ort">https://github.com/oss-review-toolkit/ort</a> (접속: 2026-06). —<em>용도: 정책 룰 엔진과 SBOM 리포터를 재사용한다는 근거.</em></p><p><strong>A19.</strong> OpenSSF.<em>GUAC — SBOM 그래프와 영향분석</em>.<a href="https://guac.sh/">https://guac.sh/</a> (접속: 2026-06). —<em>용도: 영향분석을 보강하는 선택지이며 AI 전용 처리는 미확인이라는 근거.</em></p>
]]></content:encoded></item><item><title>외부 모델과 데이터셋 도입 점검 체크리스트</title><link>https://haksungjang.github.io/research/2026-ai-bom-requirements/ingestion-checklist/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">장학성</dc:creator><guid>https://haksungjang.github.io/research/2026-ai-bom-requirements/ingestion-checklist/</guid><description>외부 AI 모델이나 데이터셋을 가져와 활용할 때 AI BOM을 근거로 투명성과 위험을 점검하는 체크리스트입니다. 식별, 라이선스, 데이터 적법성, 보안 위험을 단계별로 확인합니다.</description><content:encoded>&lt;![CDATA[<div class="alert alert-info" role="alert"><p>이 글은 Claude Code를 이용해 작성했고, 인용한 핵심 사실은 1차 출처로 교차 검증했습니다.</p></div><p>이 체크리스트는 자사 개발팀이 외부 AI 모델이나 데이터셋을 가져와 활용할 때, AI를 위한 부품 명세서(AI Bill of Materials, AI BOM)를 근거로 투명성과 위험을 점검하는 기준입니다. 확인 항목은<a href="/research/2026-ai-bom-requirements/">「AI BOM 필드 요구사항 매트릭스」</a>의 도입 열에서 도출했습니다.</p><p>도입 점검의 목적은 모델을 만드는 것이 아니라 들여오는 것이므로, 위험 평가에 직접 쓰이는 필드를 우선합니다. 라이선스는 컴플라이언스 위험을, 출처와 민감도는 데이터 적법성과 개인정보 위험을, 취약점 참조는 보안 위험을 판단하는 근거입니다.</p><h2 id="1-ai-bom-존재와-형식">1. AI BOM 존재와 형식</h2><ul><li>도입 대상에 AI BOM이 제공되는가</li><li>형식이 SPDX 3.0 이상 또는 CycloneDX 1.6 이상인가</li><li>AI BOM의 타임스탬프가 도입 대상 버전과 일치하는가</li></ul><p>AI BOM이 없거나 AI 전용 프로파일이 없는 형식이면, 도입 전 공급처에 요청하거나 자체적으로 최소 정보를 확보합니다.</p><h2 id="2-식별과-버전-필수-확인">2. 식별과 버전 (필수 확인)</h2><table><thead><tr><th>확인 항목</th><th>판정 기준</th></tr></thead><tbody><tr><td>모델 이름과 식별자</td><td>표준 식별자(PURL/CPE)로 식별되는가</td></tr><tr><td>모델 버전</td><td>도입하려는 버전과 일치하는가</td></tr><tr><td>데이터셋 이름과 식별자</td><td>학습 데이터셋이 식별되는가</td></tr><tr><td>시스템 이름과 버전</td><td>공급 시스템이 식별되고 버전이 표기되는가</td></tr><tr><td>시스템 구성요소</td><td>포함된 구성요소가 열거되는가</td></tr><tr><td>의존성 관계</td><td>구성요소 간 관계가 표기되는가</td></tr></tbody></table><h2 id="3-라이선스-점검-필수-확인">3. 라이선스 점검 (필수 확인)</h2><table><thead><tr><th>확인 항목</th><th>판정 기준</th></tr></thead><tbody><tr><td>모델 라이선스</td><td>라이선스가 명시되고, 자사 사용 목적과 양립하는가</td></tr><tr><td>open weight 여부</td><td>open weight, open architecture, open data 중 무엇인지 확인</td></tr><tr><td>데이터셋 라이선스</td><td>학습 데이터셋의 라이선스가 명시되고 사용 목적과 양립하는가</td></tr></tbody></table><p>라이선스가 비어 있거나 사용 목적과 충돌하면 도입 보류 사유입니다. 모델 라이선스와 데이터셋 라이선스는 별개이므로 각각 확인합니다.</p><h2 id="4-데이터-적법성과-위험-필수-확인">4. 데이터 적법성과 위험 (필수 확인)</h2><table><thead><tr><th>확인 항목</th><th>판정 기준</th></tr></thead><tbody><tr><td>데이터셋 출처</td><td>출처, 수집 방법, 전처리 단계가 표기되는가</td></tr><tr><td>데이터셋 민감도</td><td>개인식별정보, 저작권 보호 데이터, 민감 데이터 포함 여부가 표기되는가</td></tr><tr><td>모델 설명과 계보</td><td>모델의 한계와 선행 모델 계보가 기술되는가</td></tr></tbody></table><p>데이터셋 출처가 불명확하거나 민감 데이터 포함 여부가 표기되지 않으면, 데이터 적법성과 개인정보 위험을 별도로 평가해야 합니다.</p><h2 id="5-보안-위험-필수-확인">5. 보안 위험 (필수 확인)</h2><table><thead><tr><th>확인 항목</th><th>판정 기준</th></tr></thead><tbody><tr><td>취약점 참조</td><td>알려진 취약점 정보 링크가 제공되고, 알려진 취약점이 도입 환경에서 수용 가능한가</td></tr></tbody></table><p>취약점 참조는 사이버 복원력법과 미국 식품의약국 가이던스가 직접 요구하는 항목이므로, 도입 점검에서 필수로 확인합니다.</p><h2 id="6-권장-확인-항목">6. 권장 확인 항목</h2><p>다음은 위험 수준이 높거나 규제 대상 용도일 때 추가로 확인합니다.</p><ul><li>모델 타임스탬프와 생산자</li><li>모델 속성, 입출력 속성, 학습 속성</li><li>모델 해시 값과 알고리즘(무결성 검증)</li><li>데이터셋 내용과 해시</li><li>시스템 데이터 흐름과 데이터 사용</li><li>의도된 응용 분야와 자사 사용 목적의 일치 여부</li></ul><h2 id="7-도입-판정">7. 도입 판정</h2><p>위 1절부터 5절까지의 필수 확인 항목을 모두 충족하면 도입 가능으로 판정합니다. 라이선스 충돌, 출처 불명확, 민감 데이터 미표기, 수용 불가 취약점 중 하나라도 해당하면 도입 보류로 두고 공급처에 보완을 요청하거나 대체 모델을 검토합니다.</p><p>판정 결과는 도입 대상의 AI BOM 식별자, 버전, 판정 일자와 함께 기록해 두어, 이후 재평가와 공급망 추적에 활용합니다.</p>
]]></content:encoded></item><item><title>자사 개발팀 AI BOM 작성 지침</title><link>https://haksungjang.github.io/research/2026-ai-bom-requirements/producer-guide/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">장학성</dc:creator><guid>https://haksungjang.github.io/research/2026-ai-bom-requirements/producer-guide/</guid><description>자사 개발팀이 AI 모델이나 시스템을 만들 때 작성해야 하는 AI BOM의 지침입니다. 생산 시점의 정보 접근성을 살려 필수·권장 작성 항목과 무결성·출처 기록 방법을 정리합니다.</description><content:encoded>&lt;![CDATA[<div class="alert alert-info" role="alert"><p>이 글은 Claude Code를 이용해 작성했고, 인용한 핵심 사실은 1차 출처로 교차 검증했습니다.</p></div><p>이 문서는 자사 개발팀이 AI 모델이나 AI 시스템을 만들 때 작성해야 하는 AI를 위한 부품 명세서(AI Bill of Materials, AI BOM)의 지침입니다. 생산 시점에는 정보 접근성이 가장 좋으므로 요구 수준을 가장 높게 잡습니다. 필수 항목은<a href="/research/2026-ai-bom-requirements/">「AI BOM 필드 요구사항 매트릭스」</a>의 생산 열에서 도출했습니다.</p><p>생산팀이 남기지 않으면 도입팀과 공급망 하류가 영영 확보할 수 없는 정보가 많습니다. 그래서 합의 기준으로 선택인 모델과 데이터셋 상세 정보도 생산 시에는 권장으로 작성합니다.</p><h2 id="1-작성-원칙">1. 작성 원칙</h2><p>AI BOM은 모델 학습이나 시스템 빌드가 끝난 뒤 생성합니다. 생성 시점의 수명주기 단계(빌드 이전, 빌드, 빌드 이후)를 메타데이터에 기록합니다. 형식은 SPDX 3.0 이상 또는 CycloneDX 1.6 이상을 사용하고, 가능하면 생성 도구로 자동 생성한 뒤 누락 항목을 수기로 보완합니다.</p><p>값을 확정할 수 없는 항목은 비워 두지 말고 &ldquo;확인 불가"로 명시합니다. 모델이나 데이터셋을 갱신하면 AI BOM 버전과 타임스탬프를 함께 올립니다.</p><h2 id="2-필수-작성-항목">2. 필수 작성 항목</h2><p>다음은 반드시 작성합니다. 매트릭스에서 표준 두 곳 이상이 존재를 요구한 항목입니다.</p><table><thead><tr><th>클러스터</th><th>필수 항목</th></tr></thead><tbody><tr><td>메타데이터</td><td>작성자, 데이터 형식 이름, 데이터 형식 버전, 타임스탬프, 의존성 관계</td></tr><tr><td>시스템 수준</td><td>시스템 이름, 시스템 구성요소, 시스템 생산자, 시스템 버전</td></tr><tr><td>모델</td><td>모델 이름, 모델 식별자, 모델 버전, 모델 타임스탬프, 모델 생산자, 모델 라이선스</td></tr><tr><td>데이터셋</td><td>데이터셋 이름, 데이터셋 내용, 데이터셋 식별자, 데이터셋 출처, 데이터셋 라이선스</td></tr></tbody></table><h2 id="3-권장-작성-항목">3. 권장 작성 항목</h2><p>다음은 합의 기준으로 선택이지만, 생산 시점에만 정확히 기록할 수 있으므로 작성을 권장합니다. 특히 모델 카드와 데이터 카드를 운영한다면 그 내용을 AI BOM에 연결합니다.</p><table><thead><tr><th>클러스터</th><th>권장 항목</th><th>작성 이유</th></tr></thead><tbody><tr><td>메타데이터</td><td>SBOM 버전, 작성자 서명, 도구 이름과 버전, 생성 맥락</td><td>무결성과 추적성 확보</td></tr><tr><td>시스템 수준</td><td>데이터 흐름, 데이터 사용, 입출력 속성, 의도된 응용 분야</td><td>하류의 위험 평가 근거</td></tr><tr><td>모델</td><td>모델 설명과 계보, 모델 해시 값과 알고리즘, 모델 속성, 입출력 속성, 학습 속성, 외부 참조</td><td>재현성과 무결성 검증, 모델 카드 연계</td></tr><tr><td>데이터셋</td><td>데이터셋 설명, 데이터셋 해시, 통계적 속성, 데이터셋 민감도, 의존성 관계</td><td>데이터 적법성과 위험 평가 근거</td></tr><tr><td>보안과 지표</td><td>보안 통제, 보안 준수, 취약점 참조, 보안 지표, 운영 성과 지표</td><td>사이버보안 위험관리 연계</td></tr></tbody></table><h2 id="4-모델-해시와-무결성">4. 모델 해시와 무결성</h2><p>모델 해시 값과 알고리즘은 합의 기준으로는 선택이지만 권장 강도가 높습니다. 가중치 파일이나 모델 아티팩트의 해시를 기록해 두면, 하류에서 모델 무결성을 검증할 수 있습니다. 해시 알고리즘은 인터넷 할당 번호 관리기관(IANA)의 해시 함수 명칭을 사용하고, 미국 국립표준기술연구소(NIST)가 승인한 알고리즘을 씁니다.</p><h2 id="5-데이터셋-출처와-민감도">5. 데이터셋 출처와 민감도</h2><p>생산팀은 학습에 사용한 데이터셋의 출처를 가장 잘 아는 위치에 있습니다. 출처, 수집 방법, 전처리와 라벨링 단계, 합성 데이터 여부를 기록하고, 개인식별정보나 저작권 보호 데이터, 민감 데이터의 포함 여부를 표기합니다. 이 정보는 인공지능법(AI Act)의 학습 데이터 문서화 의무와 국내 AI 기본법의 학습데이터 개요 요구에 대응하는 근거가 됩니다.</p><h2 id="6-작성-후-확인">6. 작성 후 확인</h2><ul><li>2절 필수 항목이 모두 채워졌는가</li><li>3절 권장 항목 중 모델 카드나 데이터 카드로 확보 가능한 것을 연결했는가</li><li>모델 가중치와 데이터셋 각각에 라이선스를 명시했는가</li><li>생성 시점의 수명주기 단계를 기록했는가</li><li>모델이나 데이터셋 갱신 시 버전과 타임스탬프를 올렸는가</li></ul>
]]></content:encoded></item><item><title>공급사 AI BOM 제출 요구사항</title><link>https://haksungjang.github.io/research/2026-ai-bom-requirements/supplier-requirements/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">장학성</dc:creator><guid>https://haksungjang.github.io/research/2026-ai-bom-requirements/supplier-requirements/</guid><description>자사에 AI 모델이나 시스템을 공급하는 공급사가 제출해야 하는 AI BOM의 요구사항입니다. 표준 데이터 형식, 필수 포함 정보, 식별자 규칙, 라이선스·출처·민감도 요구를 규정합니다.</description><content:encoded>&lt;![CDATA[<div class="alert alert-info" role="alert"><p>이 글은 Claude Code를 이용해 작성했고, 인용한 핵심 사실은 1차 출처로 교차 검증했습니다.</p></div><p>이 문서는 자사에 AI 모델이나 AI 시스템을 공급하는 공급사가 제출해야 하는 AI를 위한 부품 명세서(AI Bill of Materials, AI BOM)의 요구사항을 규정합니다. 기존 소프트웨어 부품 명세서(SBOM) 제출 요구사항을 모델과 데이터셋 층위로 확장한 것이며, 필수 항목은<a href="/research/2026-ai-bom-requirements/">「AI BOM 필드 요구사항 매트릭스」</a>의 공급사 열에서 도출했습니다.</p><h2 id="1-표준-데이터-형식">1. 표준 데이터 형식</h2><p>AI BOM은 기계 판독이 가능한 표준 형식으로 제출해야 합니다. 다음 두 형식을 인정합니다.</p><table><thead><tr><th>형식</th><th>버전</th><th>AI 표현 방식</th><th>비고</th></tr></thead><tbody><tr><td>SPDX</td><td>3.0 이상</td><td>AI Profile의<code>AIPackage</code>, Dataset Profile의<code>DatasetPackage</code></td><td>모델과 데이터셋 필드를 가장 촘촘하게 규정</td></tr><tr><td>CycloneDX</td><td>1.6 이상</td><td><code>component</code>의<code>machine-learning-model</code>·<code>data</code> 유형,<code>modelCard</code></td><td>취약점(VEX) 연계에 강점</td></tr></tbody></table><p>두 형식 모두 동등하게 인정하나, 모델과 데이터셋의 필수 속성을 형식 차원에서 강제하는 SPDX 3.0을 권장합니다. 1.6 미만 CycloneDX나 2.x SPDX는 AI 전용 프로파일이 없으므로 제출 형식으로 인정하지 않습니다.</p><h2 id="2-필수-포함-정보">2. 필수 포함 정보</h2><p>다음 항목은 모든 제출 AI BOM에 반드시 포함되어야 합니다. 값을 확인할 수 없는 항목은 비워 두지 말고 &ldquo;확인 불가(unknown)&ldquo;로 명시해야 합니다.</p><h3 id="21-문서-메타데이터">2.1 문서 메타데이터</h3><table><thead><tr><th>항목</th><th>설명</th></tr></thead><tbody><tr><td>작성자</td><td>AI BOM을 생성한 주체. 도구가 아니라 운용 주체의 정식 명칭</td></tr><tr><td>데이터 형식 이름</td><td>SPDX 또는 CycloneDX</td></tr><tr><td>데이터 형식 버전</td><td>예: SPDX 3.0.1, CycloneDX 1.6</td></tr><tr><td>타임스탬프</td><td>최종 갱신 일시(ISO 8601 또는 RFC 9557)</td></tr><tr><td>의존성 관계</td><td>구성요소 간 포함과 파생 관계</td></tr></tbody></table><h3 id="22-시스템-수준-정보">2.2 시스템 수준 정보</h3><table><thead><tr><th>항목</th><th>설명</th></tr></thead><tbody><tr><td>시스템 이름</td><td>공급 AI 시스템의 식별 가능한 이름</td></tr><tr><td>시스템 구성요소</td><td>시스템에 포함된 AI 모델, 데이터베이스, 소프트웨어</td></tr><tr><td>시스템 생산자</td><td>시스템을 생성한 주체</td></tr><tr><td>시스템 버전</td><td>공급 시스템의 버전</td></tr></tbody></table><h3 id="23-모델-정보">2.3 모델 정보</h3><table><thead><tr><th>항목</th><th>설명</th></tr></thead><tbody><tr><td>모델 이름</td><td>모델 생산자가 부여한 이름</td></tr><tr><td>모델 식별자</td><td>PURL 또는 CPE 등 기계 판독 식별자</td></tr><tr><td>모델 버전</td><td>모델의 버전</td></tr><tr><td>모델 생산자</td><td>사전학습, 사후학습, 미세조정에 관여한 주체</td></tr><tr><td>모델 라이선스</td><td>open weight 여부를 포함한 라이선스 유형과 라이선스 문서 링크</td></tr></tbody></table><h3 id="24-데이터셋-정보">2.4 데이터셋 정보</h3><table><thead><tr><th>항목</th><th>설명</th></tr></thead><tbody><tr><td>데이터셋 이름</td><td>학습이나 평가에 사용된 데이터셋의 이름</td></tr><tr><td>데이터셋 식별자</td><td>데이터셋 URL 또는 URI</td></tr><tr><td>데이터셋 출처</td><td>출처, 수집 방법, 전처리와 라벨링 단계, 합성 데이터 여부</td></tr><tr><td>데이터셋 민감도</td><td>개인식별정보, 저작권 보호 데이터, 민감 데이터 포함 여부</td></tr><tr><td>데이터셋 라이선스</td><td>데이터셋 라이선스 유형과 문서 링크</td></tr></tbody></table><h3 id="25-보안-정보">2.5 보안 정보</h3><table><thead><tr><th>항목</th><th>설명</th></tr></thead><tbody><tr><td>취약점 참조</td><td>모델과 시스템의 알려진 취약점 정보를 제공하는 데이터베이스나 저장소 링크</td></tr></tbody></table><p>취약점 참조는 합의 기준으로는 선택이지만, 사이버 복원력법(Cyber Resilience Act)과 미국 식품의약국(FDA) 가이던스가 직접 요구하는 항목이므로 공급사 제출에서는 필수로 둡니다.</p><h2 id="3-식별자-규칙">3. 식별자 규칙</h2><p>모델과 데이터셋은 기계 판독이 가능한 표준 식별자로 식별해야 합니다.</p><ul><li>모델 식별자는 Package URL(PURL) 또는 공통 플랫폼 열거(Common Platform Enumeration, CPE)를 사용합니다. 모델 저장소 경로나 커밋 해시 같은 내재적 식별자를 함께 제공할 수 있습니다.</li><li>데이터셋 식별자는 접근 가능한 URL이나 URI를 사용합니다.</li><li>식별자가 여럿이면 전부 포함합니다.</li></ul><h2 id="4-라이선스-출처-민감도-강조">4. 라이선스, 출처, 민감도 강조</h2><p>기존 소프트웨어 SBOM 요구사항과 달리, AI BOM에서는 다음 세 항목을 특히 엄격하게 요구합니다.</p><p>라이선스는 모델 가중치와 데이터셋 각각에 대해 별도로 명시해야 합니다. 모델이 open weight, open architecture, open data 중 무엇에 해당하는지 구분하고, 라이선스 문서 링크를 제공해야 합니다. 데이터셋 출처는 단순 출처 표기를 넘어 수집 방법(웹 크롤링인지 상업적 계약인지), 전처리와 라벨링 단계, 합성 데이터 사용 여부까지 포함해야 합니다. 데이터셋 민감도는 개인식별정보, 저작권 보호 데이터, 금융이나 의료 같은 민감 데이터의 포함 여부를 표기해야 합니다.</p><h2 id="5-샘플-문서">5. 샘플 문서</h2><p>다음은 CycloneDX 1.6 형식의 최소 AI BOM 골격입니다. 실제 제출에서는 위 2절의 모든 필수 항목을 채워야 합니다.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"bomFormat"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"CycloneDX"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"specVersion"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"1.6"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"metadata"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"timestamp"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"2026-06-29T09:00:00Z"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"authors"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[{</span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"공급사 정식 명칭"</span><span style="color:#000;font-weight:bold">}],</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"component"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">"type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"application"</span><span style="color:#000;font-weight:bold">,</span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"공급 AI 시스템"</span><span style="color:#000;font-weight:bold">,</span><span style="color:#204a87;font-weight:bold">"version"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"1.0.0"</span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">},</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"components"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"machine-learning-model"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"공급 모델명"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"version"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"1.0"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"bom-ref"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"pkg:huggingface/org/model@1.0"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"supplier"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"모델 생산자"</span><span style="color:#000;font-weight:bold">},</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"licenses"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[{</span><span style="color:#204a87;font-weight:bold">"license"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">"id"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"Apache-2.0"</span><span style="color:#000;font-weight:bold">}</span><span style="color:#000;font-weight:bold">}],</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"modelCard"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"modelParameters"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"datasets"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">"type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"dataset"</span><span style="color:#000;font-weight:bold">,</span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"학습 데이터셋명"</span><span style="color:#000;font-weight:bold">,</span><span style="color:#204a87;font-weight:bold">"classification"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"public"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"governance"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">"owners"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[{</span><span style="color:#204a87;font-weight:bold">"organization"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"데이터 출처"</span><span style="color:#000;font-weight:bold">}</span><span style="color:#000;font-weight:bold">}]</span><span style="color:#000;font-weight:bold">}</span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">]</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">],</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"vulnerabilities"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[]</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span></code></pre></div><h2 id="6-제출-전-검증-체크리스트">6. 제출 전 검증 체크리스트</h2><p>공급사는 제출 전에 다음을 확인해야 합니다.</p><ul><li>형식이 SPDX 3.0 이상 또는 CycloneDX 1.6 이상인가</li><li>2절의 모든 필수 항목이 채워졌거나 &ldquo;확인 불가"로 명시됐는가</li><li>모델과 데이터셋이 표준 식별자로 식별되는가</li><li>모델 가중치와 데이터셋 각각에 라이선스가 명시됐는가</li><li>데이터셋 출처와 민감도가 표기됐는가</li><li>취약점 참조 링크가 제공됐는가</li><li>빌드 또는 모델 릴리스 완료 이후 시점에 생성됐는가</li></ul><p>상세 점검 기준은<a href="/research/2026-ai-bom-requirements/ingestion-checklist/">도입 점검 체크리스트</a>와 공유합니다.</p>
]]></content:encoded></item></channel></rss>