Audit trail.

El registro inmutable de cada decisión de evaluación de Vericto: qué se guarda, cómo verlo y filtrarlo, cuánto tiempo se conserva y cómo exportarlo como evidencia para compliance.

Resumen

El audit trail es el registro cronológico e inmutable de cada decisión que Vericto toma cuando evalúa una query. Cada vez que una query pasa por el motor de reglas, Vericto anota qué se evaluó, qué regla se aplicó y cuál fue el resultado. Nada se sobrescribe ni se borra antes de tiempo: es un log de solo escritura pensado como fuente de verdad.

Este registro está diseñado para compliance. Si tu organización necesita demostrar que existen controles de acceso a datos y que se aplican de forma consistente, el audit trail es la evidencia directa que auditores de SOC2 o ISO 27001 esperan ver.

El audit trail es inmutable. Los eventos no se editan ni se eliminan manualmente, y borrar una base de datos no borra sus eventos: se conservan con el nombre de la base. Los registros más antiguos que la ventana de retención de tu plan dejan de devolverse, pero mientras están dentro de la ventana permanecen intactos tal como se registraron.

Qué se registra

Cada entrada del audit trail representa una decisión de evaluación y captura los siguientes campos:

  • Query: la sentencia evaluada. Puede aparecer completa o con literales normalizados según el modo de telemetría, y su texto puede estar cifrado en reposo.
  • Status: el resultado de la decisión, uno de blocked, allowed o warning.
  • Severidad: el nivel de riesgo asociado a la regla que disparó la decisión.
  • Rule code: el identificador de la regla aplicada, para rastrear exactamente qué control actuó.
  • Columnas sensibles: cuando la regla es VERICTO-085, la columna marcada que disparó la decisión y, si la query se enmascaró, la marca masked. En ese caso se guardan la query original y la reescrita, cifradas igual.
  • Database: la base de datos conectada sobre la que se evaluó la query.
  • Latencia: el tiempo que tardó la evaluación, útil para verificar el impacto de Vericto en tu ruta de queries.
  • Timestamp: el momento exacto de la decisión, base de la cronología.

La combinación de estos campos permite responder preguntas concretas: qué query se bloqueó, por qué regla, en qué base de datos y cuándo. Es justamente el tipo de trazabilidad que exige una auditoría de acceso a datos.

Cómo verlo

El audit trail se consulta en Dashboard → Audit. Ver el audit trail requiere la capacidad audit.view. La vista se organiza en dos pestañas:

Pestañas Timeline y Controls

  • Timeline: la cronología de decisiones, de la más reciente a la más antigua. Cada fila es un evento con su status, regla, base de datos, latencia y timestamp.
  • Controls: el mapeo de la actividad registrada a controles de compliance, pensado para preparar auditorías y responder a evaluadores.

Filtros y ventana temporal

La pestaña Timeline ofrece tres formas de acotar lo que ves:

  • Por status: filtra entre all, blocked, allowed y warning.
  • Búsqueda de texto: busca sobre lo visible en el navegador. Como el texto de la query puede estar cifrado o normalizado, la búsqueda opera sobre lo que se muestra, no sobre el contenido cifrado.
  • Ventana temporal: presets de 24h, 7d, 30d, 90d y All para enfocar el periodo que te interesa.

La ventana temporal que elijas no puede recuperar eventos anteriores a la retención de tu plan. Aunque selecciones All, el servidor solo devuelve eventos dentro de la ventana de retención vigente.

Retención por plan

Cuánto tiempo se conservan los eventos del audit trail depende de tu plan. La retención se aplica en el servidor: los eventos más antiguos que la ventana de tu plan simplemente no se devuelven en la consulta.

Plan Retención del audit trail
Free 7 días
Builder 30 días
Team 90 días
Enterprise Ilimitada, o la que fije el contrato

En Enterprise, el contrato puede fijar otros plazos: un historial más corto (minimización de datos) o reportes mensuales conservados más tiempo. El equipo de Vericto los aplica según el contrato y registra cada cambio con la referencia del contrato: el owner y los admins lo ven en Dashboard → Settings → Audit log, y los plazos vigentes en Dashboard → Uso. Si un plazo se acorta, la purga diaria elimina lo que quede fuera de él. Cuando el contrato termina, sus plazos terminan con él y el workspace vuelve a la retención de su plan.

