SBOMs en Docker Scout
El análisis de imágenes utiliza las SBOM de las imágenes para comprender qué paquetes y versiones contiene una imagen. Docker Scout utiliza atestaciones de SBOM si están disponibles en la imagen (recomendado). Si no hay ninguna atestación de SBOM disponible, Docker Scout crea una indexando el contenido de la imagen.
Ver desde la CLI
Para ver el contenido de la SBOM que genera Docker Scout, puedes utilizar el comando docker scout sbom.
$ docker scout sbom [IMAGE]
De forma predeterminada, esto imprime la SBOM en formato JSON en la salida estándar (stdout). El formato JSON predeterminado producido por docker scout sbom no es SPDX-JSON. Para obtener la salida en formato SPDX, utiliza la bandera --format spdx:
$ docker scout sbom --format spdx [IMAGE]
Para generar una lista legible por humanos, utiliza la bandera --format list:
$ docker scout sbom --format list alpine
Name Version Type
───────────────────────────────────────────────
alpine-baselayout 3.4.3-r1 apk
alpine-baselayout-data 3.4.3-r1 apk
alpine-keys 2.4-r1 apk
apk-tools 2.14.0-r2 apk
busybox 1.36.1-r2 apk
busybox-binsh 1.36.1-r2 apk
ca-certificates 20230506-r0 apk
ca-certificates-bundle 20230506-r0 apk
libc-dev 0.7.2-r5 apk
libc-utils 0.7.2-r5 apk
libcrypto3 3.1.2-r0 apk
libssl3 3.1.2-r0 apk
musl 1.2.4-r1 apk
musl-utils 1.2.4-r1 apk
openssl 3.1.2-r0 apk
pax-utils 1.3.7-r1 apk
scanelf 1.3.7-r1 apk
ssl_client 1.36.1-r2 apk
zlib 1.2.13-r1 apk
Para obtener más información sobre el comando docker scout sbom, consulta la
referencia de la CLI.
Adjuntar como atestación de construcción
Puedes generar la SBOM y adjuntarla a la imagen en el momento de la construcción como una
atestación. BuildKit proporciona un generador de SBOM predeterminado que es diferente del que utiliza Docker Scout. Puedes configurar BuildKit para que utilice el generador de SBOM de Docker Scout utilizando la bandera --attest para el comando docker build. El indexador de SBOM de Docker Scout proporciona resultados más detallados y garantiza una mejor compatibilidad con el análisis de imágenes de Docker Scout.
$ docker build --tag <org>/<image> \
--attest type=sbom,generator=docker/scout-sbom-indexer:latest \
--push .
Para construir imágenes con atestaciones de SBOM, debes utilizar la función del
almacenamiento de imágenes containerd o utilizar un constructor docker-container junto con la bandera --push para subir la imagen (con las atestaciones) directamente a un registro. El almacenamiento de imágenes clásico no es compatible con las listas de manifiestos ni con los índices de imágenes, que son necesarios para añadir atestaciones a una imagen.
Extraer a un archivo
El comando para extraer la SBOM de una imagen a un archivo SPDX JSON es diferente dependiendo de si la imagen ha sido subida a un registro o si es una imagen local.
Imagen remota
Para extraer la SBOM de una imagen y guardarla en un archivo, puedes utilizar el comando docker buildx imagetools inspect. Este comando únicamente funciona para imágenes que estén en un registro.
$ docker buildx imagetools inspect <image> --format "{{ json .SBOM }}" > sbom.spdx.json
Imagen local
Para extraer el archivo SPDX de una imagen local, construye la imagen con el exportador local y utiliza el plugin del generador de SBOM scout-sbom-indexer.
El siguiente comando guarda la SBOM en un archivo en build/sbom.spdx.json.
$ docker build --attest type=sbom,generator=docker/scout-sbom-indexer:latest \
--output build .