Amazon Inspector SBOM 產生器 - Amazon Inspector

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon Inspector SBOM 產生器

軟體物料清單 (SBOM) 是建置軟體所需的元件、程式庫和模組的正式結構清單。Amazon Inspector SBOM 產生器 (Sbomgen) 是產生 SBOM 的工具,可用於封存、容器映像、目錄、本機系統,以及編譯的 Go和 二進位檔。 Rust 會Sbomgen掃描包含已安裝套件相關資訊的檔案。當 Sbomgen找到相關檔案時,它會擷取套件名稱、版本和其他中繼資料。 Sbomgen 然後將套件中繼資料轉換為 CycloneDX SBOM。您可以使用 CycloneDX Sbomgen產生 SBOM 檔案或在 STDOUT 中產生 SBOM,並將 SBOMs傳送至 Amazon Inspector 進行漏洞偵測。您也可以使用 Sbomgen做為 CI/CD 整合的一部分,以自動掃描容器映像做為部署管道的一部分。

支援的套件類型

Sbomgen 收集下列套件類型的庫存:

  • Alpine APK

  • Debian/Ubuntu DPKG

  • Red Hat RPM

  • C#

  • Go

  • Java

  • Node.js

  • PHP

  • Python

  • Ruby

  • Rust

支援的容器映像組態檢查

Sbomgen 可以掃描獨立 Dockerfile,並從現有映像中建置歷史記錄,以解決安全問題。如需詳細資訊,請參閱 Amazon Inspector Dockerfile 檢查

安裝 Sbomgen

Sbomgen 僅適用於 Linux 作業系統。

如果您想要Sbomgen分析本機快取映像,您必須Docker安裝 。 Docker 不需要分析匯出為遠端容器登錄檔中託管.tar檔案或映像的映像。

Amazon Inspector 建議您Sbomgen從至少具有下列硬體規格的系統執行 :

  • 4x 核心 CPU

  • 8 GB RAM

安裝 Sbomgen
  1. 從適用於您架構的正確 URL 下載最新的 Sbomgen zip 檔案:

    Linux AMD64:https://https://amazon-inspector-sbomgen.s3.amazonaws.com/latest/linux/amd64/inspector-sbomgen.zip

    Linux ARM64:https://https://amazon-inspector-sbomgen.s3.amazonaws.com/latest/linux/arm64/inspector-sbomgen.zip

    或者,您可以下載舊版的 Amazon Inspector SBOM 產生器 zip 檔案

  2. 使用以下命令解壓縮下載:

    unzip inspector-sbomgen.zip

  3. 檢查擷取目錄中的下列檔案:

    • inspector-sbomgen – 這是您將執行以產生 SBOMs的工具。

    • README.txt – 這是使用 的文件Sbomgen。

    • LICENSE.txt – 此檔案包含 的軟體授權Sbomgen。

    • licenses – 此資料夾包含 使用的第三方套件的授權資訊Sbomgen。

    • checksums.txt – 此檔案提供Sbomgen工具的雜湊。

    • sbom.json – 這是 Sbomgen工具的 CycloneDX SBOM。

    • WhatsNew.txt – 此檔案包含摘要的變更日誌,因此您可以快速檢視Sbomgen版本之間的主要變更和改進。

  4. (選用) 使用以下命令驗證工具的真實性和完整性:

    sha256sum < inspector-sbomgen

    1. 將結果與checksums.txt檔案的內容進行比較。

  5. 使用下列命令授予工具可執行檔許可:

    chmod +x inspector-sbomgen

  6. 使用以下命令確認 Sbomgen 已成功安裝:

    ./inspector-sbomgen --version

    您應該會看到類似下列的輸出:

    Version: 1.X.X

使用 Sbomgen

本節說明使用 的不同方式Sbomgen。您可以透過Sbomgen內建範例進一步了解如何使用 。若要檢視這些範例,請執行 list-examples命令:

./inspector-sbomgen list-examples

產生容器映像的 SBOM 並輸出結果

您可以使用 Sbomgen 為容器映像產生 SBOMs,並將結果輸出至檔案。您可以使用 container子命令啟用此功能。

