# Kit del curso 13 · Pruebas de seguridad en la nube

## Contenido

| Fichero | Para qué sirve |
|---|---|
| `iam/politica.json` | Política de IAM inventada, con el formato real de AWS (`Version` 2012-10-17). No pertenece a ninguna cuenta. El identificador `123456789012` es el de cuenta de ejemplo de la documentación de AWS |
| `imds-simulado/imds_simulado.py` | **Opcional.** Simulador didáctico de IMDSv2 solo en 127.0.0.1 (ver más abajo). No es AWS |

## Requisitos

- `grep` y `sort` para la política. Python 3 y `curl` para el simulador.

## Terminales que cubre

1. **Terminal: buscar permisos de escalada en una política IAM** (diapositiva «Rutas de escalada de privilegios en IAM»): `cd iam` y ejecuta los dos `grep`. Debe marcar las líneas 6, 7 y 11 y mostrar `ec2:RunInstances` e `iam:PassRole`. Son candidatos a revisar, no hallazgos: la combinación es lo que importa. Variará: nada.
2. **Terminal: sesión de IMDSv2 en tu instancia** (diapositiva «Metadatos de instancia e IMDSv2»): la terminal real es contra la instancia EC2 propia (`169.254.169.254`). Si no tienes una, puedes repetir **el mecanismo** con el simulador:
   - Terminal A: `python3 imds-simulado/imds_simulado.py` (escucha en 127.0.0.1:8169).
   - Terminal B: usa `IMDS=http://127.0.0.1:8169` en lugar de `http://169.254.169.254` y ejecuta el resto de las órdenes tal cual.
   - Resultado: el token se pide con PUT y un TTL; con él, `ami-id` devuelve `ami-0abcdef1234567890` (el valor de ejemplo de la documentación de AWS); sin token, 401.
   - Variará: el token es aleatorio. El simulador solo implementa `ami-id` y un listado mínimo; no simula credenciales, roles ni datos de cuenta.

## No reproducible con ficheros

- **Terminal: quién soy y qué permitirían mis políticas** (diapositiva «Enumeración de permisos IAM en laboratorio propio»): necesita AWS CLI y una cuenta propia de laboratorio. La salida de la diapositiva usa la cuenta y el usuario ficticios de la documentación de AWS. Qué hacer: la misma orden en tu cuenta de laboratorio; el resultado (`allowed`, `explicitDeny`, `implicitDeny`) dependerá de tus políticas.
- **Terminal: una clave borrada sigue en el historial de git** («Claves y secretos expuestos»): no usa ficheros del kit; crea su propio repositorio de práctica con una clave de ejemplo de AWS. Variarán los identificadores de commit.
