Generador de SBOM de Amazon Inspector - Amazon Inspector

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Generador de SBOM de Amazon Inspector

Una lista de materiales de software (SBOM) es una lista estructurada formalmente de componentes, bibliotecas y módulos necesarios para crear una pieza de software. El generador de SBOM de Amazon Inspector (Sbomgen) es una herramienta que produce una SBOM para archivos, imágenes de contenedores, directorios, sistemas locales y Go compilados y Rust binarios. Sbomgen analiza los archivos que contienen información acerca de los paquetes instalados. Cuando Sbomgen encuentra un archivo relevante, extrae los nombres, las versiones y otros metadatos de los paquetes. Sbomgen luego transforma los metadatos del paquete en una SBOM de CycloneDX. Puede utilizarla Sbomgen para generar la CycloneDX SBOM como un archivo o en STDOUT y enviarla a Amazon SBOMs Inspector para la detección de vulnerabilidades. También puede utilizarlo Sbomgen como parte de la CI/CD integración, que escanea automáticamente las imágenes de los contenedores como parte de su proceso de implementación.

Tipos de paquetes admitidos

Sbomgen recopila el inventario de los siguientes tipos de paquetes:

  • Alpine APK

  • Debian/Ubuntu DPKG

  • Red Hat RPM

  • C#

  • Go

  • Java

  • Node.js

  • PHP

  • Python

  • Ruby

  • Rust

Comprobaciones de configuración de imágenes de contenedores admitidos

Sbomgen puede analizar archivos Dockerfiles independientes y crear un historial de imágenes existentes para detectar problemas de seguridad. Para obtener más información, consulte Comprobaciones de Dockerfile de Amazon Inspector.

Instalación de Sbomgen

Sbomgen solo está disponible para los sistemas operativos Linux.

Debe tener Docker instalado si quiere que Sbomgen analice las imágenes almacenadas en caché de forma local. Docker no es necesario para analizar las imágenes exportadas como archivos .tar o las imágenes alojadas en registros de contenedores remotos.

Amazon Inspector recomienda que se ejecute Sbomgen desde un sistema con al menos las siguientes especificaciones de hardware:

  • CPU de 4 núcleos

  • 8 GB de RAM

Para instalar Sbomgen
  1. Descargue el archivo zip de Sbomgen más reciente desde la URL correcta para su arquitectura:

    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

    Como alternativa, puede descargar versiones anteriores del archivo zip del generador de SBOM de Amazon Inspector.

  2. Descomprima el archivo descargado con el siguiente comando:

    unzip inspector-sbomgen.zip

  3. Compruebe los siguientes archivos en el directorio extraído:

    • inspector-sbomgen— Esta es la herramienta que ejecutarás para generar SBOMs.

    • README.txt: la documentación para usar Sbomgen.

    • LICENSE.txt: archivo que contiene la licencia de software de Sbomgen.

    • licenses: carpeta que contiene información de licencia de los paquetes de terceros utilizados por Sbomgen.

    • checksums.txt: este archivo proporciona hashes de la herramienta de Sbomgen.

    • sbom.json: esta es una SBOM de CycloneDX para la herramienta de Sbomgen.

    • WhatsNew.txt: este archivo contiene un registro de cambios resumido, para que pueda ver rápidamente los principales cambios y mejoras entre versiones de Sbomgen.

  4. (Opcional) Verifique la autenticidad y la integridad de la herramienta mediante el siguiente comando:

    sha256sum < inspector-sbomgen

    1. Compare los resultados con el contenido del archivo checksums.txt.

  5. Otorgue permisos ejecutables a la herramienta mediante el siguiente comando:

    chmod +x inspector-sbomgen

  6. Con los siguientes comandos, verifique si Sbomgen se ha instalado correctamente:

    ./inspector-sbomgen --version

    Debería ver un resultado similar a este:

    Version: 1.X.X

Uso de Sbomgen

