Funcionalidades
Cada funcionalidad está diseñada con un único objetivo: un registro de auditoría a prueba de manipulaciones y listo para cumplir con la normativa en el que puedes confiar.
Encadenamiento criptográfico de hashes
Cada evento de auditoría se vincula criptográficamente con el anterior mediante SHA-256. El hash se calcula a partir del hash anterior, el canonical_payload y una marca temporal con precisión de milisegundos. Si una entrada se modifica, se elimina o se reordena, la cadena se rompe de inmediato.
- Hash SHA-256 de previous_hash + canonical_payload + timestamp
- Cadenas independientes por tenant, cada una con su propio bloque génesis
- Las marcas temporales con precisión de milisegundos evitan ataques de repetición
- API de verificación de la cadena para demostrar su integridad a los auditores
Block #3
prev d7e1c4
hash 9b4f2a
Block #4
prev 9b4f2a
hash f1c8e3
Block #5
prev f1c8e3
hash a02d71
Almacenamiento inmutable WORM
Los audit logs se escriben en S3 con Object Lock en modo de cumplimiento normativo. Una vez escritos, nadie puede modificarlos ni eliminarlos, ni siquiera los administradores de AuditRails. Los períodos de retención se aplican en la propia capa de almacenamiento, cumpliendo con los requisitos regulatorios más exigentes.
- S3 Object Lock en modo COMPLIANCE
- Retención configurable de 6 meses hasta 10 años, según los frameworks de cumplimiento que tengas activos
- Escrituras por lotes para optimizar costes sin sacrificar la durabilidad
- Metadatos de la cadena incluidos en cada lote de almacenamiento para su verificación
No one, including AuditRails admins, can shorten, edit, or delete a locked object before its retention window ends.
Búsqueda en tiempo real
Con la potencia de ClickHouse, nuestra capa de almacenamiento en caliente indexa cada campo para una búsqueda instantánea. Filtra por acción, actor, recurso, rango temporal o cualquier campo de metadatos. Búsqueda de texto completo con paginación integrada.
- Analítica basada en ClickHouse con partition pruning
- Filtrado por acción, actor_id, recurso, rango temporal y metadatos
- Búsqueda de texto completo (ILIKE) en todos los campos
- Consultas de texto completo rápidas sobre millones de eventos
Multi-tenancy
Cada API key se asocia a un tenant. Cada consulta a la base de datos, cada ruta en S3 y cada clave de caché aplican el aislamiento por tenant. No existe forma de acceder a los datos de otro tenant: se garantiza a nivel de infraestructura, no solo a nivel de aplicación.
- Asociación de API key a tenant_id en cada solicitud
- Particionado de ClickHouse por tenant_id para aislar las consultas
- Rutas de S3 organizadas por espacio de nombres según tenant_id
- Filtrado por tenant a nivel de fila en PostgreSQL en todas las consultas
Tenant A
isolated
Tenant B
isolated
Tenant C
isolated
Dashboard de cumplimiento
Un dashboard diseñado específicamente para la gestión de audit logs. Consulta volúmenes de eventos, busca en los logs, verifica la integridad de la cadena y exporta informes. El acceso basado en roles te permite dar a los auditores acceso de solo lectura sin exponer operaciones sensibles.
- Vista general con gráficos de volumen de eventos y las acciones más frecuentes
- Navegación por la cadena: recorre el hash chain hacia adelante y hacia atrás
- Exportación en CSV para entregar a los auditores
- Acceso basado en roles: roles de Administrador, Miembro y Auditor
Role-based access
Export
5 SDKs nativos
Ofrecemos SDKs nativos para los lenguajes y frameworks más populares. Cada SDK gestiona el procesamiento por lotes, los reintentos y el manejo de errores, para que te centres en qué registrar, no en cómo hacerlo.
- Node.js / TypeScript, @auditrails/node
- Python, auditrails (síncrono y asíncrono)
- Go, auditrails-go (procesamiento por lotes con goroutines, soporte de context)
- Java, auditrails-java (patrón builder, AutoCloseable)
- PHP, auditrails-php (cliente HTTP PSR-18, paquete Composer)
import { AuditRails } from '@auditrails/node';
const client = new AuditRails({ apiKey: process.env.AUDITRAILS_KEY });
await client.log({ action: 'user.created', actor_id: 'admin@acme.io' });Enriquecimiento automático
Cada evento se enriquece con datos del lado del servidor antes de almacenarse. La IP de origen, la geolocalización, los nombres de acción normalizados y las marcas temporales precisas se añaden automáticamente. Tú envías lo mínimo, nosotros completamos el resto.
- ULID generado por el servidor para cada entrada del log
- Captura de la IP de origen y resolución de geo-IP (país, ciudad)
- Normalización del nombre de la acción (minúsculas, separadas por puntos)
- Marcas temporales del servidor con precisión de milisegundos
You send
{
"action": "user.created",
"actor_id": "admin@acme.io"
}We store
{
"action": "user.created",
"actor_id": "admin@acme.io",
"log_id": "01J8X...",
"ip": "203.0.113.42",
"geo": "DE",
"ts": "...482Z"
}Fiabilidad y durabilidad
El pipeline de ingesta está diseñado para garantizar la durabilidad. Los eventos fluyen a través de SQS con colas de mensajes fallidos (dead-letter queues), la deduplicación evita el procesamiento por duplicado y las estrategias de reintento escalonadas garantizan que cada evento llegue al almacenamiento.
- Cola de SQS con dead-letter queue para los mensajes fallidos
- Deduplicación basada en Redis con TTL de 24 horas
- Reintento agresivo (5x) para las escrituras en almacenamiento en frío, 3x para el almacenamiento en caliente
- Degradación controlada: fail-open ante errores en rutas no críticas
¿Listo para verlo en acción?
Comienza tu prueba gratuita de 90 días. No se requiere tarjeta de crédito.