Si necesitas conservar evidencia más allá de la ventana de tu plan, exporta el audit trail de forma periódica. Un export firmado sigue siendo válido incluso cuando los eventos originales salen de la ventana de retención. En Enterprise, los reportes mensuales conservan esa evidencia por ti.

La política en vigor, por API

Para tu auditor o tus herramientas de compliance, GET /api/v1/workspaces/:workspace_id/data-policy devuelve en JSON la política de datos que se aplica hoy a tu workspace: los plazos de esta tabla tal como los aplica la purga diaria, el contrato si lo hay, la gracia tras bajar de plan, los demás plazos y qué texto de query se guarda. Cada número sale de la misma configuración que usan la purga y el dashboard; no hay una copia aparte.

GET /api/v1/workspaces/:workspace_id/data-policy API Key o sesión

Política de datos en vigor del workspace. Con la sesión de cualquier miembro (capacidad dataPolicy.read, rol viewer o superior) o con una API key del workspace con el scope audit:read.

curl -H "X-API-Key: $VERICTO_API_KEY" \
  https://api.vericto.com/api/v1/workspaces/$WORKSPACE_ID/data-policy

Respuesta de ejemplo, plan Team:

{
  "workspace_id": "6f1c…",
  "plan": "team",
  "policy_version": "b2442eaeef61ff7f",
  "retention_days": 90,
  "audit_retention_days": 90,
  "unlimited": false,
  "report_retention_days": null,
  "security_events_retention_days": 365,
  "export_retention_days": 7,
  "support_attachment_retention_days": 180,
  "downgrade_grace_days": 30,
  "query_text": "sanitized",
  "grace": null,
  "source": "plan",
  "contract_ref": null,
  "enforced_by": { "job": "data-retention", "frequency": "daily" },
  "documentation_url": "https://vericto.com/docs/audit-trail#data-policy"
}
Campo Qué dice
retention_days, audit_retention_days, unlimited Días de historial de queries y de CI: la ventana del audit trail, la misma de la tabla de arriba. Es una sola ventana, así que los dos campos valen siempre lo mismo; audit_retention_days es el nombre que usa la página de Uso. null es sin límite, y entonces unlimited es true.
report_retention_days Días que se conserva cada reporte mensual de cumplimiento: 400 en Enterprise, o lo que fije el contrato. null en los planes sin reportes mensuales.
security_events_retention_days, export_retention_days, support_attachment_retention_days Eventos de seguridad de la cuenta (inicios de sesión, MFA, intentos fallidos), archivos de exportación del audit trail y adjuntos de feedback y de tickets de soporte, en días. Son iguales en todos los planes.
downgrade_grace_days, grace Al bajar a un plan con menos retención, el historial conserva la ventana anterior durante downgrade_grace_days días. Mientras dura, grace dice qué ventana se conserva, hasta cuándo y cuál aplica después; si no hay gracia, es null.
query_text Qué texto de query se guarda: raw (la query completa, cifrada) o sanitized (sin los valores literales), según el modo de telemetría del workspace. Ver Privacidad de telemetría.
source, contract_ref plan, o contract cuando un contrato Enterprise fija los plazos, con su referencia en contract_ref.
policy_version Huella de los plazos comunes a todos los workspaces. Cambia solo cuando cambia la política publicada, así que sirve para detectar un cambio entre dos auditorías.
enforced_by Quién aplica los plazos: el job data-retention, una vez al día. Los reportes mensuales los purga su ejecución mensual.

Otro workspace, o un workspace del que no eres miembro, responde 404. La respuesta lleva Cache-Control: private, max-age=300 y un ETag: con If-None-Match responde 304 si nada cambió. Una API key puede hacer 60 solicitudes por minuto. Las keys de runtime (proxy, telemetría, CLI) no necesitan este scope.

Exportación

Puedes exportar el audit trail en formato CSV o JSON. La exportación requiere el plan Team o superior, a través de la capacidad audit.export.