範例 命令

在下列程式碼片段中,您可以將 取代image:tag為映像的 ID,並將 output_path.json取代為您要儲存的輸出路徑。

# generate SBOM for container image ./inspector-sbomgen container --image image:tag -o output_path.json
注意

掃描時間和效能取決於影像大小,以及圖層數量的大小。較小的映像不僅改善Sbomgen效能,也減少潛在的攻擊面。較小的映像也會改善映像建置、下載和上傳時間。

Sbomgen 搭配 使用 時ScanSbom,Amazon Inspector Scan API 不會處理包含超過 2,000 個套件SBOMs。在此案例中,Amazon Inspector Scan API 會傳回 HTTP 400 回應。

如果映像包含大量媒體檔案或目錄,請考慮Sbomgen使用 --skip-files 引數將其排除。

從目錄和封存產生 SBOM

您可以使用 從目錄和封存Sbomgen產生 SBOMs。您可以使用 directoryarchive子命令來啟用此功能。當您想要從專案資料夾產生 SBOM,例如下載的 git 儲存庫時,Amazon Inspector 建議使用此功能。

範例命令 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

您可以使用 從編譯的 Rust Go和二進位檔Sbomgen產生 SBOMs。您可以透過 binary 子命令啟用此靈活性:

./inspector-sbomgen binary --path /path/to/your/binary

將 SBOM 傳送至 Amazon Inspector 以識別漏洞

除了產生 SBOM 之外,您還可以傳送 SBOM 以使用來自 Amazon Inspector Scan API 的單一命令進行掃描。Amazon Inspector 會在將問題清單傳回 之前,評估 SBOM 的內容是否有漏洞Sbomgen。根據您的輸入,問題清單可以顯示或寫入檔案。

注意

您必須具有具有 讀取許可 AWS 帳戶 的作用中 InspectorScan-ScanSbom,才能使用此功能。

若要啟用此功能,請將--scan-sbom引數傳遞至 Sbomgen CLI。您也可以將--scan-sbom引數傳遞至下列任何Sbomgen子命令:archivebinarycontainerdirectorylocalhost

注意

Amazon Inspector Scan API 不會處理超過 2,000 個套件SBOMs。在此案例中,Amazon Inspector Scan API 會傳回 HTTP 400 回應。

您可以使用下列 AWS CLI 引數,透過 AWS 設定檔或 IAM 角色向 Amazon Inspector 驗證身分:

--aws-profile profile --aws-region region --aws-iam-role-arn role_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-region your_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

  1. 驗證至您的容器登錄檔。例如,如果使用 Docker,您可以使用 Dockerlogin命令向登錄檔進行身分驗證:

  2. 驗證容器登錄檔之後,請在登錄檔中的容器映像Sbomgen上使用 。若要使用下列範例,請將 image:tag取代為要掃描的影像名稱:

./inspector-sbomgen container --image image:tag

使用非作用中方法進行驗證

對於此方法,請提供您的使用者名稱做為參數,並在需要時Sbomgen提示您輸入安全的密碼。

若要使用下列範例,請將 image:tag取代為您要掃描的映像名稱,並將 your_username 取代為可存取映像的使用者名稱:

./inspector-sbomgen container --image image:tag --username your_username

使用非互動式方法進行驗證

對於此方法,請將您的密碼或登錄檔字符存放在 .txt 檔案中。

注意

目前的使用者應只能讀取此檔案。檔案也應包含單行上的密碼或字符。

若要使用下列範例,請將 取代your_username為您的使用者名稱,password.txt將 取代為單行包含您的密碼或字符.txt的檔案,並將 image:tag取代為要掃描的影像名稱:

INSPECTOR_SBOMGEN_USERNAME=your_username \ INSPECTOR_SBOMGEN_PASSWORD=`cat password.txt` \ ./inspector-sbomgen container --image image:tag

來自 的範例輸出 Sbomgen

以下是使用 庫存之容器映像的 SBOM 範例Sbomgen。

{ "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" } ] } ] }