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 sección Registros de auditoría solo aparece en la barra lateral de Organización cuando la funcionalidad está activada para tu organización. Dentro encontrarás:
- Lista con filtros — filtra por actor, categoría de acción, tipo de objetivo y rango de fechas. Las fechas futuras están bloqueadas y el límite superior siempre es ≥ que el inferior.
- Desplazamiento infinito — primero se muestran los eventos más recientes; los anteriores se cargan a medida que haces scroll.
- Panel de detalles — haz clic en cualquier fila para ver todos los metadatos, el ID de la solicitud, la IP y el user agent.
- Actualizar — recupera los eventos más recientes sin perder tu selección de filtros. 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 forman parte del mismo entitlement del nivel RBAC. Los eventos anteriores permanecen en la base de datos, pero la página se oculta y los endpoints de lectura devuelven 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 vista por motor. Todos los eventos de auditoría de la organización aparecen en una única cronología. Filtra por tipo de objetivo o por ID de objetivo para acotar.
- No hay seguimiento en tiempo real. La lista se actualiza bajo demanda o al hacer clic en Actualizar; no hay stream por WebSocket.