En esta sección se describen las diferentes formas en las que puede utilizar Sbomgen. Puede obtener más información sobre cómo usar Sbomgen a través de los ejemplos integrados. Para ver estos ejemplos, ejecute el comando list-examples:

./inspector-sbomgen list-examples

Generación de una SBOM para una imagen de contenedor y envío del resultado

Puede utilizarla Sbomgen para generar imágenes SBOMs para contenedores y enviar el resultado a un archivo. Esta capacidad se puede habilitar mediante el subcomando container.

Comando de ejemplo:

En el siguiente fragmento, puede sustituir image:tag por el ID de la imagen y output_path.json por la ruta al resultado que desea guardar.

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

El tiempo y el rendimiento del análisis dependen del tamaño de la imagen y de lo pequeño que sea el número de capas. Las imágenes más pequeñas no solo mejoran el rendimiento de Sbomgen, sino que también reducen la posible superficie expuesta a ataques. Las imágenes más pequeñas también mejoran los tiempos de creación, descarga y carga de las imágenes.

Cuando se usa Sbomgen con ScanSbom, la API de escaneo de Amazon Inspector no procesará los paquetes SBOMs que contengan más de 5000 paquetes. En este escenario, la API de Escaneo de Amazon Inspector devuelve una respuesta HTTP 400.

Si una imagen incluye directorios o archivos multimedia masivos, considere excluirlos de Sbomgen con el argumento --skip-files.

Ejemplo: casos de error comunes

El escaneo de imágenes de contenedores puede fallar debido a los siguientes errores:

  • InvalidImageFormat— Se produce al escanear imágenes de contenedores mal formadas con encabezados TAR, archivos de manifiesto o archivos de configuración corruptos.

  • ImageValidationFailure— Se produce cuando se produce un error en la validación de la suma de comprobación o de la longitud del contenido de los componentes de la imagen del contenedor, como cabeceras de longitud de contenido que no coinciden, resúmenes de manifiestos incorrectos o errores en la verificación de la suma de comprobación. SHA256

  • ErrUnsupportedMediaType— Se produce cuando los componentes de la imagen incluyen tipos de medios no compatibles. Para obtener información sobre los tipos de medios compatibles, consulte Sistemas operativos y tipos de medios compatibles.

Amazon Inspector no admite este tipo de application/vnd.docker.distribution.manifest.list.v2+json soporte. Sin embargo, Amazon Inspector admite listas de manifiestos. Al escanear imágenes que utilizan listas de manifiestos, puede especificar explícitamente qué plataforma usar con el --platform argumento. Si no se especifica el --platform argumento, el generador SBOM de Amazon Inspector selecciona automáticamente el manifiesto en función de la plataforma en la que se ejecuta.

Generación de una SBOM a partir de directorios y archivos

Se puede utilizar Sbomgen para generar a SBOMs partir de directorios y archivos. Esta capacidad se puede habilitar mediante directory o los subcomandos archive. Amazon Inspector recomienda utilizar esta característica cuando desee generar una SBOM a partir de una carpeta de proyecto, como un repositorio de Git descargado.

Comando de ejemplo 1

El siguiente fragmento muestra un subcomando que genera una SBOM a partir de un archivo de directorio.

# generate SBOM from directory ./inspector-sbomgen directory --path /path/to/dir -o /tmp/sbom.json
Comando de ejemplo 2

El siguiente fragmento muestra un subcomando que genera una SBOM de un archivo. Los únicos formatos de archivo compatibles son .zip, .tar y .tar.gz.

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

Generación de una SBOM de binarios compilados Go o Rust

Se puede utilizar Sbomgen para generar a SBOMs partir de archivos compilados Go y Rust binarios. Puede habilitar esta capacidad mediante el subcomando binary:

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

Genere una SBOM a partir de volúmenes montados

