ADR-026 — Security architecture

Architecture decision record — status: Accepted.

Source: docs/adr/ADR-026-security.md

ADR-026: Security architecture

Estado

Accepted — 2026-08-23

Contexto

IVPrior maneja invoices, emails y promesas de pago de PYMES. Trust/accuracy es el riesgo de portafolio (DOC-001). Security by design, no un bolt-on.

Decisión

Principios: least privilege, defense in depth, secure by default, aislamiento de Organization (ADR-018).

Controles V1:

ÁreaControl
AuthN/ZADR-023; no endpoints AR anónimos
TenantFiltro organizationId obligatorio; tests de aislamiento
SecretsADR-015; mailbox tokens cifrados at rest
HTTPHTTPS; headers (CSP, HSTS) en web; CORS explícito
InputValidación Zod/DTO en frontera; no raw SQL concatenado
EmailRate limits, opt-out, denylist de tono (ADR-020)
AINo inventar cifras; no mandar PII innecesaria al modelo (ADR-019)
AuditToda Message y cambio sensible (ADR-034)
Depsmake check incluye audit de dependencias cuando exista CI
DatosNo loguear cuerpos de email ni passwords

OWASP Top 10 como checklist de brief/PR, no como certificación.

V1 no persigue SOC2/PCI. Payment links (V1.5) usarán Stripe (PCI lo lleva el vendor).

Consecuencias

  • Spikes de mailbox/AI deben listar datos que salen del perímetro.
  • Incidentes de accuracy (monto/fecha inventada) se tratan como incidente de producto, no solo de modelo.