

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Amazon Inspector SBOM Generator
<a name="sbom-generator"></a>

 Software Bill of Materials (SBOM) [adalah daftar komponen, pustaka, dan modul yang terstruktur secara formal](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/software-bill-of-materials-sbom.html) yang diperlukan untuk membangun perangkat lunak. Amazon Inspector SBOM Generator (Sbomgen) adalah alat yang menghasilkan SBOM untuk arsip, gambar kontainer, direktori, sistem lokal, dan kompilasi dan binari. Go Rust Sbomgenmemindai file yang berisi informasi tentang paket yang diinstal. Ketika Sbomgen menemukan file yang relevan, ia mengekstrak nama paket, versi, dan metadata lainnya. Sbomgenkemudian mengubah metadata paket menjadi SBOM. CycloneDX Anda dapat menggunakan Sbomgen untuk menghasilkan CycloneDX SBOM sebagai file atau di STDOUT dan mengirim ke Amazon SBOMs Inspector untuk deteksi kerentanan. Anda juga dapat menggunakan Sbomgen sebagai bagian dari [ CI/CD integrasi](https://docs.aws.amazon.com/inspector/latest/user/scanning-cicd.html), yang memindai gambar kontainer secara otomatis sebagai bagian dari pipeline penerapan Anda. 

 Amazon Inspector menggunakan Sbomgen beberapa fitur pemindaian terkelola. Saat Amazon Inspector melakukan pemindaian [gambar kontainer Amazon ECR,](https://docs.aws.amazon.com/inspector/latest/user/scanning-ecr.html) [pemindaian fungsi AWS Lambda, dan pemindaian](https://docs.aws.amazon.com/inspector/latest/user/scanning-lambda.html) tanpa agen [dari](https://docs.aws.amazon.com/inspector/latest/user/scanning-ec2.html#agentless) instans Amazon Elastic Compute Cloud melalui analisis volume Amazon EBS, Amazon akan memanggil Sbomgen di belakang layar untuk menghasilkan inventaris perangkat lunak yang digunakan untuk penilaian kerentanan. SbomgenAlat mandiri yang dijelaskan di halaman ini menyediakan teknologi dasar yang sama, memungkinkan Anda mengintegrasikan pembuatan SBOM langsung ke alur kerja Anda. 

## Jenis paket yang didukung
<a name="sbomgen-supported"></a>

 Sbomgenmengumpulkan inventaris untuk jenis paket berikut: 
+  Alpine APK 
+  Debian/Ubuntu DPKG 
+  Red Hat RPM 
+  C\# 
+  Go 
+  Java 
+  Node.js 
+  PHP 
+  Python 
+  Ruby 
+  Rust 

## Pemeriksaan konfigurasi gambar kontainer yang didukung
<a name="sbomgen-supported-configuration"></a>

 Sbomgendapat memindai Dockerfiles mandiri dan membangun riwayat dari gambar yang ada untuk masalah keamanan. Untuk informasi selengkapnya, lihat [pemeriksaan Amazon Inspector Dockerfile](https://docs.aws.amazon.com/inspector/latest/user/dockerfile-checks.html). 

## Menginstal Sbomgen
<a name="install-sbomgen"></a>

 Sbomgenhanya tersedia untuk sistem operasi Linux. 

 Anda harus Docker menginstal jika Anda Sbomgen ingin menganalisis gambar yang di-cache secara lokal. Dockertidak diperlukan untuk menganalisis gambar yang diekspor sebagai `.tar` file atau gambar yang dihosting di pendaftar kontainer jarak jauh. 

 Amazon Inspector merekomendasikan agar Anda menjalankan Sbomgen dari sistem dengan setidaknya spesifikasi perangkat keras berikut: 
+ CPU inti 4x
+ 8 GB RAM

**Untuk menginstal Sbomgen**

1.  Unduh file Sbomgen zip terbaru dari URL yang benar untuk arsitektur Anda: 

    Linux AMD64: [https://amazon-inspector-sbomgen.s3.amazonaws.com/latest/linux/amd64/inspector-sbomgen.zip](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](https://amazon-inspector-sbomgen.s3.amazonaws.com/latest/linux/arm64/inspector-sbomgen.zip) 

    Atau, Anda dapat men-download [versi sebelumnya dari Amazon Inspector SBOM Generator](https://docs.aws.amazon.com/inspector/latest/user/sbom-generator-versions.html) file zip. 

1.  Buka zip unduhan menggunakan perintah berikut: 

    `unzip inspector-sbomgen.zip` 

1.  Periksa file-file berikut di direktori yang diekstrak: 
   +  `inspector-sbomgen`— Ini adalah alat yang akan Anda jalankan untuk menghasilkan SBOMs. 
   +  `README.txt`- Ini adalah dokumentasi untuk digunakanSbomgen. 
   +  `LICENSE.txt`— File ini berisi lisensi perangkat lunak untukSbomgen. 
   +  `licenses`— Folder ini berisi info lisensi untuk paket pihak ketiga yang digunakan olehSbomgen. 
   +  `checksums.txt`— File ini menyediakan hash Sbomgen alat. 
   +  `sbom.json`— Ini adalah CycloneDX SBOM untuk Sbomgen alat ini. 
   +  `WhatsNew.txt`— File ini berisi log perubahan yang dirangkum, sehingga Anda dapat melihat perubahan besar dan peningkatan antar Sbomgen versi dengan cepat. 

1.  (Opsional) Verifikasi keaslian dan integritas alat menggunakan perintah berikut: 

    `sha256sum < inspector-sbomgen` 

   1.  Bandingkan hasilnya dengan isi `checksums.txt` file. 

1.  Berikan izin yang dapat dieksekusi ke alat menggunakan perintah berikut: 

    `chmod +x inspector-sbomgen` 

1.  Verifikasi bahwa Sbomgen berhasil diinstal menggunakan perintah berikut: 

    `./inspector-sbomgen --version` 

    Anda akan melihat output yang mirip dengan yang berikut ini: 

    `Version: 1.X.X ` 

## Menggunakan Sbomgen
<a name="using-sbomgen"></a>

 Bagian ini menjelaskan berbagai cara yang dapat Anda gunakanSbomgen. Anda dapat mempelajari lebih lanjut tentang cara menggunakan Sbomgen melalui contoh bawaan. Untuk melihat contoh ini, jalankan `list-examples` perintah: 

```
./inspector-sbomgen list-examples
```

### Hasilkan SBOM untuk gambar kontainer dan output hasilnya
<a name="w2aac37c13b7"></a>

 Anda dapat menggunakan Sbomgen SBOMs untuk menghasilkan gambar kontainer dan menampilkan hasilnya ke file. Kemampuan ini dapat diaktifkan menggunakan `container` subperintah. 

**Perintah contoh**  
 Dalam cuplikan berikut, Anda dapat mengganti {{`image:tag`}} dengan ID gambar Anda dan {{`output_path.json`}} dengan jalur ke output yang ingin Anda simpan. 

```
# generate SBOM for container image
./inspector-sbomgen container {{--image image:tag}} -o {{output_path.json}}
```

**catatan**  
 Waktu dan kinerja pemindaian tergantung pada ukuran gambar dan seberapa kecil jumlah lapisannya. Gambar yang lebih kecil tidak hanya meningkatkan Sbomgen kinerja, tetapi juga mengurangi potensi permukaan serangan. Gambar yang lebih kecil juga meningkatkan waktu pembuatan, unduhan, dan unggah gambar. 

 Saat menggunakan Sbomgen with [https://docs.aws.amazon.com/inspector/v2/APIReference/API_scan_ScanSbom.html](https://docs.aws.amazon.com/inspector/v2/APIReference/API_scan_ScanSbom.html), Amazon Inspector Scan API tidak akan memproses SBOMs yang berisi lebih dari 5.000 paket. Dalam skenario ini, Amazon Inspector Scan API mengembalikan respons HTTP 400. 

 Jika gambar menyertakan file media massal atau direktori, pertimbangkan untuk mengecualikan mereka dari Sbomgen menggunakan argumen. `--skip-files` 

**Contoh: Kasus kesalahan umum**  
 Pemindaian gambar kontainer dapat gagal karena kesalahan berikut: 
+  `InvalidImageFormat`— Terjadi saat memindai gambar kontainer yang salah bentuk dengan header TAR yang rusak, file manifes, atau file konfigurasi. 
+  `ImageValidationFailure`— Terjadi ketika validasi checksum atau panjang konten gagal untuk komponen gambar kontainer, seperti header Content-Length yang tidak cocok, intisari manifes yang salah, atau verifikasi checksum yang gagal. SHA256 
+  `ErrUnsupportedMediaType`— Terjadi ketika komponen gambar menyertakan jenis media yang tidak didukung. Untuk informasi tentang jenis media yang didukung, lihat [Sistem operasi dan jenis media yang didukung](https://docs.aws.amazon.com/inspector/latest/user/scanning-ecr.html#ecr-supported-media). 

 Amazon Inspector tidak mendukung jenis `application/vnd.docker.distribution.manifest.list.v2+json` media. Namun, Amazon Inspector mendukung daftar manifes. Saat memindai gambar yang menggunakan daftar manifes, Anda dapat secara eksplisit menentukan platform mana yang akan digunakan dengan argumen tersebut`--platform`. Jika `--platform` argumen tidak ditentukan, Amazon Inspector SBOM Generator secara otomatis memilih manifes berdasarkan platform tempat perjalanannya. 

### Menghasilkan SBOM dari direktori dan arsip
<a name="w2aac37c13b9"></a>

 Anda dapat menggunakan Sbomgen untuk menghasilkan SBOMs dari direktori dan arsip. Kemampuan ini dapat diaktifkan menggunakan `directory` atau `archive` subperintah. Amazon Inspector merekomendasikan penggunaan fitur ini ketika Anda ingin membuat SBOM dari folder proyek, seperti repositori git yang diunduh. 

**Contoh perintah 1**  
 Cuplikan berikut menunjukkan subperintah yang menghasilkan SBOM dari file direktori. 

```
# generate SBOM from directory
./inspector-sbomgen directory --path /path/to/dir -o /tmp/sbom.json
```

**Contoh perintah 2**  
 Cuplikan berikut menunjukkan subperintah yang menghasilkan SBOM dari file arsip. Satu-satunya format arsip yang didukung adalah`.zip`,`.tar`, dan`.tar.gz`. 

```
# generate SBOM from archive file (tar, tar.gz, and zip formats only)
./inspector-sbomgen archive --path testData.zip -o /tmp/sbom.json
```

### Hasilkan SBOM dari Go atau binari yang Rust dikompilasi
<a name="w2aac37c13c11"></a>

 Anda dapat menggunakan Sbomgen untuk menghasilkan SBOMs dari kompilasi Go dan Rust binari. Anda dapat mengaktifkan cabapility ini melalui subperintah: `binary` 

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

### Hasilkan SBOM dari volume yang dipasang
<a name="w2aac37c13c13"></a>

 Anda dapat menggunakan Amazon Inspector SBOM Generator untuk menghasilkan SBOMs dari volume yang dipasang. Kemampuan ini dapat diaktifkan menggunakan `volume` subperintah. Sebaiknya gunakan fitur ini saat Anda ingin menganalisis volume penyimpanan, seperti volume Amazon EBS yang telah dipasang ke sistem Anda. Berbeda dengan subperintah direktori, pemindaian volume yang dipasang mendeteksi paket OS dan informasi OS. 

 Anda dapat memindai volume Amazon EBS dengan melampirkannya ke instans Amazon EC2 tempat Amazon Inspector SBOM Generator diinstal dan memasangnya pada instance tersebut. Untuk volume Amazon EBS yang saat ini digunakan oleh instans Amazon EC2 lainnya, Anda dapat membuat snapshot Amazon EBS dari volume tersebut dan kemudian membuat volume Amazon EBS baru dari snapshot tersebut untuk tujuan pemindaian. Untuk informasi selengkapnya tentang Amazon EBS, lihat [Apa itu Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/what-is-ebs.html)? di *Panduan Pengguna Amazon Elastic Block Store*. 

**Perintah contoh**  
 Cuplikan berikut menunjukkan subperintah yang menghasilkan SBOM dari volume yang dipasang. `--path`Argumen harus menentukan direktori root tempat volume dipasang. 

```
# generate SBOM from mounted volume
./inspector-sbomgen volume --path /mount/point/of/volume/root
```

**Perintah contoh**  
 Cuplikan berikut menunjukkan subperintah yang menghasilkan SBOM dari volume yang dipasang sementara mengecualikan jalur file tertentu dengan argumen. `--exclude-suffix` `--exclude-suffix`Argumen ini sangat berguna ketika volume berisi file massal (seperti file log atau file media). File dan direktori yang jalurnya diakhiri dengan sufiks yang ditentukan akan dikecualikan dari pemindaian, yang dapat mengurangi waktu pemindaian dan penggunaan memori. 

```
# generate SBOM from mounted volume with exclusions
./inspector-sbomgen volume --path /mount/point/of/volume/root \
--exclude-suffix .log \
--exclude-suffix cache
```

 Semua jalur file dalam volume target dinormalisasi ke jalur aslinya. Misalnya, saat memindai volume yang dipasang `/mnt/volume` yang berisi file di`/mnt/volume/var/lib/rpm/rpmdb.sqlite`, jalur akan dinormalisasi ke `/var/lib/rpm/rpmdb.sqlite` dalam SBOM yang dihasilkan. 

### Kirim SBOM ke Amazon Inspector untuk identifikasi kerentanan
<a name="w2aac37c13c15"></a>

 Selain menghasilkan SBOM, Anda dapat mengirim SBOM untuk pemindaian dengan satu perintah dari Amazon Inspector Scan API. Amazon Inspector mengevaluasi konten SBOM untuk kerentanan sebelum mengembalikan temuan ke. Sbomgen Tergantung pada masukan Anda, temuan dapat ditampilkan atau ditulis ke file. 

**catatan**  
 Anda harus memiliki izin baca aktif Akun AWS `InspectorScan-ScanSbom` untuk menggunakan kemampuan ini. 

 Untuk mengaktifkan kemampuan ini, Anda meneruskan `--scan-sbom` argumen ke Sbomgen CLI. Anda juga dapat meneruskan `--scan-sbom` argumen ke salah satu Sbomgen subperintah berikut:`archive`,,`binary`, `container``directory`,`localhost`. 

**catatan**  
 Amazon Inspector Scan API tidak memproses SBOMs lebih dari 5.000 paket. Dalam skenario ini, Amazon Inspector Scan API mengembalikan respons HTTP 400. 

 Anda dapat melakukan autentikasi ke Amazon Inspector melalui AWS profil atau peran IAM dengan argumen berikut: AWS CLI 

```
--aws-profile {{profile}}
--aws-region {{region}}
--aws-iam-role-arn {{role_arn}}
```

 Anda juga dapat mengautentikasi ke Amazon Inspector dengan menyediakan variabel lingkungan berikut. Sbomgen 

```
AWS_ACCESS_KEY_ID=$access_key \
AWS_SECRET_ACCESS_KEY=$secret_key \
AWS_DEFAULT_REGION=$region \
./inspector-sbomgen {{arguments}}
```

 Untuk menentukan format respons, gunakan `--scan-sbom-output-format cyclonedx` argumen atau `--scan-sbom-output-format inspector` argumen. 

**Contoh perintah 1**  
 Perintah ini membuat SBOM untuk Alpine Linux rilis terbaru, memindai SBOM, dan menulis hasil kerentanan ke file 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
```

**Contoh perintah 2**  
 Perintah ini mengautentikasi ke Amazon Inspector AWS menggunakan kredensyal sebagai variabel lingkungan. 

```
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
```

**Contoh perintah 3**  
 Perintah ini mengautentikasi ke Amazon Inspector menggunakan ARN untuk peran 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}}
```

### Gunakan pemindai tambahan untuk meningkatkan kemampuan deteksi
<a name="w2aac37c13c17"></a>

 Amazon Inspector SBOM Generator menerapkan pemindai yang telah ditentukan berdasarkan perintah yang digunakan. 

**Grup pemindai default**  
 Setiap subperintah Amazon Inspector SBOM Generator menerapkan grup pemindai default berikut secara otomatis. 
+  Untuk `directory` subperintah: biner, programming-language-packages, grup pemindai dockerfile 
+  Untuk `localhost` subperintah: os, programming-language-packages, grup pemindai ekosistem ekstra 
+  Untuk `container` subperintah: os,, extra-ecosystem programming-language-packages, dockerfile, grup pemindai biner 

**Pemindai khusus**  
 Untuk menyertakan pemindai di luar grup pemindai default, gunakan `--additional-scanners` opsi diikuti dengan nama pemindai yang akan ditambahkan. Berikut ini adalah contoh perintah yang menunjukkan bagaimana melakukan ini. 

```
# Add WordPress installation scanner to directory scan
./inspector-sbomgen directory --path /path/to/directory/ --additional-scanners wordpress-installation -o output.json
```

 Berikut ini adalah contoh perintah yang menunjukkan cara menambahkan beberapa pemindai dengan daftar yang dipisahkan koma. 

```
./inspector-sbomgen container --image image:tag --additional-scanners scanner1,scanner2 -o output.json
```

### Optimalkan pemindaian kontainer dengan menyesuaikan ukuran file maksimum untuk memindai
<a name="w2aac37c13c19"></a>

 Saat Anda menganalisis dan memproses gambar kontainer, Sbomgen memindai file yang berukuran 200 MB atau kurang secara default. File yang lebih besar dari 200 MB jarang berisi paket metadata. Anda dapat menemukan kesalahan ketika Anda inventaris Go atau Rust biner yang melebihi 200MB. Untuk menyesuaikan batas ukuran, gunakan `--max-file-size` argumen. Ini memungkinkan Anda untuk meningkatkan batas untuk menyertakan file besar dan mengurangi batas untuk mengurangi penggunaan sumber daya dengan mengecualikan file besar. 

**Contoh**  
 Contoh berikut menunjukkan bagaimana menggunakan `--max-file-size` argumen untuk meningkatkan ukuran file. 

```
# Increase the file size limit to scan files up to 300 MB
./inspector-sbomgen container --image alpine:latest \
--outfile /tmp/sbom.json \
--max-file-size 300000000
```

 Menyesuaikan pengaturan ini membantu mengontrol penggunaan disk, konsumsi memori, dan durasi pemindaian keseluruhan. 

### Nonaktifkan indikator kemajuan
<a name="w2aac37c13c21"></a>

 Sbomgenmenampilkan indikator kemajuan berputar yang dapat menghasilkan karakter garis miring yang berlebihan di CI/CD lingkungan. 

```
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
```

 Anda dapat menonaktifkan indikator kemajuan menggunakan `--disable-progress-bar` argumen: 

```
./inspector-sbomgen container --image alpine:latest \
--outfile /tmp/sbom.json \
--disable-progress-bar
```

## Mengautentikasi ke pendaftar pribadi dengan Sbomgen
<a name="authenticating-private-registry"></a>

 Dengan memberikan kredensi otentikasi registri pribadi Anda, Anda dapat menghasilkan SBOMs dari kontainer yang di-host di pendaftar pribadi. Anda dapat memberikan kredensi ini melalui metode berikut: 

### Otentikasi menggunakan kredensi cache (disarankan)
<a name="w2aac37c15b5"></a>

 Untuk metode ini, Anda mengautentikasi ke registri kontainer Anda. Misalnya, jika menggunakanDocker, Anda dapat mengautentikasi ke registri kontainer Anda menggunakan perintah Docker loging:. `docker login` 

1.  Otentikasi ke registri kontainer Anda. Misalnya, jika menggunakanDocker, Anda dapat mengautentikasi ke registri Anda menggunakan Docker `login` perintah: 

1.  Setelah Anda mengautentikasi ke registri kontainer Anda, gunakan Sbomgen pada gambar kontainer yang ada di registri. Untuk menggunakan contoh berikut, ganti {{`image:tag`}} dengan nama gambar yang akan dipindai: 

```
./inspector-sbomgen container --image {{image:tag}}
```

### Otentikasi menggunakan metode interaktif
<a name="w2aac37c15b7"></a>

 Untuk metode ini, berikan nama pengguna Anda sebagai parameter, dan Sbomgen akan meminta Anda untuk entri kata sandi yang aman bila diperlukan. 

 Untuk menggunakan contoh berikut, ganti {{`image:tag`}} dengan nama gambar yang ingin Anda pindai dan {{`your_username`}} dengan nama pengguna yang memiliki akses ke gambar: 

```
./inspector-sbomgen container --image {{image:tag}} --username {{your_username}}
```

### Otentikasi menggunakan metode non-interaktif
<a name="w2aac37c15b9"></a>

 Untuk metode ini, simpan kata sandi atau token registri Anda dalam `.txt` file. 

**catatan**  
 Pengguna saat ini seharusnya hanya dapat membaca file ini. File juga harus berisi kata sandi atau token Anda pada satu baris. 

 Untuk menggunakan contoh berikut, ganti {{`your_username`}} dengan nama pengguna Anda, {{`password.txt`}} dengan `.txt` file yang menyertakan kata sandi atau token Anda pada satu baris, dan {{`image:tag`}} dengan nama gambar untuk dipindai: 

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

## Contoh output dari Sbomgen
<a name="sbom-examples"></a>

Berikut ini adalah contoh SBOM untuk gambar kontainer yang diinventarisasi menggunakan. Sbomgen

### Gambar kontainer SBOM
<a name="container-sbom-example"></a>

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