El marco del sistema, probado. Sin solutions.md hasta entregar.
Ejercicio 1 — Las bases legales
- Clasifica cada dato de TU TicketFlow con su base legal (contrato/consentimiento/interés legítimo/obligación legal): email, teléfono opcional, historial de compras, IP del login, la cookie de analítica, la foto del perfil del org. La tabla del mapa con la columna de base.
- El consentimiento revocable: implementa la evidencia del opt-in: fecha + versión del texto aceptado (el "dijo sí a ESTA versión" del §4) + la revocación con audit. Test: consiente → revoca → el marketing deja de tocarlo (¿el flag o el filtro? decide y documenta).
- La excepción del dinero: el usuario pide supresión total: ¿qué se borra y qué se ANONIMIZA (¿el email del ticket? ¿el ledger?)? Implementa el flujo del 23 extendido: el borrado del perfil + la anonimización del histórico conservando la facturación. El test: el export posterior NO contiene PII pero el ledger del 08 sigue cuadrando.
Ejercicio 2 — El mapa del Art. 30
- Completa el mapa (§2) para TU sistema: cada tabla del 00b con dato/dónde/fin/base/retención/acceso. Las tablas sin clasificar: ¿el log del 45 (¿PII? ¿base?)? ¿la caché del 38 con perfil?
- El PII en el log y en la caché: revisa (45/38) que el log lleve identificadores y la caché de perfil tenga purge por usuario: el test del cumplimiento: un grep/scan de las claves de caché y de los logs de ejemplo SIN patrones de email/teléfono. Implementa el guard.
- El documento:
docs/compliance/mapa-datos.md(48) con la tabla completa + la fecha de revisión trimestral + el dueño. El doc que el DPO lee primero.
Ejercicio 3 — Las evidencias SOC 2
- Los reportes del sistema: escribe las 3 consultas de evidencia (§3): el reporte de accesos (¿quién escaló permisos este trimestre?), el reporte de secretos (¿cuándo rotaron y quién?), el reporte de cambios (¿qué PRs llegaron a prod sin review? — ¿el pipeline del 41 lo permite? verifica). Cada una como query/script del repo.
- La cadena de cambios: el test del control: intenta (en lab) llegar a prod sin PR (¿el push directo? ¿el kubectl del 43?): ¿qué lo bloquea (¿la protección de branch? ¿el pipeline?)? Documenta los controles de cambio con su evidencia.
- El gap honesto: ¿qué control del §3 NO tienes (¿el DR drill? ¿el access review trimestral?)? Crea el issue con dueño/fecha (49) — el gap documentado es un control en camino; el oculto es el hallazgo del auditor.
Ejercicio 4 — El audit log y la brecha
- Las consultas del auditor (§4): implementalas como scripts/endpoint de admin (con el rol del 21): "¿quién vio/exportó los datos del usuario X?", "¿quién cambió el precio del evento Y?", "¿quién descargó el export este mes?". Cada consulta con su test (la 33: el admin correcto la ejecuta, el otro 403).
- La retención como job (31): el purgado automático del audit log >12 meses (frío) y del dato de marketing revocado. El test con FakeClock: el dato que caduca se purga con su fila de audit ("se purgó por retención").
- El runbook de brecha (72 h): escribe
docs/compliance/runbook-brecha.md: la cronología tipo (detectar/acotar/contener/notificar/aprender) con los comandos de cada paso (las alertas del 46, el protocolo del 47, la plantilla de notificación) y los umbrales de quién se notifica (¿regulador? ¿afectados? la decisión documentada).
Ejercicio 5 — El DPO interno
- El linter del cumplimiento: el test que falla si un campo de texto libre (¿un nuevo CharField/email?) entra a una tabla del mapa sin anotación de base/retención (¿el Meta del modelo con
data_classification = {...}?). Implementa el guard del esquema. - La retención y el export como sistema: los jobs del 31 (el purgado del ejercicio 4) + el export del 23 + el audit de cada ejecución: el "DPO interno" en un diagrama (ASCII) de los procesos automáticos de cumplimiento con sus evidencias.
- El cierre del módulo: la checklist de cumplimiento de TicketFlow (los 10 ítems: bases legales, mapa, retención, derechos, brecha, evidencias...) con el estado real de cada uno (/pendiente/issue). El documento de autoevaluación que el auditor (o el 57) pide.
Entrega
Pega el mapa con bases legales, las 3 evidencias SOC 2, el runbook de brecha y la checklist final. Después: Lección 57 — Proyecto final.