Files
dh-inspeccion-v2/docs/PHASE_A7.md
T

70 lines
1.8 KiB
Markdown

# DH Inspección V2 — Fase A7
## Versión
```text
v0.7.0 · Fase A7 · Integración y cierre de Fase A
```
## Objetivo
A7 no agrega módulos funcionales ni modifica tablas. Cierra la Fase A mediante
pruebas integradas sobre el despliegue real, controles de seguridad y un backup
post-fase verificable.
## Aceptación autenticada
`scripts/phase-a-acceptance.sh` solicita usuario y contraseña en la terminal.
La contraseña se ingresa sin mostrarse, se utiliza para un único login y no se
escribe en logs ni archivos persistentes.
La prueba valida:
1. `401` sin sesión en dashboard, usuarios, roles y auditoría;
2. respuesta genérica ante un usuario inexistente;
3. login administrativo válido;
4. tres cookies con `Secure` y `SameSite=Strict`;
5. dos cookies de autenticación con `HttpOnly`;
6. `200` autenticado en `/auth/me`, dashboard, usuarios, roles y auditoría;
7. `403 CSRF_INVALID` en una escritura sin token CSRF;
8. logout válido con CSRF;
9. `401` después de revocar la sesión.
La prueba no crea, edita ni elimina usuarios o roles. Sólo genera los eventos
de autenticación y seguridad esperables en auditoría.
## Backup post-fase
`scripts/backup-phase-a.sh` crea una carpeta privada bajo
`/var/www/dh-backup/` con:
```text
source.tar.gz
database.dump
.env
nginx-site.conf o NGINX_CONFIG_NOT_FOUND.txt
MANIFEST.txt
SHA256SUMS
```
El TAR excluye `.env`, ZIP, `node_modules`, `dist` y archivos incrementales de
TypeScript. El dump usa formato custom de PostgreSQL.
## Verificación
`scripts/verify-backup.sh` es no destructivo y comprueba:
- archivos obligatorios;
- permisos `600` del `.env` respaldado;
- todos los SHA-256;
- integridad y exclusiones del TAR;
- legibilidad del catálogo de `database.dump` mediante `pg_restore --list`.
## Migraciones
A7 no incluye migraciones. El despliegue debe confirmar:
```text
Pending migrations: no
```