Usar Scout con diferentes tipos de artefactos
Algunos de los comandos de la CLI de Docker Scout admiten prefijos para especificar la ubicación o el tipo de artefacto que deseas analizar.
De forma predeterminada, el análisis de imágenes con el comando docker scout cves se dirige a las imágenes del almacenamiento de imágenes local de Docker Engine. El siguiente comando siempre utiliza una imagen local si esta existe:
$ docker scout cves <image>
Si la imagen no existe localmente, Docker descarga la imagen antes de ejecutar el análisis. El análisis de la misma imagen nuevamente utilizará la misma versión local de forma predeterminada, incluso si la etiqueta ha cambiado desde entonces en el registro.
Al añadir el prefijo registry:// a la referencia de la imagen, puedes forzar a Docker Scout a analizar la versión del registro de la imagen:
$ docker scout cves registry://<image>
Prefijos compatibles
Los prefijos compatibles son:
| Prefijo | Descripción |
|---|---|
image:// (predeterminado) | Utiliza una imagen local, o recurre a una búsqueda en el registro |
local:// | Utiliza una imagen del almacenamiento de imágenes local (no busca en el registro) |
registry:// | Utiliza una imagen de un registro (no utiliza una imagen local) |
oci-dir:// | Utiliza un directorio con diseño OCI |
archive:// | Utiliza un archivo tarball, como el creado por docker save |
fs:// | Utiliza un directorio o archivo local |
Puedes utilizar prefijos con los siguientes comandos:
docker scout comparedocker scout cvesdocker scout quickviewdocker scout recommendationsdocker scout sbom
Ejemplos
Esta sección contiene algunos ejemplos que muestran cómo puedes utilizar los prefijos para especificar artefactos en los comandos de docker scout.
Analizar un proyecto local
El prefijo fs:// te permite analizar el código fuente local directamente, sin tener que construirlo en una imagen de contenedor. El siguiente comando docker scout quickview te ofrece un resumen rápido de las vulnerabilidades del código fuente en el directorio de trabajo actual:
$ docker scout quickview fs://.
Para ver los detalles de las vulnerabilidades encontradas en tu código fuente local, puedes utilizar el comando docker scout cves --details fs://.. Combínalo con otras banderas para limitar los resultados a los paquetes y vulnerabilidades que te interesen.
$ docker scout cves --details --only-severity high fs://.
✓ File system read
✓ Indexed 323 packages
✗ Detected 1 vulnerable package with 1 vulnerability
## Overview
│ Analyzed path
────────────────────┼──────────────────────────────
Path │ /Users/david/demo/scoutfs
vulnerabilities │ 0C 1H 0M 0L
## Packages and Vulnerabilities
0C 1H 0M 0L fastify 3.29.0
pkg:npm/[email protected]
✗ HIGH CVE-2022-39288 [OWASP Top Ten 2017 Category A9 - Using Components with Known Vulnerabilities]
https://scout.docker.com/v/CVE-2022-39288
fastify is a fast and low overhead web framework, for Node.js. Affected versions of
fastify are subject to a denial of service via malicious use of the Content-Type
header. An attacker can send an invalid Content-Type header that can cause the
application to crash. This issue has been addressed in commit fbb07e8d and will be
included in release version 4.8.1. Users are advised to upgrade. Users unable to
upgrade may manually filter out http content with malicious Content-Type headers.
Affected range : <4.8.1
Fixed version : 4.8.1
CVSS Score : 7.5
CVSS Vector : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
1 vulnerability found in 1 package
LOW 0
MEDIUM 0
HIGH 1
CRITICAL 0
Comparar un proyecto local con una imagen
Con docker scout compare, puedes comparar el análisis del código fuente de tu sistema de archivos local con el análisis de una imagen de contenedor. El siguiente ejemplo compara el código fuente local (fs://.) con una imagen de registro registry://docker/scout-cli:latest. En este caso, tanto el origen (baseline) como el objetivo (target) de la comparación utilizan prefijos.
$ docker scout compare fs://. --to registry://docker/scout-cli:latest --ignore-unchanged
WARN 'docker scout compare' is experimental and its behaviour might change in the future
✓ File system read
✓ Indexed 268 packages
✓ SBOM of image already cached, 234 packages indexed
## Overview
│ Analyzed File System │ Comparison Image
─────────────────────────┼────────────────────────────────────────────────┼─────────────────────────────────────────────
Path / Image reference │ /Users/david/src/docker/scout-cli-plugin │ docker/scout-cli:latest
│ │ bb0b01303584
platform │ │ linux/arm64
provenance │ https://github.com/dvdksn/scout-cli-plugin.git │ https://github.com/docker/scout-cli-plugin
│ 6ea3f7369dbdfec101ac7c0fa9d78ef05ffa6315 │ 67cb4ef78bd69545af0e223ba5fb577b27094505
vulnerabilities │ 0C 0H 1M 1L │ 0C 0H 1M 1L
│ │
size │ 7.4 MB (-14 MB) │ 21 MB
packages │ 268 (+34) │ 234
│ │
## Packages and Vulnerabilities
+ 55 packages added
- 21 packages removed
213 packages unchanged
El ejemplo anterior está truncado por brevedad.
Ver el SBOM de un archivo tarball de imagen
El siguiente ejemplo muestra cómo puedes utilizar el prefijo archive:// para obtener el SBOM de un archivo tarball de una imagen, creado con docker save. La imagen en este caso es docker/scout-cli:latest, y el SBOM se exporta al archivo sbom.spdx.json en formato SPDX.
$ docker pull docker/scout-cli:latest
latest: Pulling from docker/scout-cli
257973a141f5: Download complete
1f2083724dd1: Download complete
5c8125a73507: Download complete
Digest: sha256:13318bb059b0f8b0b87b35ac7050782462b5d0ac3f96f9f23d165d8ed68d0894
$ docker save docker/scout-cli:latest -o scout-cli.tar
$ docker scout sbom --format spdx -o sbom.spdx.json archive://scout-cli.tar
Obtener más información
Lee sobre los comandos y las banderas compatibles en la documentación de referencia de la CLI: