El registro de auditoría registra las acciones sensibles de tu organización: inicios de sesión y fallos, cambios de miembros y roles, cambios de credenciales y claves, comandos de alto impacto, acciones de firmware, eliminaciones, cambios de configuración y más. La aplicación nunca edita las filas. Usa el registro para responder a «¿quién cambió esto y cuándo?», para apoyar una investigación y como evidencia para una auditoría. La lista de acciones registradas está en Qué se audita.
Abrir el registro
Abre Audit Logs en la dirección /admin/audit-logs de tu organización. Indica «Registro a prueba de manipulaciones de las acciones realizadas en esta organización». Necesitas el rol Admin o superior.
Los eventos más recientes aparecen primero. Selecciona una fila para abrir Audit Log Detail.
Qué contiene una fila
| Columna o campo | Significado |
|---|---|
| Time | Cuándo ocurrió. |
| Actor | Quién lo hizo: un miembro, el sistema, una clave de API o un servicio. El detalle añade Actor type y Actor ID. |
| On behalf of | Cuando alguien actuó en nombre de otra persona, la persona en cuyo nombre actuó. El actor sigue siendo el verdadero actor. |
| Action | Lo que se hizo, por ejemplo iot_device.credential.rotated o auth.login_failed. |
| Severity | Low, Medium, High o Critical. |
| Resource | Resource type y Resource ID de lo que se cambió, por ejemplo iot_device y el id del dispositivo. |
| Metadata | Datos adicionales, como los nombres de los campos modificados. Los secretos, contraseñas, tokens y claves nunca se escriben. |
| IP y User agent | Desde dónde llegó la solicitud. |
| Integrity (hash chain) | Prev hash y Row hash de la fila (véase más abajo). |
Los eventos de alto y crítico impacto también disparan el webhook audit.high_risk, para que puedas reenviarlos a tus propias herramientas de seguridad. Consulta Webhooks.
Buscar eventos
Usa los filtros situados encima de la tabla:
| Filtro | Uso |
|---|---|
| Actor | Buscar por correo… |
| Action | Parte del nombre de la acción, por ejemplo auth.login o iot_rpc |
| Severity | Una severidad |
| Date range | From y To |
Clear filters los restablece. Por API también puedes filtrar por tipo de recurso e id de recurso:
GET /tenant/{tenantId}/api/audit-logs?resourceType=iot_device&resourceId=<deviceId>&fromDate=2026-11-01&toDate=2026-11-08&page=1&pageSize=100
pageSize es como máximo 100 por defecto; Max Page Size en la configuración del registro de auditoría puede subirlo hasta 500.
Exportar
Export CSV descarga el registro del intervalo de fechas del filtro. Por API puedes elegir CSV o NDJSON y limitar la exportación a un solo actor, por ejemplo para atender la solicitud de una persona que quiere ver sus datos:
GET /tenant/{tenantId}/api/audit-logs/export?format=ndjson&actorId=<userId>&fromDate=2026-01-01&toDate=2026-11-08
Evidencia de manipulación
Cada fila está enlazada con la fila anterior de tu organización mediante una cadena de hashes: el hash de una fila cubre su contenido y el hash de la fila anterior. Cualquier cambio o eliminación de una fila conservada rompe la cadena. Para comprobar la cadena, llama a:
GET /tenant/{tenantId}/api/audit-logs/verify
La respuesta es { "ok": true, "checked": <rows> } si la cadena está íntegra, o "ok": false con brokenAt indicando la primera fila que no encaja. Tras eliminar filas antiguas por la retención, la primera fila conservada apunta a una fila que ya no existe; la comprobación acepta ese punto de inicio.
Retención
Abre Audit Logs > configuración (Audit Log Settings):
| Ajuste | Valor por defecto | Significado |
|---|---|---|
| Retention Period (days) | 0 | Tiempo que se conservan las filas antes de que la purga nocturna las elimine. 0 las conserva para siempre. Ajústalo según tus necesidades de cumplimiento, por ejemplo 2.555 días para una retención de siete años. |
| Max Page Size | 100 | La página más grande que puede pedir un cliente de la API, como máximo 500. |
El registro de auditoría se genera en todos los planes. Si un plan no incluye la lectura del registro, la lista y la exportación se rechazan hasta que el plan vuelva a incluirla; no se pierde nada mientras tanto.
Privacidad
Un propietario puede anonimizar a una persona en el registro: se retira el vínculo entre las filas y la persona, mientras las acciones en sí permanecen y la cadena sigue verificándose. Esto forma parte de la respuesta a una solicitud de supresión; consulta Privacidad y supresión de datos.
POST /tenant/{tenantId}/api/audit-logs/anonymize
Content-Type: application/json
{ "actorId": "<userId>" }
Permisos
| Acción | Rol por defecto |
|---|---|
| Leer el registro | Admin |
| Exportar | Admin |
| Verificar la cadena | Admin |
| Anonimizar a una persona | Owner |
| Purgar ahora las filas caducadas | Owner |
Los eventos propios de un miembro también aparecen en su página de miembro, en la pestaña Activity. Consulta Usuarios y roles.

