プログラミング言語の依存関係のコレクション - Amazon Inspector

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

プログラミング言語の依存関係のコレクション

Amazon Inspector SBOM Generator は、さまざまなプログラミング言語とフレームワークをサポートし、堅牢で詳細な依存関係のコレクションを構成します。SBOM を生成すると、ソフトウェアの構成を把握できるため、脆弱性を特定し、セキュリティ標準へのコンプライアンス準拠を維持できます。Amazon Inspector SBOM Generator は、次のプログラミング言語とファイル形式をサポートしています。

Go 依存関係スキャン

プログラミング言語 パッケージマネージャー サポートされているアーティファクト ツールチェーンのサポート 開発の依存関係 推移的な依存関係 プライベートフラグ 再帰的
Go Go

go.mod

go.sum

Go Binaries

GOMODCACHE

該当なし

該当なし

はい

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

はい

はい

あり

なし

go.mod/go.sum

go.mod および go.sum ファイルを使用して、Go プロジェクトの依存関係を定義およびロックします。Amazon Inspector SBOM Generator は、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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

Go バイナリ

Amazon Inspector SBOM Generator は、コンパイルされた Go バイナリから依存関係を抽出して、使用中のコードについて保証します。

注記

Amazon Inspector SBOM Generator は、公式の Go コンパイラを使用して構築された Go バイナリからのツールチェーンバージョンのキャプチャと評価をサポートしています。詳細については Go ウェブサイトの「Download and install」を参照してください。Red Hat などの別のベンダーの Go ツールチェーンを使用している場合、ディストリビューションとメタデータの可用性に潜在的な違いがあるため、評価が正確ではない可能性があります。

主な特徴
  • Go バイナリから直接依存関係情報を抽出します

  • バイナリ内に埋め込まれた依存関係を収集します

  • バイナリのコンパイルに使用される Go ツールチェーンバージョンを検出して抽出します。

GOMODCACHE

Amazon Inspector SBOM Generator は 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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

Java 依存関係スキャン

プログラミング言語 パッケージマネージャー サポートされているアーティファクト ツールチェーンのサポート 開発の依存関係 推移的な依存関係 プライベートフラグ 再帰的
Java Maven

コンパイルされた Java アプリケーション (.jar/.war/.ear)

pom.xml

該当なし

該当なし

該当なし

該当なし

はい

はい

該当なし

該当なし

はい

はい

注記

脆弱性評価機能は Maven Central リポジトリのみをサポートしています。JBoss Enterprise Maven Repository などのサードパーティーリポジトリは現在サポートされていません。

Amazon Inspector SBOM Generator は、コンパイルされた Java アプリケーションと pom.xml ファイルを分析して、Java 依存関係スキャンを実行します。コンパイルされたアプリケーションをスキャンすると、スキャナーは整合性検証用の SHA-1 ハッシュを生成し、埋め込まれた pom.properties ファイルを抽出して、ネストされた pom.xml ファイルを解析します。

SHA-1 ハッシュコレクション (コンパイルされた .jar、.war、.ear ファイル用)

Amazon Inspector SBOM Generator は、コンパイルされた 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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

pom.properties

pom.properties ファイルは、パッケージ名やパッケージバージョンなどのプロジェクトメタデータを保存するために Maven プロジェクトで使用されます。Amazon Inspector SBOM Generator は、このファイルを解析してプロジェクト情報を収集します。

主な特徴
  • パッケージアーティファクト、パッケージグループ、パッケージバージョンを解析して抽出します

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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

ネストされた pom.xml 解析の除外

コンパイルされた Java アプリケーションのスキャン時に pom.xml 解析を除外する場合は、 --skip-nested-pomxml 引数を使用します。

pom.xml

pom.xml ファイルは、Maven プロジェクトのコア設定ファイルです。これには、プロジェクトとプロジェクトの依存関係に関する情報が含まれています。Amazon Inspector SBOM Generator は pom.xml ファイルを解析して依存関係を収集し、リポジトリ内のスタンドアロンファイルとコンパイルされた .jar ファイル内のファイルをスキャンします。

主な特徴
  • pom.xml ファイルからパッケージアーティファクト、パッケージグループ、パッケージバージョンを解析して抽出します。

サポートされている Maven スコープとタグ

依存関係は、次の Maven スコープで収集されます。

  • compile

  • 提供される

  • ランタイム

  • test

  • アタッチ

  • インポート

依存関係は、 <optional>true</optional> の Maven タグ で収集されます。

スコープのある 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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

JavaScript 依存関係スキャン

プログラミング言語 パッケージマネージャー サポートされているアーティファクト ツールチェーンのサポート 開発の依存関係 推移的な依存関係 プライベートフラグ 再帰的
Javascript

Node Modules

NPM

PNPM

YARN

node_modules/*/package.json

package-lock.json (v1, v2, and v3) / npm-shrinkwrap.json

pnpm-lock.yaml

yarn.lock

該当なし

該当なし

該当なし

該当なし

該当なし

はい

はい

はい

はい

該当なし

該当なし

該当なし

はい

該当なし

該当なし

該当なし

はい

なし

なし

いいえ

package.json

package.json ファイルは Node.js プロジェクトのコアコンポーネントです。これには、インストールされたパッケージに関するメタデータが含まれています。Amazon Inspector SBOM Generator はこのファイルをスキャンして、パッケージ名とパッケージバージョンを識別します。

主な特徴
  • 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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

package-lock.json

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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

npm-shrinkwrap.json

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

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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

yarn.lock

Amazon Inspector SBOM Generator は、コンパイルされた 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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

.NET 依存関係スキャン

プログラミング言語 パッケージマネージャー サポートされているアーティファクト ツールチェーンのサポート 開発の依存関係 推移的な依存関係 プライベートフラグ 再帰的
.NET

.NET Core

Nuget

Nuget

.NET

*.deps.json

Packages.config

packages.lock.json

.csproj

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

はい

該当なし

該当なし

該当なし

該当なし

該当なし

はい

はい

はい

はい

Packages.config

Packages.config ファイルは、プロジェクトの依存関係を管理するために Nuget の古いバージョンで使用される XML ファイルです。特定のバージョンを含む、プロジェクトによって参照されるすべてのパッケージが一覧表示されます。

主な特徴
  • XML 構造を解析してパッケージ IDsとバージョンを抽出します。

次は、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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

*.deps.json

*.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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

packages.lock.json

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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

.csproj

.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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

PHP 依存関係スキャン

プログラミング言語 パッケージマネージャー サポートされているアーティファクト ツールチェーンのサポート 開発の依存関係 推移的な依存関係 プライベートフラグ 再帰的
PHP Composer

composer.lock

/vendor/composer/installed.json

該当なし

該当なし

該当なし

該当なし

はい

はい

該当なし

該当なし

はい

はい

composer.lock

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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

/vendor/composer/installed.json

/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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

Python 依存関係スキャン

プログラミング言語 パッケージマネージャー サポートされているアーティファクト ツールチェーンのサポート 開発の依存関係 推移的な依存関係 プライベートフラグ 再帰的
Python

pip

Poetry

Pipenv

Egg/Wheel

requirements.txt

Poetry.lock

Pipfile.lock

.egg-info/PKG-INFO

.dist-info/METADATA

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

はい

はい

はい

はい

はい

requirements.txt

requirements.txt ファイルは、プロジェクトの依存関係を指定するために Python プロジェクトで広く使用されている形式です。このファイルの各行には、バージョン制約を含むパッケージが含まれています。Amazon Inspector SBOM Generator はこのファイルを解析して、依存関係を正確に識別およびカタログ化します。

主な特徴
  • バージョン指定子をサポートします (== および ̃=)。

  • コメントと複雑な依存関係行をサポートします。

注記

バージョン指定子 <= および => はサポートされていません。

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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

Pipfile.lock

Pipenv は、すべてのパッケージング形式 (バンドル、ピン留め、ピン留めなし) を最大限に活用するツールです。Pipfile.lock は、正確なバージョンの依存関係をロックして、確定的なビルドを容易にします。Amazon Inspector SBOM Generator はこのファイルを読み取り、依存関係とその解決済みバージョンを一覧表示します。

主な特徴
  • 依存関係解決のための 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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

Poetry.lock

Poetry は、Python の依存関係管理およびパッケージングツールです。この Poetry.lock ファイルは、一貫した環境を実現するために、依存関係の正確なバージョンを固定します。Amazon Inspector SBOM Generator は、このファイルから詳細な依存関係情報を抽出します。

主な特徴
  • 構造化データの 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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

Egg/Wheel

グローバルにインストールされた Python パッケージの場合、Amazon Inspector SBOM Generator は .egg-info/PKG-INFOおよび .dist-info/METADATA ディレクトリにあるメタデータファイルの解析をサポートします。これらのファイルは、インストールされたパッケージに関する詳細なメタデータを提供します。

主な特徴
  • パッケージ名とバージョンを抽出します。

  • egg 形式と wheel 形式の両方をサポートします。

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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

Ruby 依存関係スキャン

プログラミング言語 パッケージマネージャー サポートされているアーティファクト ツールチェーンのサポート 開発の依存関係 推移的な依存関係 プライベートフラグ 再帰的
Ruby Bundler

Gemfile.lock

.gemspec

globall installed Gems

該当なし

該当なし

該当なし

該当なし

該当なし

該当なし

はい

該当なし

該当なし

該当なし

該当なし

該当なし

はい

はい

はい

Gemfile.lock

Gemfile.lock ファイルは、すべての依存関係の正確なバージョンを固定して、すべての環境で同じバージョンが使用されていることを保証します。

主な特徴
  • Gemfile.lock ファイルを解析し、ID 依存関係と依存関係バージョンを識別します。

  • 詳細なパッケージ名とパッケージバージョンを抽出します。

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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

.gemspec

.gemspec ファイルは、gem に関するメタデータを含む RubyGem ファイルです。Amazon Inspector SBOM Generator はこのファイルを解析して、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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

グローバルにインストールされた gem

Amazon Inspector SBOM Generator は、グローバルにインストールされた gem のスキャンをサポートしています。gem は、Amazon EC2/Amazon ECR の/usr/local/lib/ruby/gems/<ruby_version>/gems/ や Lambda の ruby/gems/<ruby_version>/gems/ などの標準ディレクトリにあります。これにより、グローバルにインストールされた依存関係がすべて識別され、カタログ化されます。

主な特徴
  • 標準ディレクトリにグローバルにインストールされているすべての 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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

Rust 依存関係スキャン

プログラミング言語 パッケージマネージャー サポートされているアーティファクト ツールチェーンのサポート 開発の依存関係 推移的な依存関係 プライベートフラグ 再帰的
Rust Cargo.toml

Cargo.toml

Cargo.lock

Rust binary (built with cargo-auditable)

該当なし

該当なし

はい

該当なし

該当なし

該当なし

該当なし

はい

該当なし

該当なし

該当なし

該当なし

はい

はい

はい

Cargo.toml

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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

Cargo.lock

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 API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

cargo-auditable を使用した Rust バイナリ

Amazon Inspector SBOM Generator は、cargo-auditable ライブラリで構築された Rust バイナリから依存関係を収集します。これにより、コンパイルされたバイナリから依存関係を抽出できるようにすることで、追加の依存関係情報を収集できます。

主な特徴
  • cargo-auditable ライブラリで構築された Rust バイナリから依存関係情報を直接抽出します。

  • バイナリに含まれる依存関係のメタデータとバージョン情報を取得します。

注記

このファイルは、パッケージ URL を含む出力を生成します。この URL を使用して、ソフトウェア部品表の生成時にソフトウェアパッケージに関する情報を指定し、ScanSbom API に含めることができます。詳細については、GitHub ウェブサイトの「package-url」を参照してください。

サポートされていないアーティファクト

このセクションでは、サポートされていないアーティファクトについて説明します。

Java

Amazon Inspector SBOM Generator ジェネレーターは、メインストリーム Maven リポジトリから取得された依存関係の脆弱性検出のみをサポートします。Red Hat Maven や Jenkins などのプライベートまたはカスタム Maven リポジトリはサポートされていません。脆弱性を正確に検出するには、Java 依存関係がメインストリーム Maven リポジトリからプルされるようにしてください。他のリポジトリからの依存関係は、脆弱性スキャンの対象にはなりません。

JavaScript

esbuild バンドル

esbuild の最小化されたバンドルの場合、Amazon Inspector SBOM Generator は esbuild を使用するプロジェクトの依存関係スキャンをサポートしていません。esbuild によって生成されたソースマップには、正確な Sbomgen の生成に必要な十分なメタデータ (依存関係名とバージョン) が含まれていません。信頼性の高い結果を得るには、バンドルプロセスの前に、 node_modules/directorypackage-lock.json などの元のプロジェクトファイルをスキャンしてください。

package.json

Amazon Inspector SBOM Generator は、ルートレベルの package.json ファイルに対する依存関係情報のスキャンをサポートしていません。このファイルはパッケージ名とバージョン範囲のみを指定しますが、完全に解決されたパッケージバージョンは含まれません。正確なスキャン結果を得るには、 package.json または解決済みバージョンを含む yarn.lockpnpm.lock などの他の固定ファイルを使用します。

Dotnet

PackageReference でフローティングバージョンまたはバージョン範囲を使用する場合、パッケージ解決を実行せずにプロジェクトで使用される正確なパッケージバージョンを特定することが難しくなります。フローティングバージョンとバージョン範囲を使用すると、開発者は固定のバージョンではなく、許容可能なパッケージバージョンの範囲を指定できます。

Go バイナリ

Amazon Inspector SBOM Generator は、ビルド ID Go を除外するように設定されたビルドフラグを使用して構築されたバイナリをスキャンしません。これらのビルドフラグにより、Amazon Inspector SBOM Generator はバイナリを元のソースに正確にマッピングできなくなります。パッケージ情報を抽出できないため、不明瞭な Go バイナリはサポートされていません。正確な依存関係スキャンを行うには、Go バイナリがビルド ID などのデフォルト設定で構築されていることを確認してください。

Rust バイナリ

Amazon Inspector SBOM Generator は、バイナリが cargo-auditable ライブラリを使用して構築されている場合にのみ Rust バイナリをスキャンします。このライブラリを利用していない Rust バイナリには、正確な依存関係抽出に必要なメタデータがありません。Amazon Inspector SBOM Generator は、Rust 1.7.3 以降でコンパイルされた Rust ツールチェーンバージョンを抽出しますが、Linux 環境内のバイナリに対してのみ抽出します。包括的なスキャンを行うには、 で、cargo-auditable を使用して Linux で Rust バイナリをビルドします。

注記

ツールチェーンのバージョンが抽出されていても、Rust ツールチェーン自体の脆弱性検出はサポートされていません。