Registros de auditoría
Los registros de auditoría capturan cada acción que cambia el estado en tu organización — asignaciones de roles, ediciones de motor, emisión de claves API, cambios de facturación — y las muestran en una línea de tiempo 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 afectada (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 de tiempo | UTC, más un número de secuencia monotónica para detectar huecos |
Solo IDs, por diseño
La columna de metadatos almacena IDs, no valores legibles para las personas. La UI hace join con los nombres actuales al momento de la lectura, así que cambiarle el nombre a un motor o a un usuario no reescribe el historial. Además, evita conflictos con el derecho al borrado del GDPR en las filas de auditoría: no hay contenido que redactar.
Acciones cubiertas#
Los eventos se agrupan en categorías que coinciden con el filtro del dashboard.
| 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) |
Cómo acceder al registro#
La entrada del Registro de auditoría siempre aparece en Configuración, en Admin. Sin el derecho, la página muestra "El registro de auditoría no está incluido en tu plan" en lugar de la cronología. Dentro, encontrarás:
- Lista filtrable — acótala por Acción, Actor y Período (un valor preestablecido como Últimos 7 días o un rango de fechas Desde / Hasta). Las fechas futuras están bloqueadas.
- Cargar eventos anteriores — primero aparecen los eventos más recientes; haz clic en Cargar eventos anteriores al final de la lista para cargar la siguiente página.
- Detalle del evento — haz clic en cualquier fila para expandirla ahí mismo y ver todos los metadatos, el ID de la solicitud, la IP y el agente de usuario.
- Vistas para compartir — 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:
- Habilitación — la función audit-logs debe estar activada para la organización (plan Enterprise).
- Permiso — el rol del usuario debe incluir
org:view_audit_logs. El rol predeterminado Full Access lo incluye por defecto; los Owners siempre lo tienen.
Los miembros sin ese permiso verán una página de "sin acceso" en lugar de la línea de tiempo. Los miembros de una organización sin la habilitación verán un paywall.
Si tu plan Enterprise vence
Los registros de auditoría forman parte del mismo derecho del nivel RBAC. Los eventos anteriores permanecen en la base de datos, pero la página muestra "El registro de auditoría no está incluido en tu plan" y los endpoints de lectura devuelven 403 hasta que se restablezca el plan.
Resistencia a manipulaciones#
Los registros de auditoría no son solo un registro: son realmente difíciles de alterar después del hecho.
- Append-only a nivel de base de datos. La migración que instala la tabla ejecuta
REVOKE UPDATE, DELETE, TRUNCATEen el rol de API. Cualquier ruta futura de código — un bug, un endpoint nuevo o incluso una inyección SQL — Postgres la rechaza antes de que pueda modificar una fila. - Secuencia monotónica. Cada fila incluye una columna
seqestrictamente creciente. Un auditor que revise la secuencia puede detectar eliminaciones como huecos.
Esto es suficiente para controles estilo SOC 2. No protege frente a un atacante con credenciales directas de la base de datos de producción; hay posturas más sólidas disponibles a pedido (rol propietario separado, espejo WORM).
Retención#
Los eventos de auditoría se conservan indefinidamente de forma predeterminada. En Enterprise hay ventanas de retención personalizadas, normalmente de 1, 3 o 7 años. Contáctanos si necesitas una política de retención específica para requisitos de cumplimiento o cuestionarios de seguridad.
Qué no está cubierto#
Estos son 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 poco frecuentes de fallo (cuando una acción se completa pero luego falla la inserción de auditoría), la acción puede ocurrir sin un evento correspondiente.
- Algunos tipos de acción todavía no están conectados. Los cambios de membresía de motor, conectar / actualizar / desconectar integraciones, las ediciones de configuración del modelo, los cambios de suscripción de facturación y las operaciones masivas de contenido (carga 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 existentes en cuanto se conecten. - Las lecturas no se auditan. Ver el propio registro de auditoría, explorar los registros 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 en el dashboard. La exportación CSV, el webhook de SIEM y el espejo 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 aparecen en una sola cronología. Filtra por acción o actor para acotar la vista.
- No hay seguimiento en vivo. No hay botón de Actualizar ni flujo de WebSocket; vuelve a cargar la página para ver los eventos más recientes.