翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Inspector SBOM Generator
Software Bill of Materials (SBOM) は、ソフトウェアの構築に必要なコンポーネント、ライブラリ、モジュールの完全な正式なリストです。
Amazon Inspector SBOM Generator (Sbomgen) は、アーカイブ、コンテナイメージ、ディレクトリ、ローカルシステム、コンパイル済みおよびバイナリ用のソフトウェア部品表 (SBOM) Go Rust を作成するツールです。
Sbomgen は、インストールされたパッケージに関する情報を含むファイルをスキャンします。が関連ファイルSbomgenを検出すると、パッケージ名、バージョン、およびその他のメタデータが抽出されます。Sbomgen次に、 はパッケージメタデータを CycloneDX SBOM に変換します。
をスタンドアロンツールSbomgenとして使用して、SBOM CycloneDX をファイルとして生成したり STDOUT に送信したり、脆弱性検出のために SBOMs を Amazon Inspector に送信したりできます。
を CI/CD 統合 Sbomgenの一部として使用することもできます。これにより、デプロイパイプラインの一部としてコンテナイメージが自動的にスキャンされます。
サポートされているパッケージタイプ
Sbomgen は、次のパッケージタイプのインベントリを収集します。
-
Alpine APK
-
Debian/Ubuntu DPKG
-
Red Hat RPM
-
C#
-
Go
-
Java
-
Node.js
-
PHP
-
Python
-
Ruby
-
Rust
サポートされているコンテナイメージ設定チェック
Sbomgen は、スタンドアロンの Dockerfiles をスキャンし、既存のイメージからビルド履歴をスキャンして、セキュリティ上の問題を検出できます。詳細については、Amazon Inspector Dockerfile チェック」を参照してください。
Sbomgen のインストール
Sbomgen は、Linux オペレーティングシステムでのみ利用できます。
ローカルにキャッシュされたイメージを分析する場合はSbomgen、 Dockerがインストールされている必要があります。 Dockerは、リモートコンテナレジストリでホストされている.tar
ファイルまたはイメージとしてエクスポートされたイメージを分析するためには必要ありません。
Amazon Inspector ではSbomgen、少なくとも以下のハードウェア仕様のシステムから を実行することをお勧めします。
-
4x Core CPU
-
8 GB RAM
Sbomgen をインストールするには
-
アーキテクチャの正しい URL から最新の Sbomgen zip ファイルをダウンロードします。
Linux AMD64: https://amazon-inspector-sbomgen.s3.amazonaws.com/latest/linux/amd64/inspector-sbomgen.zip
Linux ARM64: https://amazon-inspector-sbomgen.s3.amazonaws.com/latest/linux/arm64/inspector-sbomgen.zip
または、以前のバージョンの Amazon Inspector SBOM Generator zip ファイル をダウンロードすることもできます。
-
次のコマンドを使用して、ダウンロードした zip ファイルを解凍します。
unzip inspector-sbomgen.zip
-
抽出されたディレクトリで次のファイルを確認します。
-
inspector-sbomgen
– これは、SBOMs を生成するために実行するツールです。 -
README.txt
— Sbomgen の使用に関するドキュメントです。 -
LICENSE.txt
— このファイルには、Sbomgen のソフトウェアライセンスが含まれています。 -
licenses
— このフォルダには、Sbomgen が使用するサードパーティパッケージのライセンス情報が含まれています。 -
checksums.txt
– このファイルはSbomgenツールのハッシュを提供します。 -
sbom.json
- これはSbomgenツールの CycloneDX SBOM です。 -
WhatsNew.txt
– このファイルには、変更ログが要約されているため、Sbomgenバージョン間の主要な変更や改善をすばやく表示できます。
-
-
(オプション) 次のコマンドを使用して、ツールの信頼性と整合性を検証します。
sha256sum < inspector-sbomgen
-
結果を
checksums.txt
ファイルの内容と比較します。
-
-
次のコマンドを使用して、ツールに実行可能なアクセス許可を付与します。
chmod +x inspector-sbomgen
-
以下のコマンドを実行して、Sbomgen が正常にインストールされたことを確認します。
./inspector-sbomgen --version
次のような出力が表示されます。
Version: 1.X.X
Sbomgen の使用
このセクションでは、 を使用するさまざまな方法について説明しますSbomgen。の使用方法の詳細については、組み込みの例Sbomgenを参照してください。これらの例を表示するには、 list-examples
コマンドを実行します。
./inspector-sbomgen list-examples
コンテナイメージの SBOM を生成し、結果を出力する
Sbomgen を使用してコンテナイメージSBOMs を生成し、結果をファイルに出力できます。この機能は、 container
サブコマンドを使用して有効にできます。
コマンドの例
次のスニペットでは、 をイメージの ID
に、 を保存する出力へのパスoutput_path.json
に置き換えることができます。image:tag
# generate SBOM for container image ./inspector-sbomgen container
--image image:tag
-ooutput_path.json
注記
スキャン時間とパフォーマンスは、イメージサイズとレイヤーの数によって異なります。イメージを小さくするとSbomgenパフォーマンスが向上するだけでなく、潜在的なアタックサーフェスも減少します。イメージを小さくすると、イメージの構築、ダウンロード、アップロードの時間も短縮されます。
Sbomgen で を使用する場合ScanSbom
、Amazon Inspector スキャン API は 2,000 個を超えるパッケージを含む SBOMs を処理しません。このシナリオでは、Amazon Inspector スキャン API は HTTP 400 レスポンスを返します。
イメージにバルクメディアファイルまたはディレクトリが含まれている場合は、 --skip-files
引数Sbomgenの使用から除外することを検討してください。
ディレクトリとアーカイブから SBOM を生成する
を使用してSbomgen、ディレクトリとアーカイブから SBOMs を生成できます。この機能は、 directory
または archive
サブコマンドを使用して有効にできます。Amazon Inspector では、ダウンロードした git リポジトリなどのプロジェクトフォルダから SBOM を生成する場合、この機能を使用することをお勧めします。
コマンド例 1
次のスニペットは、ディレクトリファイルから SBOM を生成するサブコマンドを示しています。
# generate SBOM from directory ./inspector-sbomgen directory --path /path/to/dir -o /tmp/sbom.json
コマンド例 2
次のスニペットは、アーカイブファイルから SBOM を生成するサブコマンドを示しています。サポートされているアーカイブ形式は、.zip
、.tar
、および のみです.tar.gz
。
# generate SBOM from archive file (tar, tar.gz, and zip formats only) ./inspector-sbomgen archive --path testData.zip -o /tmp/sbom.json
Go またはRustコンパイルされたバイナリから SBOM を生成する
を使用してSbomgen、コンパイルされた Goとバイナリから SBOMs Rust を生成できます。この機能を有効にするには、 binary
サブコマンドを使用します。
./inspector-sbomgen binary --path /path/to/your/binary
脆弱性を特定するために Amazon Inspector に SBOM を送信する
SBOM の生成に加えて、Amazon Inspector スキャン API から 1 つのコマンドでスキャン用の SBOM を送信できます。Amazon Inspector は、検出結果を に返す前に、脆弱性がないか SBOM の内容を評価しますSbomgen。入力に応じて、結果を表示またはファイルに書き込むことができます。
注記
この機能InspectorScan:ScanSbom
を使用するには、 への読み取りアクセス許可 AWS アカウント を持つアクティブな が必要です。
この機能を有効にするには、 --scan-sbom
引数を CLI Sbomgen に渡します。引--scan-sbom
数は、、、archive
、binary
、 のいずれかのSbomgenサブコマンドに渡すこともできますcontainer
directory
localhost
。
注記
Amazon Inspector スキャン API は、2,000 個を超えるパッケージを含む SBOMs を処理しません。このシナリオでは、Amazon Inspector スキャン API は HTTP 400 レスポンスを返します。
AWS プロファイルまたは IAM ロールを使用して、次の AWS CLI 引数で Amazon Inspector を認証できます。
--aws-profile
profile
--aws-regionregion
--aws-iam-role-arnrole_arn
に次の環境変数を指定することで、Amazon Inspector を認証することもできますSbomgen。
AWS_ACCESS_KEY_ID=$access_key \ AWS_SECRET_ACCESS_KEY=$secret_key \ AWS_DEFAULT_REGION=$region \ ./inspector-sbomgen
arguments
レスポンス形式を指定するには、 --scan-sbom-output-format cyclonedx
引数または --scan-sbom-output-format inspector
引数を使用します。
コマンド例 1
このコマンドは、最新AlpineLinuxリリースの SBOM を作成し、SBOM をスキャンし、脆弱性結果を JSON ファイルに書き込みます。
./inspector-sbomgen container --image alpine:latest \ --scan-sbom \ --aws-profile
your_profile
\ --aws-regionyour_region
\ --scan-sbom-output-format cyclonedx \ --outfile /tmp/inspector_scan.json
コマンド例 2
このコマンドは、環境変数として AWS 認証情報を使用して Amazon Inspector を認証します。
AWS_ACCESS_KEY_ID=$your_access_key \ AWS_SECRET_ACCESS_KEY=$your_secret_key \ AWS_DEFAULT_REGION=$your_region \ ./inspector-sbomgen container --image alpine:latest \ -o /tmp/sbom.json \ --scan-sbom \ --scan-sbom-output-format inspector
コマンド例 3
このコマンドは、IAM ロールの ARN を使用して Amazon Inspector を認証します。
./inspector-sbomgen container --image alpine:latest \ --scan-sbom \ --aws-profile your_profile \ --aws-region your_region \ --outfile /tmp/inspector_scan.json --aws-iam-role-arn arn:aws:iam::123456789012:role/
your_role
スキャンをカスタマイズして特定のファイルを除外する
コンテナイメージを分析して処理する場合、 はそのコンテナイメージ内のすべてのファイルのサイズSbomgenをスキャンします。スキャンをカスタマイズして、特定のファイルを除外したり、特定のパッケージをターゲットにしたりできます。
ディスクの消費量、RAM の消費量、ランタイムの経過時間、指定されたしきい値を超えるスキップファイルを減らすには、 引--max-file-size
数を container
サブコマンドで使用します。
./inspector-sbomgen container --image alpine:latest \ --outfile /tmp/sbom.json \ --max-file-size 300000000
進行状況インジケータを無効にする
Sbomgen は、CI/CD 環境で過剰なスラッシュ文字が発生する可能性があるスピン進行状況インジケータを表示します。
INFO[2024-02-01 14:58:46]coreV1.go:53: analyzing artifact | \ / | \ / INFO[2024-02-01 14:58:46]coreV1.go:62: executing post-processors
--disable-progress-bar
議論を使用して進行状況インジケータを無効にすることができます。
./inspector-sbomgen container --image alpine:latest \ --outfile /tmp/sbom.json \ --disable-progress-bar
を使用したプライベートレジストリへの認証 Sbomgen
プライベートレジストリの認証情報を提供することで、プライベートレジストリでホストされているコンテナから SBOMs を生成できます。これらの認証情報は、次の方法で提供できます。
キャッシュされた認証情報を使用して認証する (推奨)
この方法では、コンテナレジストリに対して認証します。例えば、 を使用している場合Docker、 Docker ログ記録コマンド を使用してコンテナレジストリを認証できますdocker login
。
-
コンテナレジストリに対して認証します。例えば、 を使用している場合Docker、 Docker
login
コマンドを使用してレジストリを認証できます。 -
コンテナレジストリを認証したら、レジストリSbomgenにあるコンテナイメージで を使用します。以下の例を使用するには、
を、スキャンするイメージの名前に置き換えてください。image:tag
./inspector-sbomgen container --image
image:tag
非アクティブメソッドを使用した認証
この方法では、ユーザー名をパラメータとして指定し、必要に応じて安全なパスワードの入力を求めSbomgenられます。
次の例を使用するには、 をスキャンするイメージの名前
に置き換え、 をイメージにアクセスできるimage:tag
ユーザー名に置き換えます。your_username
./inspector-sbomgen container --image
image:tag
--usernameyour_username
非インタラクティブメソッドを使用した認証
この方法では、パスワードまたはレジストリトークンを .txt
ファイルに保存します。
注記
現在のユーザーは、このファイルのみを読み取ることができます。ファイルには、パスワードまたはトークンも 1 行に含めます。
次の例を使用するには、
をユーザー名your_username
に、 をパスワードまたはトークンを 1 行に含むpassword.txt
.txt
ファイルに、 をスキャンするイメージの名前
に置き換えます。image:tag
INSPECTOR_SBOMGEN_USERNAME=
your_username
\ INSPECTOR_SBOMGEN_PASSWORD=`catpassword.txt
` \ ./inspector-sbomgen container --imageimage:tag
Sbomgen からの出力例
Sbomgen を使用してインベントリが作成されたコンテナイメージの SBOM の例を以下に示します。
{ "bomFormat": "CycloneDX", "specVersion": "1.5", "serialNumber": "urn:uuid:828875ef-8c32-4777-b688-0af96f3cf619", "version": 1, "metadata": { "timestamp": "2023-11-17T21:36:38Z", "tools": [ { "vendor": "Amazon Web Services, Inc. (AWS)", "name": "Amazon Inspector SBOM Generator", "version": "1.0.0", "hashes": [ { "alg": "SHA-256", "content": "10ab669cfc99774786301a745165b5957c92ed9562d19972fbf344d4393b5eb1" } ] } ], "component": { "bom-ref": "comp-1", "type": "container", "name": "fedora:latest", "properties": [ { "name": "amazon:inspector:sbom_generator:image_id", "value": "sha256:c81c8ae4dda7dedc0711daefe4076d33a88a69a28c398688090c1141eff17e50" }, { "name": "amazon:inspector:sbom_generator:layer_diff_id", "value": "sha256:eddd0d48c295dc168d0710f70364581bd84b1dda6bb386c4a4de0b61de2f2119" } ] } }, "components": [ { "bom-ref": "comp-2", "type": "library", "name": "dnf", "version": "4.18.0", "purl": "pkg:pypi/dnf@4.18.0", "properties": [ { "name": "amazon:inspector:sbom_generator:source_file_scanner", "value": "python-pkg" }, { "name": "amazon:inspector:sbom_generator:source_package_collector", "value": "python-pkg" }, { "name": "amazon:inspector:sbom_generator:source_path", "value": "/usr/lib/python3.12/site-packages/dnf-4.18.0.dist-info/METADATA" }, { "name": "amazon:inspector:sbom_generator:is_duplicate_package", "value": "true" }, { "name": "amazon:inspector:sbom_generator:duplicate_purl", "value": "pkg:rpm/fedora/python3-dnf@4.18.0-2.fc39?arch=noarch&distro=39&epoch=0" } ] }, { "bom-ref": "comp-3", "type": "library", "name": "libcomps", "version": "0.1.20", "purl": "pkg:pypi/libcomps@0.1.20", "properties": [ { "name": "amazon:inspector:sbom_generator:source_file_scanner", "value": "python-pkg" }, { "name": "amazon:inspector:sbom_generator:source_package_collector", "value": "python-pkg" }, { "name": "amazon:inspector:sbom_generator:source_path", "value": "/usr/lib64/python3.12/site-packages/libcomps-0.1.20-py3.12.egg-info/PKG-INFO" }, { "name": "amazon:inspector:sbom_generator:is_duplicate_package", "value": "true" }, { "name": "amazon:inspector:sbom_generator:duplicate_purl", "value": "pkg:rpm/fedora/python3-libcomps@0.1.20-1.fc39?arch=x86_64&distro=39&epoch=0" } ] } ] }