# Inicio rápido de Docker Scout


Docker Scout analiza el contenido de las imágenes y genera un informe detallado
de los paquetes y vulnerabilidades que detecta. Puede proporcionarte sugerencias sobre cómo
corregir los problemas descubiertos por el análisis de imágenes.

Esta guía toma una imagen de contenedor vulnerable y te muestra cómo utilizar Docker Scout
para identificar y corregir las vulnerabilidades, comparar versiones de imágenes a lo largo del
tiempo y compartir los resultados con tu equipo.

## Paso 1: Configuración

[Este proyecto de ejemplo](https://github.com/docker/scout-demo-service) contiene
una aplicación Node.js vulnerable que puedes utilizar para seguir el tutorial.

1. Clona su repositorio:

   ```console
   $ git clone https://github.com/docker/scout-demo-service.git
   ```

2. Entra en el directorio:

   ```console
   $ cd scout-demo-service
   ```

3. Asegúrate de haber iniciado sesión en tu cuenta de Docker,
   ya sea ejecutando el comando `docker login` o iniciando sesión con Docker Desktop.

4. Compila la imagen y envíala a `<ORG_NAME>/scout-demo:v1`,
   donde `<ORG_NAME>` es el espacio de nombres de Docker Hub al que realizas el envío.

   ```console
   $ docker build --push -t <ORG_NAME>/scout-demo:v1 .
   ```

## Paso 2: Habilitar Docker Scout

Docker Scout analiza todas las imágenes locales por defecto. Para analizar imágenes en
repositorios remotos, primero debes habilitarlo.
Puedes hacerlo desde Docker Hub, el Docker Scout Dashboard y la CLI.
[Descubre cómo en la guía de descripción general](/scout).

1. Inicia sesión en tu cuenta de Docker con el comando `docker login` o utiliza el
   botón **Sign in** (Iniciar sesión) en Docker Desktop.

2. A continuación, inscribe a tu organización en Docker Scout utilizando el comando `docker scout enroll`.

   ```console
   $ docker scout enroll <ORG_NAME>
   ```

3. Habilita Docker Scout para tu repositorio de imágenes con el comando `docker scout repo enable`.

   ```console
   $ docker scout repo enable --org <ORG_NAME> <ORG_NAME>/scout-demo
   ```

## Paso 3: Analizar vulnerabilidades de la imagen

Después de compilar, utiliza el comando de la CLI `docker scout` para ver las vulnerabilidades
detectadas por Docker Scout.

La aplicación de ejemplo para esta guía utiliza una versión vulnerable de Express.
El siguiente comando muestra todas las CVE que afectan a Express en la imagen que acabas de
compilar:

```console
$ docker scout cves --only-package express
```

Docker Scout analiza la imagen compilada más recientemente por defecto,
por lo que no es necesario especificar el nombre de la imagen en este caso.

Obtén más información sobre el comando `docker scout cves` en la
[`documentación de referencia de la CLI`](/reference/cli/docker/scout/cves).

## Paso 4: Corregir vulnerabilidades de la aplicación

Después del análisis de Docker Scout, se encontró una vulnerabilidad alta CVE-2022-24999, causada por una versión desactualizada del paquete **express**.

La versión 4.17.3 del paquete express corrige la vulnerabilidad. Por lo tanto, actualiza el archivo `package.json` a la nueva versión:

```diff
   "dependencies": {
-    "express": "4.17.1"
+    "express": "4.17.3"
   }
```

Vuelve a compilar la imagen con una nueva etiqueta y envíala a tu repositorio de Docker Hub:

```console
$ docker build --push -t <ORG_NAME>/scout-demo:v2 .
```

Ejecuta el comando `docker scout` nuevamente y verifica que la vulnerabilidad HIGH (Alta) CVE-2022-24999 ya no esté presente:

```console
$ docker scout cves --only-package express
    ✓ Provenance obtained from attestation
    ✓ Image stored for indexing
    ✓ Indexed 79 packages
    ✓ No vulnerable package detected


  ## Overview

                      │                  Analyzed Image
  ────────────────────┼───────────────────────────────────────────────────
    Target            │  mobywhale/scout-demo:v2
      digest          │  ef68417b2866
      platform        │ linux/arm64
      provenance      │ https://github.com/docker/scout-demo-service.git
                      │  7c3a06793fc8f97961b4a40c73e0f7ed85501857
      vulnerabilities │    0C     0H     0M     0L
      size            │ 19 MB
      packages        │ 1


  ## Packages and Vulnerabilities

  No vulnerable packages detected

```

## Paso 5: Evaluar el cumplimiento de políticas

Aunque inspeccionar las vulnerabilidades basándose en paquetes específicos puede ser útil,
no es la forma más eficaz de mejorar el comportamiento de tu cadena de suministro.

Docker Scout también admite la evaluación de políticas,
un concepto de nivel superior para detectar y corregir problemas en tus imágenes.
Las políticas son un conjunto de reglas personalizables que permiten a las organizaciones realizar
un seguimiento de si las imágenes cumplen con los requisitos de su cadena de suministro.

Dado que las reglas de las políticas son específicas de cada organización,
debes especificar contra qué política de organización estás evaluando.
Utiliza el comando `docker scout config` para configurar tu organización de Docker.

```console
$ docker scout config organization <ORG_NAME>
    ✓ Successfully set organization to <ORG_NAME>
```

Ahora puedes ejecutar el comando `quickview` para obtener una visión general del estado de
cumplimiento de la imagen que acabas de compilar.
La imagen se evalúa frente a las configuraciones de políticas predeterminadas. Verás una salida similar a la siguiente:

```console
$ docker scout quickview

...
Policy status  FAILED  (2/6 policies met, 2 missing data)

  Status │                  Policy                      │           Results
─────────┼──────────────────────────────────────────────┼──────────────────────────────
  ✓      │ No copyleft licenses                         │    0 packages
  !      │ Default non-root user                        │
  !      │ No fixable critical or high vulnerabilities  │    2C    16H     0M     0L
  ✓      │ No high-profile vulnerabilities              │    0C     0H     0M     0L
  ?      │ No outdated base images                      │    No data
  ?      │ Supply chain attestations                    │    No data
```

Los signos de exclamación en la columna de estado indican una política infringida.
Los signos de interrogación indican que no hay suficientes metadatos para completar la evaluación.
Una marca de verificación indica conformidad.

## Paso 6: Mejorar el cumplimiento

El resultado del comando `quickview` muestra que hay margen de mejora.
Algunas de las políticas no pudieron evaluarse correctamente (`No data`)
porque la imagen carece de atestaciones de procedencia y SBOM.
La imagen también falló la comprobación en algunas de las evaluaciones.

La evaluación de políticas hace más que simplemente comprobar si hay vulnerabilidades.
Toma la política `Default non-root user` como ejemplo.
Esta política ayuda a mejorar la seguridad en tiempo de ejecución garantizando que
las imágenes no estén configuradas para ejecutarse como el superusuario `root` por defecto.

Para solucionar esta infracción de la política, edita el Dockerfile agregando una
instrucción `USER` que especifique un usuario que no sea root:

```diff
   CMD ["node","/app/app.js"]
   EXPOSE 3000
+ USER appuser
```

Además, para obtener un resultado de evaluación de políticas más completo,
tu imagen debería tener atestaciones SBOM y de procedencia adjuntas.
Docker Scout utiliza las atestaciones de procedencia para determinar cómo se compiló la
imagen a fin de proporcionar un mejor resultado de evaluación.

Antes de poder compilar una imagen con atestaciones,
debes habilitar el [almacén de imágenes containerd](/desktop/features/containerd/)
(o crear un constructor personalizado utilizando el controlador `docker-container`).
El almacén de imágenes clásico no admite listas de manifiestos,
que es la forma en que las atestaciones de procedencia se adjuntan a una imagen.

Abre **Settings** (Configuración) en Docker Desktop. En la sección **General**, asegúrate
de que la opción **Use containerd for pulling and storing images** esté marcada y, a continuación, selecciona **Apply** (Aplicar).
Ten en cuenta que cambiar los almacenes de imágenes oculta temporalmente las imágenes y los contenedores
del almacén de imágenes inactivo hasta que vuelvas a cambiar.

Con el almacén de imágenes de containerd habilitado, vuelve a compilar la imagen con una nueva etiqueta `v3`.
Esta vez, agrega las banderas `--provenance=true` y `--sbom=true`.

```console
$ docker build --provenance=true --sbom=true --push -t <ORG_NAME>/scout-demo:v3 .
```

## Paso 7: Ver en el Dashboard

Después de enviar la imagen actualizada con atestaciones, es hora de ver los
resultados desde otra perspectiva: el Docker Scout Dashboard.

1. Abre el [Docker Scout Dashboard](https://scout.docker.com/).
2. Inicia sesión con tu cuenta de Docker.
3. Selecciona **Images** (Imágenes) en la navegación de la izquierda.

La página de imágenes muestra tus repositorios habilitados en Scout.

Selecciona la fila de la imagen que deseas ver, en cualquier lugar de la fila excepto en un enlace, para abrir la barra lateral **Image details** (Detalles de la imagen).

La barra lateral muestra un resumen de cumplimiento para la etiqueta enviada más recientemente de un repositorio.

> [!NOTE]
>
> Si los resultados de las políticas aún no han aparecido, intenta actualizar la página.
> Podría tomar unos minutos antes de que aparezcan los resultados si es la
> primera vez que utilizas el Docker Scout Dashboard.

Regresa a la lista de imágenes y selecciona la versión de la imagen disponible en la columna **Most recent image** (Imagen más reciente).
Luego, en la parte superior derecha de la página, selecciona el botón **Update base image** (Actualizar imagen base) para inspeccionar la política.

Esta política comprueba si las imágenes base que utilizas están actualizadas.
Actualmente tiene un estado de no conformidad porque la imagen de ejemplo utiliza una versión antigua de `alpine` como imagen base.

Cierra el modal **Recommended fixes for base image** (Correcciones recomendadas para la imagen base). En el listado de políticas, selecciona el botón **View fixes** junto al nombre de la política para obtener detalles sobre la infracción y recomendaciones sobre cómo abordarla.

En este caso, la acción recomendada es habilitar la
[integración de GitHub de Docker Scout](/scout/integrations/source-code-management/github/),
que ayuda a mantener tus imágenes base actualizadas automáticamente.

> [!TIP]
>
> No puedes habilitar esta integración para la aplicación de demostración utilizada en esta guía.
> ¡Siéntete libre de enviar el código a un repositorio de GitHub que poseas y probar la integración allí!

## Resumen

Esta guía de inicio rápido ha mostrado de manera superficial algunas de las formas
en que Docker Scout puede apoyar la gestión de la cadena de suministro de software:

- Cómo habilitar Docker Scout para tus repositorios
- Analizar imágenes en busca de vulnerabilidades
- Políticas y cumplimiento
- Corregir vulnerabilidades y mejorar el cumplimiento

## ¿Qué sigue?

Hay mucho más por descubrir, desde integraciones de terceros hasta la personalización de políticas
y el monitoreo de entornos de ejecución en tiempo real.

Consulta las siguientes secciones:

- [Análisis de imágenes](/scout/explore/analysis/)
- [Fuentes de datos](/scout/advisory-db-sources)
- [Docker Scout Dashboard](/scout/dashboard)
- [Integraciones](/scout/integrations/)
- [Evaluación de políticas](/scout/policy/)

