

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 프로그래밍 언어 종속성 컬렉션
<a name="sbom-generator-dependency-collection"></a>

 Amazon Inspector SBOM 생성기는 강력하고 상세한 종속성 모음을 구성하는 다양한 프로그래밍 언어 및 프레임워크를 지원합니다. SBOM을 생성하면 소프트웨어의 구성을 이해하는 데 도움이 되므로 취약성을 식별하고 보안 표준을 준수할 수 있습니다. Amazon Inspector SBOM 생성기는 다음과 같은 프로그래밍 언어 및 파일 형식을 지원합니다.

## Go 종속성 스캔
<a name="w2aac37c25b5"></a>


| 프로그래밍 언어 | 패키지 관리자 | 지원되는 아티팩트 | 도구 체인 지원 | 개발 종속성 | 전이적 종속성 | 프라이빗 플래그 | 재귀적 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Go | Go | `go.mod`<br />`go.sum`<br />`Go Binaries`<br />`GOMODCACHE` | 해당 사항 없음<br />해당 사항 없음<br />예<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 예<br />예<br />예<br />아니요 | 

### go.mod/go.sum
<a name="w2aac37c25b5b5"></a>

 `go.mod` 및 `go.sum` 파일을 사용하여 Go 프로젝트에서 종속성을 정의하고 잠급니다. Amazon Inspector SBOM 생성기는 Go 도구 체인 버전에 따라 이러한 파일을 다르게 관리합니다.

**주요 기능**
+  `go.mod`에서 종속성을 수집합니다(Go 도구 체인 버전이 1.17 이상인 경우).
+  `go.sum`에서 종속성을 수집합니다(Go 도구 체인 버전이 1.17 이하인 경우).
+  선언된 모든 종속성 및 종속성 버전을 식별하기 위한 `go.mod` 구문 분석 

**예시 `go.mod` 파일**  
 다음은 `go.mod` 파일의 예제입니다.

```
module example.com/project

go 1.17

require (
github.com/gin-gonic/gin v1.7.2
golang.org/x/crypto v0.0.0-20210616213533-5cf6c0f8e123
)
```

**예시 `go.sum` 파일**  
 다음은 `go.sum` 파일의 예제입니다.

```
github.com/gin-gonic/gin v1.7.2 h1:VZ7DdRl0sghbA6lVGSkX+UXO2+J0aH7RbsNugG+FA8Q=
github.com/gin-gonic/gin v1.7.2/go.mod h1:ILZ1Ngh2f1pL1ASUj7gGk8lGFeNC8cRTaN2ZhsBNbXU=
golang.org/x/crypto v0.0.0-20210616213533-5cf6c0f8e123 h1:b6rCu+qHze+BUsmC3CZzH8aNu8LzPZTVsNTo64OypSc=
golang.org/x/crypto v0.0.0-20210616213533-5cf6c0f8e123/go.mod h1:K5Dkpb0Q4ewZW/EzWlQphgJcUMBCzoWrLfDOVzpTGVQ=
```

**참고**  
 이러한 각 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### Go 바이너리
<a name="w2aac37c25b5b7"></a>

 Amazon Inspector SBOM 생성기는 컴파일된 Go 바이너리에서 종속성을 추출하여 사용 중인 코드를 보장합니다.