Exportación asíncrona

La exportación es asíncrona: al solicitarla, Vericto genera el archivo en segundo plano y lo pone disponible para descarga cuando está listo. En exportaciones grandes esto evita bloquear la interfaz mientras se prepara el archivo.

Reportes firmados con Ed25519

Los reportes exportados se firman con Ed25519, por lo que son verificables offline: cualquiera puede comprobar que el archivo no fue alterado desde que Vericto lo generó, sin necesidad de contactar con nuestros servidores. El procedimiento de verificación se documenta en detalle en la guía de verificación de reportes.

Consulta Verificar reportes para el paso a paso de la verificación offline de la firma Ed25519.

Reporte PDF de cumplimiento

Cada exportación incluye, además del archivo de datos, un reporte PDF del mismo período: resumen de queries evaluadas, bloqueadas y marcadas, reglas más activadas, el mapeo a controles SOC 2 e ISO 27001, la configuración del workspace al inicio y al final del período, y un anexo con el hash y la firma del archivo de datos. El PDF se firma con Ed25519 como el archivo de datos y se descarga desde Dashboard → Reportes, en el idioma y la zona horaria de quien lo pidió.

Reporte mensual automático (Enterprise)

En Enterprise, el día 1 de cada mes Vericto genera el reporte PDF firmado del mes anterior, en el idioma y la zona horaria del owner del workspace, sin que nadie tenga que exportarlo. Cada reporte se conserva 13 meses (o lo que fije el contrato): doce reportes cubren un período de auditoría SOC 2 Tipo II completo, incluso cuando los eventos originales ya salieron de la retención. Se descargan desde Dashboard → Reportes con la capacidad audit.monthlyReports (rol member o superior).

Compliance: SOC2 e ISO 27001

El audit trail está pensado como fuente de evidencia para marcos de compliance. Su carácter inmutable y su trazabilidad por decisión responden directamente a los controles que evalúan auditores de SOC2 e ISO 27001.

  • Control de acceso a datos: cada decisión de blocked, allowed o warning documenta que las políticas de acceso se aplican de forma consistente.
  • Trazabilidad: el rule code y el timestamp permiten reconstruir qué control actuó y cuándo, para cualquier query registrada.
  • Evidencia exportable: los exports y su reporte PDF, firmados con Ed25519, sirven como evidencia entregable a auditores, verificable de forma independiente. En Enterprise llega además un reporte cada mes.

La pestaña Controls del dashboard ayuda a alinear la actividad registrada con los controles concretos que tu auditoría necesita cubrir.

Preguntas frecuentes

¿Se puede editar o borrar un evento del audit trail?

No. El audit trail es inmutable: los eventos no se editan ni se eliminan manualmente. Borrar una base de datos tampoco borra sus eventos: se conservan, con el nombre de la base, hasta que vence la retención. Los registros dejan de devolverse cuando quedan fuera de la ventana de retención de tu plan, pero mientras están dentro permanecen tal como se registraron.

¿Por qué no veo eventos antiguos aunque seleccione la ventana All?

La retención se aplica en el servidor. Aunque elijas All, solo se devuelven eventos dentro de la ventana de tu plan: 7 días en Free, 30 en Builder, 90 en Team e ilimitada en Enterprise, salvo que el contrato fije otro plazo. Para conservar más historia, exporta periódicamente.

¿Quién puede ver y quién puede exportar el audit trail?

Ver el audit trail requiere la capacidad audit.view. Exportar en CSV o JSON requiere la capacidad audit.export, disponible en el plan Team o superior.

¿Por qué la búsqueda de texto no encuentra algunas queries?

La búsqueda de texto opera del lado del cliente, sobre lo que se muestra en pantalla. Si el texto de la query está cifrado o aparece con literales normalizados según el modo de telemetría, la búsqueda solo coincide con lo visible, no con el contenido cifrado.

¿Cómo verifico que un reporte exportado no fue alterado?

Cada export se firma con Ed25519 y se verifica offline con la clave pública de Vericto. El procedimiento completo está en la guía Verificar reportes.