# Kit de práctica · Curso 12: CRA y cadena de suministro

## Qué es

`crear-portal-lab.sh`: un script que crea el proyecto **ficticio** `portal-lab` que se analiza en la terminal «generar y leer una SBOM» (Syft y Grype). Escribe dos ficheros: `portal-lab/package.json` y `portal-lab/package-lock.json` (tres dependencias de npm: `lodash`, `minimist` y `semver`, con sus dependencias). No hay datos reales ni personales.

Se entrega como script y no como proyecto ya creado a propósito: las versiones de `lodash` (4.17.20) y `minimist` (1.2.5) son **antiguas**, elegidas para que Grype tenga algo que contar, y un fichero `package-lock.json` suelto en el repositorio de la web podría activar alertas de las herramientas de seguridad de dependencias. **No instales ni ejecutes** este proyecto: solo se analiza.

## Requisitos

- Una consola bash (Linux, macOS, WSL o Git Bash). El script no necesita red ni npm.
- [Syft](https://github.com/anchore/syft) y [Grype](https://github.com/anchore/grype) instalados, para las órdenes de la diapositiva (el kit no los instala).

## Cómo usarlo

1. Descarga `crear-portal-lab.sh` a una carpeta vacía (`mkdir ~/lab && cd ~/lab`).
2. Ejecuta `bash crear-portal-lab.sh`: crea `./portal-lab/`. Si ya existe, se niega a sobrescribir.
3. Desde **esa misma carpeta** (la que contiene `portal-lab/`, no desde dentro de ella), pega los comandos de la diapositiva: `syft ./portal-lab -o …` y `grype sbom:./sbom.cdx.json`.

## Qué terminales cubre

| Diapositiva (título de la práctica) | Ficheros del kit | Qué esperar |
|---|---|---|
| Terminal: generar y leer una SBOM | `crear-portal-lab.sh` | Genera `sbom.cdx.json` y `sbom.spdx.json` con el mismo inventario. Cabe esperar los cinco paquetes del fichero de bloqueo (`lodash`, `lru-cache`, `minimist`, `semver` y `yallist`), sin comprobarlo con Syft. `grype` imprime una tabla cuyo contenido **depende de la base de vulnerabilidades de ese día**: no hay salida fija (la diapositiva tampoco la muestra). |

## Avisos

- **No se pudo ejecutar Syft ni Grype** al preparar el kit (no están instalados en la máquina de pruebas). Sí se comprobó que el script crea los dos ficheros, que son JSON válido, que `npm ls --package-lock-only` lista las tres dependencias directas y que el `package-lock.json` es idéntico al que genera npm 11. También, con `npm audit --package-lock-only` el 2026-10-11, que npm señala `lodash` 4.17.20 y `minimist` 1.2.5 como vulnerables.
- El título de la terminal muestra el prompt dentro de `~/portal-lab`, pero la orden usa `./portal-lab`: ejecútala desde la carpeta **superior**, como se indica arriba.