Puede utilizar el generador SBOM de Amazon Inspector para generar a SBOMs partir de volúmenes montados. Esta capacidad se puede habilitar mediante el subcomando volume. Recomendamos utilizar esta función cuando desee analizar los volúmenes de almacenamiento, como los volúmenes de Amazon EBS que se han montado en el sistema. A diferencia del subcomando de directorio, el escaneo de volúmenes montado detecta los paquetes del sistema operativo y la información del sistema operativo.

Puede escanear un volumen de Amazon EBS adjuntándolo a una EC2 instancia de Amazon en la que esté instalado Amazon Inspector SBOM Generator y montándolo en esa instancia. Para los volúmenes de Amazon EBS que están utilizando actualmente otras EC2 instancias de Amazon, puede crear una instantánea de Amazon EBS del volumen y, a continuación, crear un nuevo volumen de Amazon EBS a partir de esa instantánea para escanearlos. Para obtener más información sobre Amazon EBS, consulte ¿Qué es Amazon EBS? en la Guía del usuario de Amazon Elastic Block Store.

Comando de ejemplo:

El siguiente fragmento muestra un subcomando que genera una SBOM a partir de un volumen montado. El --path argumento debe especificar el directorio raíz en el que está montado el volumen.

# generate SBOM from mounted volume ./inspector-sbomgen volume --path /mount/point/of/volume/root
Comando de ejemplo:

El siguiente fragmento muestra un subcomando que genera una SBOM a partir de un volumen montado y, al mismo tiempo, excluye rutas de archivos específicas con el argumento. --exclude-suffix El --exclude-suffix argumento resulta especialmente útil cuando un volumen contiene archivos masivos (como archivos de registro o archivos multimedia). Los archivos y directorios cuyas rutas terminen con los sufijos especificados se excluirán del análisis, lo que puede reducir el tiempo de escaneo y el uso de memoria.

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

Todas las rutas de archivos del volumen de destino se normalizan con respecto a sus rutas originales. Por ejemplo, al escanear un volumen montado en /mnt/volume que contiene un archivo en/mnt/volume/var/lib/rpm/rpmdb.sqlite, la ruta se normalizará /var/lib/rpm/rpmdb.sqlite en la SBOM generada.

Envío de una SBOM a Amazon Inspector para identificar la vulnerabilidad

Además de generar una SBOM, puede enviar una SBOM para analizarla con un solo comando desde la API de Escaneo de Amazon Inspector. Amazon Inspector evalúa el contenido de la SBOM para detectar vulnerabilidades antes de devolver los resultados a Sbomgen. En función de los datos, los resultados se pueden mostrar o escribir en un archivo.

nota

Debe tener un activo Cuenta de AWS con permisos de lectura para poder utilizar esta InspectorScan-ScanSbom capacidad.

Para habilitar esta capacidad, se pasa el argumento --scan-sbom a la CLI de Sbomgen. También puede pasar el argumento --scan-sbom a cualquiera de los siguientes subcomandos de Sbomgen: archive, binary, container, directory, localhost.

nota

La API de escaneo de Amazon Inspector no procesa SBOMs más de 2000 paquetes. En este escenario, la API de Escaneo de Amazon Inspector devuelve una respuesta HTTP 400.

Puede autenticarse en Amazon Inspector mediante un AWS perfil o un rol de IAM con los siguientes argumentos: AWS CLI

--aws-profile profile --aws-region region --aws-iam-role-arn role_arn

También puede autenticarse en Amazon Inspector proporcionando las siguientes variables de entorno a Sbomgen.

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

Para especificar el formato de respuesta, utilice el argumento --scan-sbom-output-format cyclonedx o el argumento --scan-sbom-output-format inspector.

Comando de ejemplo 1

Este comando crea una SBOM para la última versión de Alpine Linux, la analiza y escribe los resultados de la vulnerabilidad en un archivo 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
Comando de ejemplo 2

Este comando se autentica en Amazon Inspector mediante AWS credenciales como variables de entorno.

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
Comando de ejemplo 3

Este comando se autentica en Amazon Inspector mediante el ARN de un rol de 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

Utilice escáneres adicionales para mejorar las capacidades de detección

El generador SBOM de Amazon Inspector aplica escáneres predefinidos en función del comando que se utilice.

Grupos de escáneres predeterminados

Cada subcomando del generador SBOM de Amazon Inspector aplica automáticamente los siguientes grupos de escáneres predeterminados.

  • Para el directory subcomando: grupos binarios, programming-language-packages dockerfile scanner

  • Para el localhost subcomando: os,, programming-language-packages extra-ecosystems scanner groups

  • Para el container subcomando: os, extra-ecosystems programming-language-packages, dockerfile, binary scanner groups

Escáneres especiales

Para incluir escáneres más allá de los grupos de escáneres predeterminados, utilice la --additional-scanners opción seguida del nombre del escáner que se va a añadir. A continuación se muestra un ejemplo de comando que muestra cómo hacerlo.

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

El siguiente es un comando de ejemplo que muestra cómo añadir varios escáneres con una lista separada por comas.

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

Optimice los escaneos de contenedores ajustando el tamaño máximo del archivo a escanear

Al analizar y procesar la imagen de un contenedor, Sbomgen escanea archivos de 200 MB o menos de forma predeterminada. Los archivos de más de 200 MB rara vez contienen metadatos del paquete. Es posible que se produzcan errores al inventariar un archivo Go o un archivo Rust binario que supere los 200 MB. Para ajustar el límite de tamaño, utilice el --max-file-size argumento. Esto le permite aumentar el límite para incluir archivos de gran tamaño y reducirlo para reducir el uso de recursos al excluir los archivos de gran tamaño.

Ejemplo

El siguiente ejemplo muestra cómo utilizar el --max-file-size argumento para aumentar el tamaño del archivo.

# 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

El ajuste de esta configuración ayuda a controlar el uso del disco, el consumo de memoria y la duración total del escaneo.

Desactivación del indicador de progreso

Sbomgenmuestra un indicador de progreso giratorio que puede provocar un exceso de caracteres de barra en los CI/CD entornos.

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

Puede desactivar el indicador de progreso mediante el argumento --disable-progress-bar:

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

Autenticación en registros privados con Sbomgen

Si proporciona sus credenciales de autenticación de registro privado, puede generarlas SBOMs a partir de contenedores alojados en registros privados. Puede proporcionar estas credenciales a través de los siguientes métodos:

Autenticación mediante credenciales almacenadas en caché (recomendado)

Para este método, autentifíquese primero en el registro del contenedor. Por ejemplo, si utiliza Docker, puede autenticarse en el registro del contenedor mediante el comando de registro de Docker: docker login.

  1. Realice la autenticación en el registro del contenedor. Por ejemplo, si utiliza Docker, puede autenticarse en el registro mediante el comando login de Docker:

  2. Después de autenticarse en el registro del contenedor, use Sbomgen en una imagen de contenedor que esté en el registro. Para usar el ejemplo siguiente, sustituya image:tag por el nombre de la imagen que se vaya a analizar:

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

Autenticate mediante el método interactivo

Para este método, proporcione su nombre de usuario como parámetro y Sbomgen le solicitará que ingrese la contraseña de forma segura cuando sea necesario.

Para usar el ejemplo siguiente, sustituya image:tag por el nombre de la imagen que desee analizar y your_username por un nombre de usuario que tenga acceso a la imagen:

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

Autenticación mediante el método no interactivo

Para este método, guarde la contraseña o el token de registro en un archivo .txt.

nota

El usuario actual solo debería poder leer este archivo. El archivo debe contener también la contraseña o el token en una sola línea.

Para usar el ejemplo siguiente, sustituya your_username por su nombre de usuario, password.txt por el archivo .txt que contenga su contraseña o token en una sola línea y image:tag por el nombre de la imagen que desee analizar:

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

Ejemplos de resultados de Sbomgen

A continuación se muestra un ejemplo de una SBOM de una imagen de contenedor inventariada que utiliza 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" } ] } ] }