diff --git a/content/ko/guide/ai-sbom_guide/5-tools/1-aibom-generator/_index.md b/content/ko/guide/ai-sbom_guide/5-tools/1-aibom-generator/_index.md new file mode 100644 index 000000000..1cbbd6df1 --- /dev/null +++ b/content/ko/guide/ai-sbom_guide/5-tools/1-aibom-generator/_index.md @@ -0,0 +1,111 @@ +--- +title: "OWASP AIBOM Generator" +weight: 10 +type: docs +categories: ["guide"] +tags: ["AI SBOM", "OWASP", "CycloneDX", "도구"] +description: > + Hugging Face 모델에서 CycloneDX 형식 AI SBOM을 생성하고 완전성 점수를 매기는 OWASP 도구의 + 사용법을 실측 화면과 함께 안내한다. +--- + +## 개요 + +OWASP AIBOM Generator는 Hugging Face 모델 ID를 입력받아 모델 카드 메타데이터를 가져오고, +CycloneDX 형식의 AI SBOM을 생성하는 오픈소스 도구다. OWASP Gen AI Security Project가 관리하며, +생성된 BOM이 얼마나 완전한지를 점수로 평가하는 기능이 특징이다. + +cdxgen이 의존성을 빠르게 식별하되 라이선스를 비워 두는 것과 달리, 이 도구는 모델 카드에 적힌 +라이선스와 작성자, 외부 참조를 채운다. [3.5 라이선스 의무](../../2-ai-extension/1-license-obligations/)가 +요구하는 라이선스 검토의 출발점으로 쓰기 좋다. + +## 주요 기능 + +- Hugging Face 모델의 메타데이터를 가져와 CycloneDX 1.6과 1.7 형식 AIBOM을 생성한다. +- 생성된 BOM의 완전성을 점수(0~100)와 프로파일로 평가하고 섹션별로 분해해 보여준다. +- 모델 정보, 모델 카드, 라이선스, 외부 참조를 사람이 읽기 쉬운 화면으로 보여준다. +- 웹 UI와 명령줄(CLI) 두 가지로 쓸 수 있다. + +## 사용법 A — 웹 UI + +브라우저에서 모델 ID만 넣으면 되어 가장 간단하다. OWASP Gen AI Security Project가 제공하는 +Hugging Face Space를 쓰거나, 저장소를 받아 로컬에서 띄운다. + +먼저 입력 화면에서 Hugging Face 모델 ID(예: `facebook/bart-large-cnn`)를 넣고 생성을 누른다. + +![OWASP AIBOM Generator 입력 화면](images/input-form.png) + +**그림 1.** OWASP AIBOM Generator 입력 화면 *(GenAI Security Project, 캡처 2026-06-13)* + +생성이 끝나면 결과 화면에 AIBOM 요약, 완전성 평가, 다운로드 버튼(CycloneDX 1.6과 1.7), AI 모델 +정보, 모델 카드가 표시된다. 화면 상단의 완전성 평가는 BOM이 식별에 필요한 최소 항목을 갖췄는지 +한눈에 보여준다. + +![OWASP AIBOM Generator 결과 화면](images/result-view.png) + +**그림 2.** 생성 결과 화면 — 모델 정보, 라이선스(MIT), 완전성 평가(Basic) *(캡처 2026-06-13)* + +결과 화면은 사람이 읽는 보기(Human-Friendly View)와 함께 필드 체크리스트, 점수 보고서, JSON +보기 탭을 제공한다. 라이선스 의무 검토와 AI SBOM 보관에 필요한 항목을 화면에서 바로 확인하고 +CycloneDX 파일로 내려받는다. + +## 사용법 B — 명령줄(CLI) + +CI/CD에 넣거나 여러 모델을 일괄 처리할 때는 CLI가 편하다. 설치 후 모델 ID를 인자로 준다. + +```bash +# 설치 (Python 가상환경 권장) +pip install "git+https://github.com/GenAI-Security-Project/aibom-generator" + +# 모델 ID로 AIBOM 생성 +aibom facebook/bart-large-cnn -o aibom.json +``` + +아래는 실제 실행 결과다. CycloneDX 1.6과 1.7을 생성하고 스키마 검증을 통과하며, 완전성 점수를 +섹션별로 보여준다. + +```text +$ aibom facebook/bart-large-cnn -o aibom.json + +✅ Successfully generated CycloneDX 1.6 SBOM — Schema Validation (1.6): Valid +✅ Successfully generated CycloneDX 1.7 SBOM — Schema Validation (1.7): Valid + +📊 Completeness Score: 58.7/100 Profile: Basic + - Required Fields: 20/20 + - Metadata: 8/20 + - Component Basic: 17.1/20 + - Component Model Card: 6.7/30 + - External References: 10/10 +``` + +**그림 3.** CLI 실측 출력 *(aibom CLI, 모델 facebook/bart-large-cnn, 실행 2026-06-13)* + +생성된 BOM의 모델 컴포넌트는 라이선스와 모델 카드가 채워진다. cdxgen 출력과 달리 `licenses` +필드가 비어 있지 않다. + +```json +{ + "type": "machine-learning-model", + "name": "bart-large-cnn", + "purl": "pkg:huggingface/facebook/bart-large-cnn", + "licenses": [{ "license": { "id": "MIT" } }], + "authors": [{ "name": "facebook" }], + "modelCard": { "modelParameters": { }, "considerations": { } } +} +``` + +## 실측이 보여주는 것 + +{{% alert title="완전성 점수는 입력 메타데이터 품질에 좌우된다" color="info" %}} +실측에서 완전성 점수는 58.7/100(Basic)이었다. Required Fields와 External References는 만점이지만 +모델 카드 점수가 6.7/30으로 낮다. 이는 도구의 한계가 아니라, 모델 제공자가 Hugging Face 모델 +카드에 정보를 충분히 채우지 않았기 때문이다. 도구는 있는 메타데이터를 충실히 가져오지만, 없는 +정보를 만들어 내지는 못한다. 모델 카드가 부실하면 사람이 출처를 확인해 보강해야 한다. +{{% /alert %}} + +## 참고 + +- AI SBOM 생성과 관리 절차: [3.9 AI SBOM](../../2-ai-extension/3-ai-sbom/) +- 라이선스 의무 검토: [3.5 라이선스 의무](../../2-ai-extension/1-license-obligations/) +- 다른 생성 도구: [cdxgen](../2-cdxgen/) +- 공식: [OWASP AIBOM Generator](https://genai.owasp.org/resource/owasp-aibom-generator/) diff --git a/content/ko/guide/ai-sbom_guide/5-tools/1-aibom-generator/images/input-form.png b/content/ko/guide/ai-sbom_guide/5-tools/1-aibom-generator/images/input-form.png new file mode 100644 index 000000000..bf8f4af2b Binary files /dev/null and b/content/ko/guide/ai-sbom_guide/5-tools/1-aibom-generator/images/input-form.png differ diff --git a/content/ko/guide/ai-sbom_guide/5-tools/1-aibom-generator/images/result-view.png b/content/ko/guide/ai-sbom_guide/5-tools/1-aibom-generator/images/result-view.png new file mode 100644 index 000000000..edec5701f Binary files /dev/null and b/content/ko/guide/ai-sbom_guide/5-tools/1-aibom-generator/images/result-view.png differ diff --git a/content/ko/guide/ai-sbom_guide/5-tools/2-cdxgen/_index.md b/content/ko/guide/ai-sbom_guide/5-tools/2-cdxgen/_index.md new file mode 100644 index 000000000..287ba3712 --- /dev/null +++ b/content/ko/guide/ai-sbom_guide/5-tools/2-cdxgen/_index.md @@ -0,0 +1,101 @@ +--- +title: "cdxgen" +weight: 20 +type: docs +categories: ["guide"] +tags: ["AI SBOM", "cdxgen", "CycloneDX", "도구"] +description: > + 프로젝트와 모델에서 CycloneDX SBOM을 생성하는 OWASP cdxgen의 AI BOM 모드 사용법을 실측 + 출력과 함께 안내한다. +--- + +## 개요 + +cdxgen은 OWASP CycloneDX 프로젝트의 공식 SBOM 생성기다. 20개 이상의 언어와 패키지 매니저를 +지원하고, 최신 버전에서 AI BOM 전용 모드를 제공한다. AI 애플리케이션의 의존성(PyTorch, +Transformers 등)을 자동으로 식별하며, CI/CD 파이프라인에 연동하기 좋다. + +AI SBOM 관점에서 cdxgen의 강점은 속도와 자동화다. 약점은 라이선스 정보를 기본 실행에서 채우지 +않는다는 점이다. 아래 실측에서 이 특성이 드러난다. OWASP AIBOM Generator가 모델 카드 메타데이터 +중심이라면, cdxgen은 코드와 의존성 중심이다. 둘을 함께 쓰면 모델과 의존성을 모두 다룬다. + +## 주요 기능 + +- 소스 코드와 컨테이너 이미지에서 의존성을 식별해 CycloneDX SBOM을 생성한다. +- AI BOM 모드(`-t ai`)로 AI/ML 메타데이터(formulation)를 포함한다. +- Hugging Face 모델 URL, Modelfile, GGUF 아티팩트를 직접 입력으로 받는다. +- Dependency-Track 서버에 SBOM을 자동 제출해 지속 관리할 수 있다. + +## 설치 + +```bash +# 일회성 실행 (Node.js 필요) +npx @cyclonedx/cdxgen@latest --version + +# 전역 설치 +npm install -g @cyclonedx/cdxgen +``` + +## 사용법 — AI BOM 생성 + +AI 프로젝트 디렉토리에서 AI BOM 모드로 실행한다. + +```bash +# AI BOM 생성 +cdxgen -t ai -o aibom.json . + +# AI/ML 메타데이터(formulation)를 포함해 생성 +cdxgen -t ai --include-formulation -o aibom.json . +``` + +아래는 사전학습 모델(`facebook/bart-large-cnn`)을 불러오는 요약 앱(`transformers`, `torch` +의존)에 cdxgen을 실제로 돌린 결과다. 의존성 5건을 자동 식별해 CycloneDX 1.7 BOM을 만든다. + +```text +$ cdxgen -t python --include-formulation -o aibom.json . +CycloneDX Generator 12.5.1 (Node.js) + +생성된 components — 5건 (CycloneDX 1.7): + transformers 4.44.2 pkg:pypi/transformers@4.44.2 license: 비어 있음 + torch 2.4.0 pkg:pypi/torch@2.4.0 license: 비어 있음 + numpy 1.26.4 pkg:pypi/numpy@1.26.4 license: 비어 있음 + tokenizers 0.19.1 pkg:pypi/tokenizers@0.19.1 license: 비어 있음 + huggingface-hub 0.24.6 pkg:pypi/huggingface-hub@0.24.6 license: 비어 있음 +``` + +**그림 1.** cdxgen 실측 출력 *(cdxgen 12.5.1, 실행 2026-06-13)* + +생성된 컴포넌트 한 건은 다음과 같다. 식별 근거(evidence)는 채워지지만 `licenses` 필드는 비어 +있다. + +```json +{ + "name": "transformers", + "version": "4.44.2", + "purl": "pkg:pypi/transformers@4.44.2", + "type": "library", + "evidence": { + "identity": [ + { "field": "purl", "confidence": 0.5, + "methods": [{ "technique": "manifest-analysis", "value": "requirements.txt" }] } + ] + } +} +``` + +## 실측이 보여주는 것 + +{{% alert title="cdxgen은 식별이 빠르되 라이선스는 사람이 보강한다" color="warning" %}} +cdxgen은 `requirements.txt`에서 의존성 5건을 빠르게 식별했지만, 각 컴포넌트의 `licenses` 필드가 +비어 있다. 또 앱이 불러오는 사전학습 모델 `facebook/bart-large-cnn`은 코드 스캔만으로는 BOM에 +잡히지 않았다. 인바운드 자재로 별도 수집해 추가해야 한다. cdxgen으로 의존성 골격을 빠르게 만든 +뒤, 라이선스는 사람이 확인해 채우고 모델은 OWASP AIBOM Generator로 별도 생성해 병합하는 조합이 +현실적이다. +{{% /alert %}} + +## 참고 + +- AI SBOM 생성과 관리 절차: [3.9 AI SBOM](../../2-ai-extension/3-ai-sbom/) +- 모델 메타데이터 중심 생성기: [OWASP AIBOM Generator](../1-aibom-generator/) +- SBOM 관리: [Dependency-Track](../../../tools/7-dependency-track/), [cdxgen + Dependency-Track 연동](../../../tools/8-cdxgen-dt/) +- 공식: [cdxgen AI-BOM 문서](https://github.com/cdxgen/cdxgen/blob/master/docs/AI_BOM.md) diff --git a/content/ko/guide/ai-sbom_guide/5-tools/3-scanners/_index.md b/content/ko/guide/ai-sbom_guide/5-tools/3-scanners/_index.md new file mode 100644 index 000000000..968f56c5a --- /dev/null +++ b/content/ko/guide/ai-sbom_guide/5-tools/3-scanners/_index.md @@ -0,0 +1,84 @@ +--- +title: "모델·컨테이너 스캐너 (Lab700x, Trivy, Syft)" +linkTitle: "모델·컨테이너 스캐너" +weight: 30 +type: docs +categories: ["guide"] +tags: ["AI SBOM", "보안", "도구"] +description: > + AI 모델 바이너리와 추론 서버, AI 패키지를 분석하는 보안 스캐너의 주요 기능과 사용법을 소개한다. +--- + +이 페이지는 AI SBOM 생성을 보완하는 분석·식별 도구를 소개한다. 생성 도구(OWASP AIBOM +Generator, cdxgen)가 "무엇이 들어 있는가"를 기록한다면, 이 도구들은 "그것이 안전한가"와 "어떤 +버전인가"를 본다. 아래 명령과 기능은 각 도구의 공식 문서를 기준으로 정리했다(이 가이드에서 +실측한 도구는 [OWASP AIBOM Generator](../1-aibom-generator/)와 [cdxgen](../2-cdxgen/)이다). + +## Lab700x AI SBOM Scanner — 모델 바이너리 정적 분석 + +AI 모델 파일 자체를 정적 분석해 정보를 추출하는 도구다. `.safetensors`, `.pt`(PyTorch), +`.pkl`(Pickle) 같은 모델 바이너리를 실행하지 않고 직접 들여다본다(deep introspection). + +- **주요 기능**: 모델을 실행(Execute)하지 않고 내부 구조를 파악하므로, 모델 파일에 숨겨진 악성 + 코드(Pickle 인젝션 등)나 취약점, 라이선스 위반 요소를 배포 전에 검출한다. +- **AI SBOM에서의 역할**: 외부에서 도입한 모델을 인입 게이트에서 검사하는 데 쓴다. + [3.5 라이선스 의무](../../2-ai-extension/1-license-obligations/)의 인입 메타데이터 강제와 + 결합하면, 메타데이터 검증과 바이너리 안전성 검사를 함께 수행할 수 있다. + +Pickle 형식 모델은 역직렬화 시 임의 코드가 실행될 수 있어 공급망 위험이 크다. 모델을 실행하지 +않고 검사한다는 점이 이 도구의 핵심이다. + +## Trivy — LLM 추론 서버 컨테이너 스캔 + +Aqua Security의 오픈소스 스캐너로, 컨테이너 이미지와 파일시스템의 취약점을 점검한다. 최근 AI +모델 인프라 인식을 추가했다. + +- **주요 기능**: Ollama, LocalAI 같은 LLM 추론 서버 컨테이너를 스캔해, 포함된 오픈소스 라이브러리와 + 컨테이너 취약점을 수집한다. +- **사용법**: + +```bash +# 컨테이너 이미지 스캔 (취약점) +trivy image ollama/ollama:latest + +# SBOM(CycloneDX) 생성 +trivy image --format cyclonedx --output sbom.json ollama/ollama:latest +``` + +AI 모델을 컨테이너로 배포하는 환경에서 추론 서버의 취약점과 구성요소를 SBOM으로 남기는 데 쓴다. + +## Syft — AI 패키지와 가상환경 식별 + +Anchore의 SBOM 생성기로, 컨테이너와 파일시스템, 가상환경을 스캔한다. + +- **주요 기능**: Python 가상환경을 분석해 PyTorch, Transformers 등 AI 가동에 쓰인 패키지의 정확한 + 버전을 수집한다. SPDX와 CycloneDX 형식으로 출력한다. +- **사용법**: + +```bash +# 디렉토리 스캔 후 CycloneDX 출력 +syft scan dir:. -o cyclonedx-json=sbom.json + +# 컨테이너 이미지 스캔 +syft scan registry:python:3.11-slim -o spdx-json +``` + +cdxgen과 역할이 비슷하므로, 이미 Anchore 도구 모음(Syft, Grype)을 쓰는 조직이라면 Syft로 AI +애플리케이션의 의존성 SBOM을 생성하고 Grype로 취약점을 점검하는 조합이 자연스럽다. + +## 도구 조합 권고 + +한 도구로 전부 해결되지 않는다. 실무에서는 역할을 나눠 조합한다. + +| 목적 | 도구 | +|------|------| +| 모델 메타데이터 AIBOM 생성 | OWASP AIBOM Generator | +| 의존성 SBOM 생성 | cdxgen, Syft | +| 모델 바이너리 안전성 검사 | Lab700x AI SBOM Scanner | +| 추론 서버·컨테이너 취약점 | Trivy | +| SBOM 저장·취약점 모니터링 | [Dependency-Track](../../../tools/7-dependency-track/) | + +## 참고 + +- AI SBOM 생성과 관리 절차: [3.9 AI SBOM](../../2-ai-extension/3-ai-sbom/) +- 생성 도구 실측: [OWASP AIBOM Generator](../1-aibom-generator/), [cdxgen](../2-cdxgen/) diff --git a/content/ko/guide/ai-sbom_guide/5-tools/_index.md b/content/ko/guide/ai-sbom_guide/5-tools/_index.md new file mode 100644 index 000000000..6df58b8fb --- /dev/null +++ b/content/ko/guide/ai-sbom_guide/5-tools/_index.md @@ -0,0 +1,31 @@ +--- +title: "도구" +linkTitle: "도구" +weight: 50 +type: docs +categories: ["guide"] +tags: ["AI SBOM", "도구"] +description: > + AI SBOM을 생성하고 분석하는 오픈소스 도구의 주요 기능과 사용법을 실측 화면과 함께 안내한다. +--- + +이 절은 AI SBOM 컴플라이언스를 자동화하는 오픈소스 도구를 다룬다. 각 도구의 주요 기능과 +설치, 사용법을 실제 실행 결과와 함께 정리했다. [3.9 AI SBOM](../2-ai-extension/3-ai-sbom/)의 +자동화 성숙도 맵에서 본 구분을 도구별로 구체화한 것이다. + +정직하게 짚어 둘 경계가 있다. 도구는 BOM을 자동으로 생성하지만, 생성된 BOM의 라이선스가 +정확한지, 누락된 자재는 없는지를 보장하지는 못한다. 아래 도구 비교에서 OWASP AIBOM +Generator는 모델 카드의 라이선스를 채우고, cdxgen은 의존성을 빠르게 식별하되 라이선스 필드를 +비워 둔다. 도구를 고를 때 이 차이를 본다. + +## 도구 한눈에 보기 + +| 도구 | 입력 | 출력 | 강점 | 다루는 곳 | +|---|---|---|---|---| +| OWASP AIBOM Generator | Hugging Face 모델 ID | CycloneDX 1.6/1.7 | 모델 카드와 라이선스 메타데이터, 완전성 점수 | [바로가기](./1-aibom-generator/) | +| cdxgen | 프로젝트 디렉토리, 모델 파일 | CycloneDX | 의존성 자동 식별, CI/CD 연동 | [바로가기](./2-cdxgen/) | +| Lab700x, Trivy, Syft | 모델 바이너리, 컨테이너, 가상환경 | 보고서, SBOM | 모델 정적 분석, 추론 서버와 패키지 식별 | [바로가기](./3-scanners/) | + +각 도구는 생성, 분석, 관리 단계 중 일부를 자동화한다. 한 도구로 전부 해결되지 않으므로, AI +SBOM을 생성하는 도구(OWASP AIBOM Generator, cdxgen)와 보안을 분석하는 도구(Lab700x, Trivy), +관리하는 도구([Dependency-Track](../../tools/7-dependency-track/))를 조합한다. diff --git a/content/ko/guide/ai-sbom_guide/_index.md b/content/ko/guide/ai-sbom_guide/_index.md index 50c18e5e8..013a99297 100644 --- a/content/ko/guide/ai-sbom_guide/_index.md +++ b/content/ko/guide/ai-sbom_guide/_index.md @@ -157,6 +157,8 @@ AI SBOM을 자동으로 만들어 주는 도구는 이미 여럿 있다. 그러 정책과 사람의 검토로 메운다. 자세한 방법은 [3.5 라이선스 의무](./2-ai-extension/1-license-obligations/)에서 다룬다. {{% /alert %}} +각 도구의 설치와 사용법은 [도구](./5-tools/) 절에서 실측 화면과 명령 출력으로 다룬다. + ## 다른 표준과의 관계 {{% alert title="ISO/IEC 5230 · 42001과의 관계" color="info" %}}