70 lines
1.8 KiB
Markdown
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
|
|
```
|