**참고**  
 Amazon Inspector SBOM 생성기는 공식 Go 컴파일러를 사용하여 구축된 Go 바이너리에서 도구 체인 버전을 캡처하고 평가할 수 있도록 지원합니다. 자세한 내용은 Go 웹 사이트에서 [다운로드 및 설치](https://go.dev/doc/install)를 참조하세요. Red Hat과 같은 다른 공급업체의 Go 도구 체인을 사용하는 경우 배포 및 메타데이터 가용성의 잠재적 차이로 인해 평가가 정확하지 않을 수 있습니다.

**주요 기능**
+  Go 바이너리에서 직접 종속성 정보 추출 
+  바이너리 내에 포함된 종속성을 수집합니다.
+  바이너리 컴파일에 사용되는 Go 도구 체인 버전을 감지하고 추출합니다.

### GOMODCACHE
<a name="w2aac37c25b5b9"></a>

 Amazon Inspector SBOM 생성기는 Go 모듈 캐시를 스캔하여 설치된 종속성에 대한 정보를 수집합니다. 이 캐시는 다운로드한 모듈을 저장하여 여러 빌드에서 동일한 버전이 사용되는지 확인합니다.

**주요 기능**
+  `GOMODCACHE` 디렉터리를 스캔하여 캐시된 모듈 식별 
+  모듈 이름, 버전 및 소스 URL을 포함한 자세한 메타데이터를 추출합니다.

**구조 예제**  
 다음은 `GOMODCACHE` 구조의 예입니다.

```
~/go/pkg/mod/
├── github.com/gin-gonic/gin@v1.7.2
├── golang.org/x/crypto@v0.0.0-20210616213533-5cf6c0f8e123
```

**참고**  
 이 구조는 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

## Java 종속성 스캔
<a name="w2aac37c25b7"></a>


| 프로그래밍 언어 | 패키지 관리자 | 지원되는 아티팩트 | 도구 체인 지원 | 개발 종속성 | 전이적 종속성 | 프라이빗 플래그 | 재귀적 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Java | Maven | 컴파일된 Java 애플리케이션(.jar/.war/.ear)<br />`pom.xml` | 해당 사항 없음<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음 | 예<br />예 | 해당 사항 없음<br />해당 사항 없음 | 예<br />예 | 

**참고**  
 취약성 평가 특성은 Maven Central 리포지토리만 지원합니다. JBoss Enterprise Maven Repository와 같은 타사 리포지토리는 현재 지원되지 않습니다.

 Amazon Inspector SBOM 생성기는 컴파일된 Java 애플리케이션 및 `pom.xml` 파일을 분석하여 Java 종속성 스캔을 수행합니다. 컴파일된 애플리케이션을 스캔할 때 스캐너는 무결성 확인을 위해 SHA–1 해시를 생성하고, 임베디드 `pom.properties` 파일을 추출하고, 중첩된 `pom.xml` 파일을 구문 분석합니다.

### SHA–1 해시 컬렉션(컴파일된 .jar, .war, .ear 파일의 경우)
<a name="w2aac37c25b7b9"></a>

 Amazon Inspector SBOM 생성기는 컴파일된 Java 아티팩트의 무결성과 추적성을 보장하기 위해 프로젝트의 모든 `.ear`, `.jar` 및 `.war` 파일에 대해 SHA–1 해시를 수집하려고 합니다.

**주요 기능**
+  모든 컴파일된 Java 아티팩트에 대해 SHA–1 해시를 생성합니다.

**아티팩트 예**  
 다음은 SHA–1 아티팩트의 예입니다.

```
{
  "bom-ref": "comp-52",
  "type": "library",
  "name": "jul-to-slf4j",
  "version": "2.0.6",
  "hashes": [
    {
      "alg": "SHA-1",
      "content": ""
    }
  ],
  "purl": "pkg:maven/jul-to-slf4j@2.0.6",
  "properties": [
    {
      "name": "amazon:inspector:sbom_generator:source_path",
      "value": "test-0.0.1-SNAPSHOT.jar/BOOT-INF/lib/jul-to-slf4j-2.0.6.jar"
    }
  ]
}
```

**참고**  
 이 아티팩트는 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### pom.properties
<a name="w2aac37c25b7c11"></a>

 `pom.properties` 파일은 Maven 프로젝트에서 패키지 이름 및 패키지 버전을 포함한 프로젝트 메타데이터를 저장하는 데 사용됩니다. Amazon Inspector SBOM 생성기는 이 파일을 구문 분석하여 프로젝트 정보를 수집합니다.

**주요 기능**
+  패키지 아티팩트, 패키지 그룹 및 패키지 버전을 구문 분석하고 추출합니다.

**예시 `pom.properties` 파일**  
 다음은 `pom.properties`파일의 예제입니다.

```
#Generated by Maven
#Tue Mar 16 15:44:02 UTC 2021

version=1.6.0
groupId=net.datafaker
artifactId=datafaker
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

**중첩 `pom.xml` 구문 분석 제외**  
 컴파일된 Java 애플리케이션을 스캔할 때 `pom.xml` 구문 분석을 제외하려면 `--skip-nested-pomxml` 인수를 사용합니다.

### pom.xml
<a name="w2aac37c25b7c13"></a>

 `pom.xml` 파일은 Maven 프로젝트의 핵심 구성 파일입니다. 여기에는 프로젝트 및 프로젝트 종속성에 대한 정보가 포함되어 있습니다. Amazon Inspector SBOM 생성기는 pom.xml 파일을 구문 분석하여 종속성을 수집하여 리포지토리의 독립 실행형 파일과 컴파일된 .jar 파일 내의 파일을 스캔합니다.

**주요 기능**
+  `pom.xml` 파일에서 패키지 아티팩트, 패키지 그룹 및 패키지 버전을 구문 분석하고 추출합니다.

**지원되는 Maven 범위 및 태그**  
 종속성은 다음 Maven 범위로 수집됩니다.
+  컴파일 
+  provided 
+  런타임 
+  테스트 
+  시스템 
+  가져오기 

 종속성은 Maven 태그 `<optional>true</optional>`을 사용하여 수집됩니다.

**범위가 있는 `pom.xml` 파일 예제**  
 다음은 범위가 있는 `pom.xml` 파일의 예제입니다.

```
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
</version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
<scope>runtime</scope>
</dependency>
```

**범위가 없는 `pom.xml` 파일 예제**  
 다음은 범위가 없는 `pom.xml` 파일의 예제입니다.

```
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.17.1</version>
</dependency>

<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plain-credentials</artifactId>
<version>183.va_de8f1dd5a_2b_</version>
</dependency>

<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>jackson2-api</artifactId>
<version>2.15.2-350.v0c2f3f8fc595</version>
</dependency>
```

**참고**  
 이러한 각 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

## JavaScript 종속성 스캔
<a name="w2aac37c25b9"></a>


| 프로그래밍 언어 | 패키지 관리자 | 지원되는 아티팩트 | 도구 체인 지원 | 개발 종속성 | 전이적 종속성 | 프라이빗 플래그 | 재귀적 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Javascript | `Node Modules`<br />`NPM`<br />`PNPM`<br />`YARN` | `node_modules/*/package.json`<br />`package-lock.json (v1, v2, and v3) / npm-shrinkwrap.json`<br />`pnpm-lock.yaml`<br />`yarn.lock` | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 해당 사항 없음<br />예<br />예<br />예 | 예<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 예<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 예<br />아니요<br />아니요<br />아니요 | 

### package.json
<a name="w2aac37c25b9b5"></a>

 `package.json` 파일은 Node.js 프로젝트의 핵심 구성 요소입니다. 설치된 패키지에 대한 메타데이터가 포함되어 있습니다. Amazon Inspector SBOM 생성기는 이 파일을 스캔하여 패키지 이름과 패키지 버전을 식별합니다.

**주요 기능**
+  JSON 파일 구조를 구문 분석하여 패키지 이름 및 버전 추출 
+  프라이빗 값이 있는 프라이빗 패키지를 식별합니다.

**예시 `package.json` 파일**  
 다음은 `package.json`파일의 예제입니다.

```
{
"name": "arrify",
"private": true,
"version": "2.0.1",
"description": "Convert a value to an array",
"license": "MIT",
"repository": "sindresorhus/arrify"
}
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### package-lock.json
<a name="w2aac37c25b9b7"></a>

 `package-lock.json` 파일은 프로젝트에 설치된 종속성의 정확한 버전을 잠그기 위해 npm에 의해 자동으로 생성됩니다. 모든 종속성과 하위 종속성의 정확한 버전을 저장하여 환경에서 일관성을 보장합니다. 이 파일은 정규 종속성과 개발 종속성을 구별할 수 있습니다.

**주요 기능**
+  JSON 파일 구조를 구문 분석하여 패키지 이름 및 패키지 버전을 추출합니다.
+  개발 종속성 감지 지원 

**예시 `package-lock.json` 파일**  
 다음은 `package-lock.json`파일의 예제입니다.

```
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"requires": {
    "assert-plus": "^1.0.0",
    "core-util-is": "1.0.2",
    "extsprintf": "^1.2.0"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"yallist": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
"integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k="
}
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### npm-shrinkwrap.json
<a name="w2aac37c25b9b9"></a>

 npm은 프로젝트에 설치된 종속성의 정확한 버전을 잠그기 위해 `package-lock.json` 및 `npm-shrinkwrap.json` 파일을 자동으로 생성합니다. 이렇게 하면 모든 종속성 및 하위 종속성의 정확한 버전을 저장하여 환경의 일관성을 보장할 수 있습니다. 파일은 정규 종속성과 개발 종속성을 구분합니다.

**주요 기능**
+  JSON 파일 구조의 `package-lock` 버전 1, 2 및 3을 구문 분석하여 패키지 이름 및 버전 추출 
+  개발자 종속성 감지가 지원됨(`package-lock.json`은 프로덕션 및 개발 종속성을 캡처하므로 도구가 개발 환경에서 사용되는 패키지를 식별할 수 있음) 
+  `npm-shrinkwrap.json` 파일이 `package-lock.json` 파일보다 우선함 

**예제**  
 다음은 `package-lock.json`파일의 예제입니다.

```
"verror": {
            "version": "1.10.0",
            "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
            "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
            "requires": {
                "assert-plus": "^1.0.0",
                "core-util-is": "1.0.2",
                "extsprintf": "^1.2.0"
            }
        },
        "wrappy": {
            "version": "1.0.2",
            "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
            "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
            "dev": true
        },
        "yallist": {
            "version": "3.0.2",
            "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
            "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k="
}
```

### pnpm-yaml.lock
<a name="w2aac37c25b9c11"></a>

 `pnpm-lock.yaml` 파일은 설치된 종속성 버전의 레코드를 유지하기 위해 pnpm에 의해 생성됩니다. 또한 개발 종속성을 별도로 추적합니다.

**주요 기능**
+  YAML 파일 구조를 구문 분석하여 패키지 이름 및 버전 추출 
+  개발 종속성 감지 지원 

**예제**  
 다음은 `pnpm-lock.yaml`파일의 예제입니다.

```
lockfileVersion: 5.3
importers:
my-project:
dependencies:
  lodash: 4.17.21
devDependencies:
  jest: 26.6.3
specifiers:
  lodash: ^4.17.21
  jest: ^26.6.3
packages:
/lodash/4.17.21:
resolution:
  integrity: sha512-xyz
engines:
  node: '>=6'
dev: false
/jest/26.6.3:
resolution:
  integrity: sha512-xyz
dev: true
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### yarn.lock
<a name="w2aac37c25b9c13"></a>

 Amazon Inspector SBOM 생성기는 컴파일된 Java 아티팩트의 무결성과 추적성을 보장하기 위해 프로젝트의 `.ear`, `.jar` 및 `.war` 파일에 대한 SHA–1 해시를 수집하려고 합니다.

**주요 기능**
+  모든 컴파일된 Java 아티팩트에 대해 SHA–1 해시를 생성합니다.

**예제 SHA–1 아티팩트**  
 다음은 SHA–1 아티팩트의 예입니다.

```
"@ampproject/remapping@npm:^2.2.0":
version: 2.2.0
resolution: "@ampproject/remapping@npm:2.2.0"
dependencies:
"@jridgewell/gen-mapping": ^0.1.0
"@jridgewell/trace-mapping": ^0.3.9
checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292
languageName: node
linkType: hard

"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.21.4":
version: 7.21.4
resolution: "@babel/code-frame@npm:7.21.4"
dependencies:
"@babel/highlight": ^7.18.6
checksum: e5390e6ec1ac58dcef01d4f18eaf1fd2f1325528661ff6d4a5de8979588b9f5a8e852a54a91b923846f7a5c681b217f0a45c2524eb9560553160cd963b7d592c
languageName: node
linkType: hard
```

**참고**  
 이 아티팩트는 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

## .NET 종속성 스캔
<a name="w2aac37c25c11"></a>


| 프로그래밍 언어 | 패키지 관리자 | 지원되는 아티팩트 | 도구 체인 지원 | 개발 종속성 | 전이적 종속성 | 프라이빗 플래그 | 재귀적 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| .NET | `.NET Core`<br />`Nuget`<br />`Nuget`<br />`.NET` | `*.deps.json`<br />`Packages.config`<br />`packages.lock.json`<br />`.csproj` | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음<br />예<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 예<br />예<br />예<br />예 | 

### Packages.config
<a name="w2aac37c25c11b5"></a>

 `Packages.config` 파일은 이전 버전의 Nuget에서 프로젝트 종속성을 관리하는 데 사용하는 XML 파일입니다. 여기에는 특정 버전을 포함하여 프로젝트에서 참조하는 모든 패키지가 나열됩니다.

**주요 기능**
+  XML 구조를 구문 분석하여 패키지 ID 및 버전 추출 

**예제**  
 다음은 `Packages.config`파일의 예제입니다.

```
<?xml version="1.0" encoding="utf-8"? >
<packages>
<package id="FluentAssertions" version="5.4.1" targetFramework="net461" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net461" />
<package id="SpecFlow" version="2.4.0" targetFramework="net461" />
<package id="SpecRun.Runner" version="1.8.0" targetFramework="net461" />
<package id="SpecRun.SpecFlow" version="1.8.0" targetFramework="net461" />
<package id="SpecRun.SpecFlow.2-4-0" version="1.8.0" targetFramework="net461" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
</packages>
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### \*.deps.json
<a name="w2aac37c25c11b7"></a>

 `*.deps.json` 파일은 .NET Core 프로젝트에서 생성되며 경로, 버전 및 런타임 종속성을 포함한 모든 종속성에 대한 자세한 정보를 포함합니다. 이 파일은 런타임에 올바른 버전의 종속성을 로드하는 데 필요한 정보가 있는지 확인합니다.

**주요 기능**
+ 포괄적인 종속성 세부 정보를 위해 JSON 구조를 구문 분석합니다.
+  `libraries` 목록에서 패키지 이름과 버전을 추출합니다.

**예시 `.deps.json` 파일**  
 다음은 `.deps.json`파일의 예제입니다.

```
{
"runtimeTarget": {
    "name": ".NETCoreApp,Version=v7.0",
    "signature": ""
},
"libraries": {
    "sample-Nuget/1.0.0": {
        "type": "project",
        "serviceable": false,
        "sha512": ""
    },
    "Microsoft.EntityFrameworkCore/7.0.5": {
        "type": "package",
        "serviceable": true,
        "sha512": "sha512-RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==",
        "path": "microsoft.entityframeworkcore/7.0.5",
        "hashPath": "microsoft.entityframeworkcore.7.0.5.nupkg.sha512"
    },
}
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### packages.lock.json
<a name="w2aac37c25c11b9"></a>

 `packages.lock.json` 파일은 최신 버전의 Nuget에서 .NET 프로젝트에 대한 종속성의 정확한 버전을 잠그는 데 사용되어 여러 환경에서 동일한 버전이 일관되게 사용되도록 합니다.

**주요 기능**
+ JSON 구조를 구문 분석하여 잠긴 종속성을 나열
+ 직접 종속성과 전이적 종속성 모두 지원
+ 패키지 이름 및 확인된 버전을 추출

**예시 `packages.lock.json` 파일**  
 다음은 `packages.lock.json`파일의 예제입니다.

```
{
"version": 1,
"dependencies": {
"net7.0": {
  "Microsoft.EntityFrameworkCore": {
    "type": "Direct",
    "requested": "[7.0.5, )",
    "resolved": "7.0.5",
    "contentHash": "RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==",
    "dependencies": {
      "Microsoft.EntityFrameworkCore.Abstractions": "7.0.5",
      "Microsoft.EntityFrameworkCore.Analyzers": "7.0.5",
      "Microsoft.Extensions.Caching.Memory": "7.0.0",
      "Microsoft.Extensions.DependencyInjection": "7.0.0",
      "Microsoft.Extensions.Logging": "7.0.0"
    }
  },
  "Newtonsoft.Json": {
    "type": "Direct",
    "requested": "[13.0.3, )",
    "resolved": "13.0.3",
    "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
  },
  "Microsoft.Extensions.Primitives": {
    "type": "Transitive",
    "resolved": "7.0.0",
    "contentHash": "um1KU5kxcRp3CNuI8o/GrZtD4AIOXDk+RLsytjZ9QPok3ttLUelLKpilVPuaFT3TFjOhSibUAso0odbOaCDj3Q=="
  }
}
}
}
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### .csproj
<a name="w2aac37c25c11c11"></a>

 `.csproj` 파일은 XML 및 .NET 프로젝트의 프로젝트 파일로 작성됩니다. 여기에는 Nuget 패키지, 프로젝트 속성 및 빌드 구성에 대한 참조가 포함됩니다.

**주요 기능**
+  XML 구조를 구문 분석하여 패키지 참조를 추출합니다.

**예시 `.csproj` 파일**  
 다음은 `.csproj`파일의 예제입니다.

```
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<RootNamespace>sample_Nuget</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
</PropertyGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" />
</ItemGroup>
</Project>
```

**예시 `.csproj` 파일**  
 다음은 `.csproj`파일의 예제입니다.

```
<PackageReference Include="ExamplePackage" Version="6.*" />
<PackageReferencePackageReference Include="ExamplePackage" Version="(4.1.3,)" />
<PackageReference Include="ExamplePackage" Version="(,5.0)" />
<PackageReference Include="ExamplePackage" Version="[1,3)" />
<PackageReference Include="ExamplePackage" Version="[1.3.2,1.5)" />
```

**참고**  
 이러한 각 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

## PHP 종속성 스캔
<a name="w2aac37c25c13"></a>


| 프로그래밍 언어 | 패키지 관리자 | 지원되는 아티팩트 | 도구 체인 지원 | 개발 종속성 | 전이적 종속성 | 프라이빗 플래그 | 재귀적 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| PHP | Composer | `composer.lock`<br />`/vendor/composer/installed.json` | 해당 사항 없음<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음 | 예<br />예 | 해당 사항 없음<br />해당 사항 없음 | 예<br />예 | 

### composer.lock
<a name="w2aac37c25c13b5"></a>

 composer 설치 또는 composer 업데이트 명령을 실행할 때 `composer.lock` 파일이 자동으로 생성됩니다. 이 파일은 모든 환경에 동일한 버전의 종속성이 설치되도록 보장합니다. 이는 일관되고 신뢰할 수 있는 빌드 프로세스를 제공합니다.

**주요 기능**
+  구조화된 데이터에 대한 JSON 형식 구문 분석 
+  종속성 이름 및 버전 추출 

**예시 `composer.lock` 파일**  
 다음은 `composer.lock`파일의 예제입니다.

```
{
"packages": [
    {
        "name": "nesbot/carbon",
        "version": "2.53.1",
        // TRUNCATED
    },
    {
        "name": "symfony/deprecation-contracts",
        "version": "v3.2.1",
        // TRUNCATED
    },
    {
        "name": "symfony/polyfill-mbstring",
        "version": "v1.27.0",
        // TRUNCATED
    }
]
// TRUNCATED
}
```

**참고**  
 그러면 패키지 URL이 포함된 출력이 생성됩니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### /vendor/composer/installed.json
<a name="w2aac37c25c13b7"></a>

 `/vendor/composer/installed.json` 파일은 `vendor/composer` 디렉터리에 있으며 설치된 모든 패키지 및 패키지 버전의 포괄적인 목록을 제공합니다.

**주요 기능**
+  구조화된 데이터에 대한 JSON 형식 구문 분석 
+  종속성 이름 및 버전 추출 

**예시 `/vendor/composer/installed.json` 파일**  
 다음은 `/vendor/composer/installed.json`파일의 예제입니다.

```
 
{
"packages": [
    {
        "name": "nesbot/carbon",
        "version": "2.53.1",
        // TRUNCATED
    },
    {
        "name": "symfony/deprecation-contracts",
        "version": "v3.2.1",
        // TRUNCATED
    },
    {
        "name": "symfony/polyfill-mbstring",
        "version": "v1.27.0",
        // TRUNCATED
    }
]
// TRUNCATED
}
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

## Python 종속성 스캔
<a name="w2aac37c25c15"></a>


| 프로그래밍 언어 | 패키지 관리자 | 지원되는 아티팩트 | 도구 체인 지원 | 개발 종속성 | 전이적 종속성 | 프라이빗 플래그 | 재귀적 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Python | `pip`<br />`Poetry`<br />`Pipenv`<br />`uv`<br />`Egg/Wheel` | `requirements.txt`<br />`Poetry.lock`<br />`Pipfile.lock`<br />`uv.lock`<br />`.egg-info/PKG-INFO`<br />`.dist-info/METADATA` | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />예<br />해당 사항 없음<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 예<br />예<br />예<br />예<br />예<br />예 | 

### requirements.txt
<a name="w2aac37c25c15b5"></a>

 `requirements.txt` 파일은 Python 프로젝트에서 프로젝트 종속성을 지정하는 데 널리 사용되는 형식입니다. 이 파일의 각 줄에는 버전 제약 조건이 있는 패키지가 포함되어 있습니다. Amazon Inspector SBOM 생성기는 이 파일을 구문 분석하여 종속성을 정확하게 식별하고 카탈로그화합니다.

**주요 기능**
+  버전 지정자(== 및 "=) 지원 
+  설명 및 복잡한 종속성 라인 지원 

**참고**  
 버전 지정자 <= 및 =>는 지원되지 않습니다.

**예시 `requirements.txt` 파일**  
 다음은 `requirements.txt`파일의 예제입니다.

```
flask==1.1.2
requests==2.24.0
numpy==1.18.5
foo~=1.2.0
# Comment about a dependency
scipy. # invalid
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### Pipfile.lock
<a name="w2aac37c25c15b9"></a>

 Pipenv는 모든 패키징 환경(번들, 고정, 고정 해제)의 장점을 모두 제공하는 도구입니다. `Pipfile.lock`은 정확한 버전의 종속성을 잠가 결정적 빌드를 용이하게 합니다. Amazon Inspector SBOM 생성기는 이 파일을 읽어 종속성과 확인된 버전을 나열합니다.

**주요 기능**
+  종속성 확인을 위해 JSON 형식 구문 분석 
+  기본 및 개발 종속성 지원 

**예시 `Pipfile.lock` 파일**  
 다음은 `Pipfile.lock`파일의 예제입니다.

```
{
"default": {
    "requests": {
        "version": "==2.24.0",
        "hashes": [
            "sha256:cc718bb187e53b8d"
        ]
    }
},
"develop": {
    "blinker": {
        "hashes": [
            "sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01",
            "sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83"
        ],
        "markers": "python_version >= '3.8'",
        "version": "==1.8.2"
    }
}
}
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### Poetry.lock
<a name="w2aac37c25c15c11"></a>

 Poetry는 Python의 종속성 관리 및 패키징 도구입니다. `Poetry.lock` 파일은 정확한 버전의 종속성을 잠가 일관된 환경을 용이하게 합니다. Amazon Inspector SBOM 생성기는 이 파일에서 자세한 종속성 정보를 추출합니다.

**주요 기능**
+  구조화된 데이터에 대한 TOML 형식 구문 분석 
+  종속성 이름 및 버전 추출 

**예시 `Poetry.lock` 파일**  
 다음은 `Poetry.lock`파일의 예제입니다.

```
[[package]]
name = "flask"
version = "1.1.2"
description = "A simple framework for building complex web applications."
category = "main"
optional = false
python-versions = ">=3.5"
[[package]]
name = "requests"
version = "2.24.0"
description = "Python HTTP for Humans."
category = "main"
optional = false
python-versions = ">=3.5"
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### uv.lock
<a name="w2aac37c25c15c13"></a>

 uv는에 작성된 빠른 Python 패키지 관리자입니다Rust. `uv.lock` 파일은 정확한 버전의 종속성을 잠가 일관된 환경을 용이하게 합니다. Amazon Inspector SBOM 생성기는 이 파일에서 자세한 종속성 정보를 추출합니다.

**주요 기능**
+  구조화된 데이터에 `uv.lock` 대해 형식이 지정된 TOML을 구문 분석합니다.
+  종속성 이름 및 버전 추출 
+  개발 종속성 지원 
+  소스가 레지스트리인 패키지만 수집합니다.

**예시 `uv.lock` 파일**  
 다음은 `uv.lock`파일의 예제입니다.

```
version = 1
requires-python = ">=3.12"

[[package]]
name = "flask"
version = "3.1.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
    { name = "blinker" },
    { name = "click" },
    { name = "itsdangerous" },
    { name = "jinja2" },
    { name = "markupsafe" },
    { name = "werkzeug" },
]

[[package]]
name = "pytest"
version = "8.3.4"
source = { registry = "https://pypi.org/simple" }
dependencies = [
    { name = "iniconfig" },
    { name = "packaging" },
    { name = "pluggy" },
]

[package.dev-dependencies]
dev = [
    { name = "pytest" },
]
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### 에그/휠
<a name="w2aac37c25c15c15"></a>

 전 세계에 설치된 Python 패키지의 경우 Amazon Inspector SBOM 생성기는 `.egg-info/PKG-INFO` 및 `.dist-info/METADATA` 디렉터리에 있는 메타데이터 파일 구문 분석을 지원합니다. 이러한 파일은 설치된 패키지에 대한 자세한 메타데이터를 제공합니다.

**주요 기능**
+  패키지 이름 및 버전 추출 
+  에그 및 휠 형식 모두 지원 

**확장된 기본 스캔 경로(Sbomgen 1.13.0 이상)**  
 Amazon Inspector SBOM 생성기 릴리스 1.13.0 이상에서는 사용자 수준 `pip` 설치(`pip install --user`) 및 `uv tool install` 명령으로 생성된 설치를 포함하도록 스캐너의 기본 로컬 호스트 스캔 경로가 확장되었습니다. 이렇게 하면 권장 설치 방법이 인 CrewAI와 같은 프레임워크를 `site-packages`포함하여 시스템 전체 외부에 설치된 Python 패키지를 감지할 수 있습니다`uv tool install crewai`.  
 기본 스캔 경로가 추가되었습니다.  
 Linux – `/home/*/.local/lib/python*/site-packages/`, `/home/*/.local/share/uv/tools/*/lib/python*/site-packages/` (루트로 실행되는 컨테이너에 `/root/` 해당).
 Windows – `%APPDATA%\Python\Python*\Lib\site-packages\`, `%LOCALAPPDATA%\uv\tools\*\Lib\site-packages\`. 
 플랫폼에 기본이 아닌 Python 설치 접두사의 경우 `--path` 인수를 사용하여 스캐너가 설치 위치를 가리키도록 합니다.

**예시 `PKG-INFO/METADATA` 파일**  
 다음은 `PKG-INFO/METADATA`파일의 예제입니다.

```
Metadata-Version: 1.2
Name: Flask
Version: 1.1.2
Summary: A simple framework for building complex web applications.
Home-page: https://palletsprojects.com/p/flask/
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

## Ruby 종속성 스캔
<a name="w2aac37c25c17"></a>


| 프로그래밍 언어 | 패키지 관리자 | 지원되는 아티팩트 | 도구 체인 지원 | 개발 종속성 | 전이적 종속성 | 프라이빗 플래그 | 재귀적 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Ruby | Bundler | `Gemfile.lock`<br />`.gemspec`<br />`globall installed Gems` | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 예<br />해당 사항 없음<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 예<br />예<br />예 | 

### Gemfile.lock
<a name="w2aac37c25c17b5"></a>

 `Gemfile.lock` 파일은 모든 종속성의 정확한 버전을 잠가 모든 환경에서 동일한 버전이 사용되는지 확인합니다.

**주요 기능**
+  ID 종속성 및 종속성 버전에 `Gemfile.lock` 파일을 구문 분석 
+  세부 패키지 이름 및 패키지 버전 추출 

**예시 `Gemfile.lock` 파일**  
 다음은 `Gemfile.lock`파일의 예제입니다.

```
GEM
remote: https://rubygems.org/
specs:
ast (2.4.2)
awesome_print (1.9.2)
diff-lcs (1.5.0)
json (2.6.3)
parallel (1.22.1)
parser (3.2.2.0)
nokogiri (1.16.6-aarch64-linux)
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### .gemspec
<a name="w2aac37c25c17b7"></a>

 `.gemspec` 파일은 gem에 대한 메타데이터가 포함된 RubyGem 파일입니다. Amazon Inspector SBOM 생성기는 이 파일을 구문 분석하여 gem에 대한 자세한 정보를 수집합니다.

**주요 기능**
+  gem 이름 및 gem 버전을 구문 분석하고 추출 

**참고**  
 참조 사양은 지원되지 않습니다.

**예시 `.gemspec` 파일**  
 다음은 `.gemspec`파일의 예제입니다.

```
Gem::Specification.new do |s|
s.name        = "generategem"
s.version     = "2.0.0"
s.date        = "2020-06-12"
s.summary     = "generategem"
s.description = "A Gemspec Builder"
s.email       = "edersondeveloper@gmail.com"
s.files       = ["lib/generategem.rb"]
s.homepage    = "https://github.com/edersonferreira/generategem"
s.license     = "MIT"
s.executables = ["generategem"]
s.add_dependency('colorize', '~> 0.8.1')
end
```

```
# Not supported 

Gem::Specification.new do |s|
s.name        = &class1
s.version     = &foo.bar.version
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### 전역적으로 설치된 gem
<a name="w2aac37c25c17b9"></a>

 Amazon Inspector SBOM 생성기는 Amazon EC2/Amazon ECR의 `/usr/local/lib/ruby/gems/<ruby_version>/gems/` 및 Lambda의 `ruby/gems/<ruby_version>/gems/`와 같은 표준 디렉터리에 있는 전역적으로 설치된 gem 스캔을 지원합니다. 이렇게 하면 전역적으로 설치된 모든 종속성을 식별하고 카탈로그화할 수 있습니다.

**주요 기능**
+  표준 디렉터리에서 전역적으로 설치된 모든 gem을 식별하고 스캔합니다.
+  전역적으로 설치된 각 gem에 대한 메타데이터 및 버전 정보를 추출 

**디렉터리 구조 예제**  
 다음은 디렉터리 구조의 예제입니다.

```
. 
└── /usr/local/lib/ruby/3.5.0/gems/ 
├── actrivesupport-6.1.4 
├── concurrent-ruby-1.1.9 
└── i18n-1.8.10
```

**참고**  
 이 구조는 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

## Rust 종속성 스캔
<a name="w2aac37c25c19"></a>


| 프로그래밍 언어 | 패키지 관리자 | 지원되는 아티팩트 | 도구 체인 지원 | 개발 종속성 | 전이적 종속성 | 프라이빗 플래그 | 재귀적 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Rust | Cargo.toml | `Cargo.toml`<br />`Cargo.lock`<br /> `Rust binary (built with cargo-auditable)` | 해당 사항 없음<br />해당 사항 없음<br />예 | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 해당 사항 없음<br />예<br />해당 사항 없음 | 해당 사항 없음<br />해당 사항 없음<br />해당 사항 없음 | 예<br />예<br />예 | 

### Cargo.toml
<a name="w2aac37c25c19b5"></a>

 `Cargo.toml` 파일은 Rust 프로젝트의 매니페스트 파일입니다.

**주요 기능**
+  `Cargo.toml` 파일을 구문 분석하고 추출하여 프로젝트 패키지 이름과 버전을 식별합니다.

**예시 `Cargo.toml` 파일**  
 다음은 `Cargo.toml`파일의 예제입니다.

```
[package]
name = "wait-timeout"
version = "0.2.0"
description = "A crate to wait on a child process with a timeout specified across Unix and\nWindows platforms.\n"
homepage = "https://github.com/alexcrichton/wait-timeout"
documentation = "https://docs.rs/wait-timeout"
readme = "README.md"
categories = ["os"]
license = "MIT/Apache-2.0"
repository = "https://github.com/alexcrichton/wait-timeout"
[target."cfg(unix)".dependencies.libc]
version = "0.2"
[badges.appveyor]
repository = "alexcrichton/wait-timeout"
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### Cargo.lock
<a name="w2aac37c25c19b7"></a>

 `Cargo.lock` 파일은 종속성 버전을 잠가 프로젝트가 빌드될 때마다 동일한 버전이 사용되도록 합니다.

**주요 기능**
+  `Cargo.lock` 파일을 구문 분석하여 모든 종속성 및 종속성 버전을 식별합니다.

**예시 `Cargo.lock` 파일**  
 다음은 `Cargo.lock`파일의 예제입니다.

```
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "adler32"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"

[[package]]
name = "aho-corasick"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
```

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

### cargo 감사 가능한 Rust 바이너리
<a name="w2aac37c25c19b9"></a>

 Amazon Inspector SBOM 생성기는 `cargo-auditable` 라이브러리로 빌드된 Rust 바이너리에서 종속성을 수집합니다. 이렇게 하면 컴파일된 바이너리에서 종속성 추출을 활성화하여 추가 종속성 정보를 제공합니다.

**주요 기능**
+  `cargo-auditable` 라이브러리로 빌드된 Rust 바이너리에서 직접 종속성 정보를 추출합니다.
+  바이너리에 포함된 종속성에 대한 메타데이터 및 버전 정보를 검색합니다.

**참고**  
 이 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

## Swift 종속성 스캔
<a name="w2aac37c25c21"></a>


| 프로그래밍 언어 | 패키지 관리자 | 지원되는 아티팩트 | 도구 체인 지원 | 개발 종속성 | 전이적 종속성 | 프라이빗 플래그 | 재귀적 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Swift | Swift Package Manager | `Package.resolved (v1, v2, and v3)` | 해당 사항 없음 | 해당 사항 없음 | 해당 사항 없음 | 해당 사항 없음 | 예 | 

### Package.resolved
<a name="w2aac37c25c21b5"></a>

 `Package.resolved` 파일은 Swift 프로젝트에 대한 종속성의 정확한 버전을 잠그기 위해 Swift Package Manager에서 생성됩니다. Amazon Inspector SBOM 생성기는이 파일을 구문 분석하여 종속성 이름, 버전 및 소스 리포지토리 정보를 수집합니다. `Package.resolved` 형식의 스키마 버전 1, 2 및 3이 지원됩니다.

**참고**  
 Amazon Inspector SBOM 생성기는 `Package.resolved` 파일을 생성하지 않습니다. 프로젝트에 파일이 아직 포함되어 있지 않은 경우 프로젝트 디렉터리`swift package resolve`에서를 실행하여 스캔하기 전에 `Package.resolved` 파일을 생성해야 합니다.

**지원되는 아티팩트**
+  `Package.resolved` (스키마 버전 1) 
+  `Package.resolved` (스키마 버전 2) 
+  `Package.resolved` (스키마 버전 3) 

**주요 기능**
+  고정된 패키지에서 종속성 이름 및 잠긴 버전을 추출합니다.
+  소스 리포지토리 URL에서 패키지 네임스페이스를 파생합니다(예: `github.com/Alamofire`).
+  확인된 버전이 없는 브랜치 전용 핀 건너뛰기 
+  로컬 소스 제어 및 파일 시스템 종속성을 필터링합니다.
+  Swift Package Manager 빌드 캐시에서 종속성이 수집되지 않도록 `.build/` 디렉터리 내의 `Package.resolved` 파일을 제외합니다.

**참고**  
 `Package.resolved` 파일은 플랫폼과 독립적입니다. Amazon Inspector SBOM 생성기는 Linux, macOS및에서이 파일을 반복적으로 검색합니다Windows.

**예제 `Package.resolved` 파일(v2)**  
 다음은 버전 2 `Package.resolved` 파일의 예입니다.

```
{
  "pins" : [
    {
      "identity" : "alamofire",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/Alamofire/Alamofire.git",
      "state" : {
        "revision" : "a1b2c3...",
        "version" : "5.8.1"
      }
    },
    {
      "identity" : "swift-argument-parser",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/apple/swift-argument-parser.git",
      "state" : {
        "revision" : "d4e5f6...",
        "version" : "1.3.0"
      }
    }
  ],
  "version" : 2
}
```

**예제 `Package.resolved` 파일(v1)**  
 다음은 버전 1 `Package.resolved` 파일의 예입니다.

```
{
  "object": {
    "pins": [
      {
        "package": "Alamofire",
        "repositoryURL": "https://github.com/Alamofire/Alamofire.git",
        "state": {
          "branch": null,
          "revision": "a1b2c3...",
          "version": "5.8.1"
        }
      }
    ]
  },
  "version": 1
}
```

**예제 PURL**  
 다음은 Package Manager 종속성에 대한 Swift 패키지 URL의 예입니다.

```
pkg:swift/github.com/Alamofire/Alamofire@5.8.1
```

**참고**  
 이러한 각 파일은 패키지 URL이 포함된 출력을 생성합니다. 이 URL은 소프트웨어 재료표를 생성할 때 소프트웨어 패키지에 대한 정보를 지정하는 데 사용할 수 있으며 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html) API에 포함될 수 있습니다. 자세한 내용은 GitHub 웹 사이트의 [package-url](https://github.com/package-url/purl-spec) 섹션을 참조하세요.

## 지원되지 않는 아티팩트
<a name="w2aac37c25c23"></a>

 이 섹션에서는 지원되지 않는 아티팩트에 대해 설명합니다.

### Java
<a name="w2aac37c25c23b5"></a>

 Amazon Inspector SBOM 생성기는 [메인스트림 Maven 리포지토리](https://repo1.maven.org/maven2)에서 가져온 종속성에 대한 취약성 감지만 지원합니다. Red Hat Maven 및 Jenkins와 같은 프라이빗 또는 사용자 지정 Maven 리포지토리는 지원되지 않습니다. 취약성을 정확하게 감지하려면 Java 종속성을 메인스트림 Maven 리포지토리에서 가져와야 합니다. 다른 리포지토리의 종속성은 취약성 스캔에서 다루지 않습니다.

### JavaScript
<a name="w2aac37c25c23b7"></a>

**esbuild 번들**  
 esbuild 축소된 번들의 경우 Amazon Inspector SBOM 생성기는 esbuild를 사용하는 프로젝트에 대한 종속성 스캔을 지원하지 않습니다. esbuild에서 생성된 소스 맵에는 정확한 Sbomgen 생성에 필요한 충분한 메타데이터(종속성 이름 및 버전)가 포함되어 있지 않습니다. 안정적인 결과를 얻으려면 번들링 프로세스 전에 `node_modules/directory` 및 `package-lock.json`과 같은 원본 프로젝트 파일을 스캔합니다.

**package.json**  
 Amazon Inspector SBOM 생성기는 루트 수준 package.json 파일의 종속성 정보 스캔을 지원하지 않습니다. 이 파일은 패키지 이름 및 버전 범위만 지정하지만 완전히 확인된 패키지 버전은 포함하지 않습니다. 정확한 스캔 결과를 얻으려면 해결된 버전이 포함된 `package.json` 또는 `yarn.lock` 또는 `pnpm.lock` 같은 기타 잠금 파일을 사용합니다.

### Dotnet
<a name="w2aac37c25c23b9"></a>

 `PackageReference`에서 부동 버전 또는 버전 범위를 사용하는 경우 패키지 확인을 수행하지 않고 프로젝트에 사용되는 정확한 패키지 버전을 확인하는 것이 더 어려워집니다. 유동 버전 및 버전 범위를 통해 개발자는 고정 버전 대신 허용 가능한 패키지 버전 범위를 지정할 수 있습니다.

### Go 바이너리
<a name="w2aac37c25c23c11"></a>

 Amazon Inspector SBOM 생성기는 빌드 ID를 제외하도록 구성된 빌드 플래그로 빌드된 Go 바이너리를 스캔하지 않습니다. 이러한 빌드 플래그는 Amazon Inspector SBOM 생성기가 바이너리를 원래 소스에 정확하게 매핑하지 못하도록 합니다. 패키지 정보를 추출할 수 없기 때문에 불분명한 Go 바이너리가 지원되지 않습니다. 정확한 종속성 스캔을 위해 Go 바이너리가 빌드 ID를 포함한 기본 설정으로 빌드되었는지 확인합니다.

### Rust 바이너리
<a name="w2aac37c25c23c13"></a>

 Amazon Inspector SBOM 생성기는 Rust 바이너리가 [cargo 감사 가능 라이브러리](https://github.com/rust-secure-code/cargo-auditable)를 사용하여 빌드된 경우에만 바이너리를 스캔합니다. 이 라이브러리를 사용하지 않는 Rust 바이너리에는 정확한 종속성 추출에 필요한 메타데이터가 없습니다. Amazon Inspector SBOM 생성기는 Rust 1.7.3부터 시작하지만 Linux 환경의 바이너리에 대해서만 컴파일된 Rust 도구 체인 버전을 추출합니다. 포괄적인 스캔을 위해 cargo 감사 가능을 사용하여 Linux에 Rust 바이너리를 구축합니다.

**참고**  
 Rust 도구 체인 버전이 추출되더라도 도구 체인 자체에 대한 취약성 감지는 지원되지 않습니다.