Amazon Inspector SBOM 生成 - Amazon Inspector

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

Amazon Inspector SBOM 生成

軟體材料清單 (SBOM) 是建置軟體所需的元件、程式庫和模組的正式結構清單。Amazon Inspector 產生SBOM器 (Sbomgen) 是一種工具,可SBOM為存檔、容器映像、目錄、本機系統以及編譯Go和Rust二進位檔產生。 Sbomgen掃瞄包含已安裝套件相關資訊的檔案。Sbomgen找到相關檔案時,會擷取套件名稱、版本和其他中繼資料。 Sbomgen然後將包元數據轉換為 CycloneDXSBOM. 您可以使用Sbomgen以檔案CycloneDXSBOM形式產生或在中產生,STDOUT然後傳送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可以掃描獨立的 Docker 文件並從現有映像中構建歷史記錄以查找安全問題。如需詳細資訊,請參閱 Amazon Inspector 查器碼頭檔案檢查。

安裝 Sbomgen

Sbomgen僅適用於 Linux 作業系統。

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

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

  • 4 個核心 CPU

  • 8 GB RAM

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

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

    LinuxARM64: 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— 這是一CycloneDXSBOM個工Sbomgen具。

    • 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子指令啟用此功能。

範例 命令

在下面的代碼片段中,您可以替換 影像:標籤 使用您的圖像的 ID 和 輸出路徑 與您要保存的輸出的路徑。

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

掃描時間和效能取決於影像大小以及圖層數目有多少。較小的圖像不僅可以提高Sbomgen性能,還可以減少潛在的攻擊面。較小的圖像還可以改善圖像的構建,下載和上傳時間。

Sbomgen搭配使用時 ScanSbom,Amazon Inspector 掃描API將不會處理包SBOMs含 2,000 個以上的套件。在這個案例中,Amazon Inspector 掃描會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

SBOM從Go或Rust編譯的二進製文件生成

您可以使用SbomgenSBOMs從編譯Go和Rust二進製文件生成。您可以通過子命令啟用此功能:binary

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

發送SBOM給 Amazon Inspector 以識別漏洞

除了產生之外SBOM,您還可以從 Amazon Inspector 掃描使用單一命令傳送掃描API。SBOMAmazon Inspector 會先評估漏洞的內容,然後再將發現項目傳回SBOM給。Sbomgen根據您的輸入,發現項目可以顯示或寫入檔案。

注意

您必須擁有具有讀取權限 AWS 帳戶 的作用中,才InspectorScan:ScanSbom能使用此功能。

若要啟用此功能,請將引--scan-sbom數傳遞給 SbomgenCLI. 您也可以將--scan-sbom引數傳遞給下列任何一個Sbomgen子命令:archivebinarycontainerdirectorylocalhost

注意

Amazon Inspector 掃描API不會處SBOMs理超過 2,000 個包裹。在這個案例中,Amazon Inspector 掃描會API傳回 HTTP 400 個回應。

您可以透過 AWS 設定檔或使用下列 AWS CLI 引數的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

此命令會SBOM為最新AlpineLinux版本建立一個、掃瞄弱點結果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

此命令會使用角色對 Amazon Inspector 進ARN行驗證。IAM

./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耗用、經過執行階段,以及略過超過提供臨界值的檔案,請搭配container子指令使用--max-file-size引數:

./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 loging 命令對容器登錄進行驗證:docker login

  1. 驗證您的容器註冊表。例如,如果使用Docker,您可以使用以下Dockerlogin命令向註冊表進行身份驗證:

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

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

使用慣性方法進行驗證

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

若要使用下列範例,請取代 影像:標籤 使用您要掃描的圖像的名稱 您的使用者名稱 使用可以訪問圖像的用戶名:

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

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

對於此方法,請將您的密碼或註冊表令牌存儲在.txt文件中。

注意

目前的使用者應該只能讀取此檔案。該文件還應該在一行中包含您的密碼或令牌。

若要使用下列範例,請取代 您的使用者名稱 使用您的用戶名,password.txt 將包含您的密碼或令牌的.txt文件放在一行中,以及 影像:標籤 使用要掃描的影像名稱:

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