Registros de auditoría
Los registros de auditoría recogen todas las acciones que cambian el estado en tu organización —asignaciones de roles, ediciones de motores, emisión de claves API, cambios de facturación— y las muestran en una cronología con búsqueda y filtros. Disponible en el plan Enterprise junto con Roles y permisos.
El registro es append-only a nivel de base de datos: la conexión de la aplicación no puede actualizar, eliminar ni truncar filas de auditoría. Lo que se escribe, se queda escrito.
Qué se registra#
Cada evento captura el actor, la acción, el objetivo y el contexto HTTP en el que llegó la solicitud.
| Campo | Notas |
|---|---|
| Actor | El usuario o la clave API que realizó la acción |
| Acción | Un valor tipado como engine.created o member.role_changed |
| Objetivo | La entidad sobre la que se actuó (por ejemplo, un motor, un rol o un elemento del glosario) |
| Metadatos | IDs de entidades relacionadas; nunca nombres, correos electrónicos ni fragmentos de contenido |
| Contexto de la solicitud | request_id, dirección IP y user agent; se capturan cuando la llamada llega por HTTP |
| Marca temporal | UTC, más un número de secuencia monotónico para detectar huecos |
Solo IDs, por diseño
La columna de metadatos almacena IDs, no valores legibles. La interfaz resuelve los nombres actuales en el momento de lectura, así que cambiar el nombre de un motor o de un usuario no reescribe el historial. Además, evita conflictos entre las filas de auditoría y el derecho de supresión del RGPD: no hay contenido que redactar.
Acciones cubiertas#
Los eventos se agrupan en categorías que coinciden con el filtro del panel.
| Categoría | Acciones disponibles hoy |
|---|---|
| Organización | org.created, org.settings_updated, org.ownership_transferred, org.deleted |
| Miembros | member.invited, member.removed, member.role_changed |
| Roles | role.created, role.updated, role.deleted |
| Motores | engine.created, engine.updated, engine.deleted |
| Claves API | api_key.created, api_key.revoked |
| Contenido | glossary_item.*, instruction.*, brand_voice.* (solo operaciones individuales) |
Acceso al registro#
La entrada del registro de auditoría aparece siempre en Configuración, dentro de Admin. Sin ese derecho, la página muestra "El registro de auditoría no está disponible en tu plan" en lugar de la cronología. Dentro encontrarás:
- Lista filtrable — puedes acotarla por Acción, Actor y Periodo (un ajuste predefinido como Últimos 7 días o un intervalo de fechas Desde / Hasta). Las fechas futuras no están permitidas.
- Cargar eventos anteriores — los eventos más recientes aparecen primero; haz clic en Cargar eventos anteriores al final de la lista para cargar la página siguiente.
- Detalle del evento — haz clic en cualquier fila para desplegarla al instante y ver todos los metadatos, el ID de solicitud, la IP y el agente de usuario.
- Vistas compartibles — los filtros y el evento abierto se reflejan en la URL, así que cualquier vista se puede compartir.
Quién puede verlo#
Hay dos requisitos para acceder a la página:
- Entitlement — la funcionalidad audit-logs debe estar habilitada para la organización (plan Enterprise).
- Permiso — el rol del usuario debe incluir
org:view_audit_logs. El rol predeterminado Acceso completo lo incluye por defecto; los propietarios siempre lo tienen.
Los miembros sin ese permiso verán una página de "sin acceso" en lugar de la cronología. Los miembros de una organización sin ese entitlement verán un paywall.
Si tu plan Enterprise vence
Los registros de auditoría están sujetos al mismo derecho por nivel de RBAC. Los eventos anteriores permanecen en la base de datos, pero la página muestra "El registro de auditoría no está disponible en tu plan" y los endpoints de lectura devuelven un 403 hasta que se restablece el plan.
Resistencia a manipulaciones#
Los registros de auditoría no son solo un registro: son realmente difíciles de alterar a posteriori.
- Append-only a nivel de base de datos. La migración que instala la tabla ejecuta
REVOKE UPDATE, DELETE, TRUNCATEsobre el rol de API. Cualquier ruta de código futura —un error, un endpoint nuevo, incluso una inyección SQL— será rechazada por Postgres antes de poder modificar una fila. - Secuencia monotónica. Cada fila lleva una columna
seqestrictamente creciente. Un auditor que revise la secuencia puede detectar eliminaciones en forma de huecos.
Esto es suficiente para controles de tipo SOC 2. No protege frente a un atacante con credenciales directas de la base de datos de producción; si necesitas una postura más sólida (rol de propietario independiente, espejo WORM), está disponible bajo petición.
Retención#
Los eventos de auditoría se conservan indefinidamente por defecto. En Enterprise hay ventanas de retención personalizadas —normalmente de 1, 3 o 7 años—. Ponte en contacto si necesitas una política de retención específica para cumplimiento o cuestionarios de seguridad.
Lo que no cubre#
Algunos límites deliberados de la v1 que conviene tener en cuenta:
- Emisión best-effort, no transaccional. La emisión transaccional está en la hoja de ruta a corto plazo. El evento de auditoría se escribe después de la acción que describe, no dentro de la misma transacción de base de datos. En casos puntuales de error (una acción que se completa correctamente y después falla la inserción del evento de auditoría), la acción puede producirse sin un evento correspondiente.
- Algunos tipos de acción aún no están disponibles. Los cambios de pertenencia a motores, connect / update / disconnect de integraciones, las ediciones de configuración del modelo, los cambios de suscripción de facturación y las operaciones masivas de contenido (subida de CSV,
createMany/updateMany/deleteMany) todavía no generan eventos. El vocabulario de acciones ya está reservado para que aparezcan en las categorías de filtro actuales en cuanto se activen. - Las lecturas no se auditan. Ver el propio registro de auditoría, consultar los logs de solicitudes del motor o descargar un glosario no genera eventos. Solo lo hacen las acciones que cambian el estado.
- Todavía no hay exportaciones. Los datos de auditoría se muestran a través del panel. La exportación CSV, el webhook SIEM y la réplica en S3 están en la hoja de ruta; avísanos si los necesitas.
- No hay una vista por motor. Todos los eventos de auditoría de la organización se muestran en una única cronología. Filtra por acción o por actor para acotar la vista.
- No hay seguimiento en tiempo real. No hay botón de Actualizar ni flujo de WebSocket: recarga la página para ver los eventos más recientes.