Transmisión de Logs
Auris registra logs de auditoría para cada evento significativo en tu tenant: inicios de sesión, cambios de usuario, asignaciones de roles, comprobaciones de permisos, llamadas a la API y acciones administrativas. La transmisión de logs te permite exportar estos eventos en tiempo real a servicios externos de registro y análisis, proporcionándote una vista unificada de la actividad de autenticación junto con los logs de tu aplicación.
Esta guía cubre los destinos admitidos, cómo configurar cada uno, el formato de las entradas de log y cómo verificar la entrega.
Por Qué Usar la Transmisión de Logs
Aunque la Consola de Auris proporciona un visor de logs de auditoría integrado con búsqueda y filtros, las organizaciones a menudo necesitan:
-
Centralizar logs de todos los sistemas (aplicación, infraestructura, autenticación) en un único SIEM
-
Conservar logs más allá del período de retención predeterminado (Auris retiene los logs durante 90 días por defecto)
-
Crear paneles y alertas personalizadas basadas en eventos de autenticación
-
Cumplir requisitos de cumplimiento (SOC 2, HIPAA, RGPD) que exigen la exportación de logs a un sistema de almacenamiento controlado
-
Correlacionar eventos de autenticación con eventos de la aplicación para la investigación de incidentes
La transmisión de logs envía los eventos a medida que ocurren con una latencia mínima (normalmente menos de 5 segundos).
Destinos Admitidos
Auris admite cuatro tipos de destino para la transmisión de logs:
| Destino | Transporte | Autenticación | Ideal Para |
|---------|-----------|--------------|------------|
| Webhook | HTTPS POST | Firma HMAC-SHA256 | Integraciones personalizadas, Elasticsearch, SIEM autoalojado |
| Amazon S3 | AWS S3 API | Access key + Secret key | Archivo a largo plazo, cumplimiento, data lake |
| Datadog | Datadog Log API | Clave de API | Monitorización y alertas en tiempo real |
| Splunk | HTTP Event Collector (HEC) | Token HEC | SIEM empresarial y análisis de seguridad |
Formato de Entrada de Log
Todas las entradas de log comparten el mismo esquema JSON independientemente del destino:
{
"id": "log_abc123def456",
"timestamp": "2026-01-15T10:30:00.000Z",
"type": "login.succeeded",
"severity": "info",
"actor": {
"id": "usr_xyz789",
"email": "[email protected]",
"type": "user"
},
"target": {
"id": "app_web123",
"type": "application",
"name": "Aplicación Web de Producción"
},
"action": "login.succeeded",
"description": "El usuario inició sesión correctamente",
"metadata": {
"ipAddress": "203.0.113.42",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
"location": "Milán, Italia",
"authMethod": "password",
"mfaUsed": true,
"mfaMethod": "totp",
"sessionId": "sess_abc123"
},
"tenant": "your-tenant-id",
"source": "auris"
}
Referencia de Campos
| Campo | Tipo | Descripción |
|-------|------|-------------|
| id | string | Identificador único del evento |
| timestamp | ISO 8601 | Cuándo ocurrió el evento |
| type | string | Tipo de evento (p. ej., login.succeeded, user.created, role.assigned) |
| severity | string | info, warn o error |
| actor | object | Quién realizó la acción (usuario, administrador, sistema o cliente M2M) |
| target | object | El recurso afectado (usuario, aplicación, rol, organización) |
| action | string | La acción realizada |
| description | string | Descripción legible por humanos |
| metadata | object | Contexto adicional (IP, agente de usuario, ubicación, parámetros específicos) |
| tenant | string | El ID del tenant |
| source | string | Siempre auris |
Configurar Destino Webhook
El destino Webhook envía entradas de log como solicitudes HTTPS POST a tu endpoint, firmadas con HMAC-SHA256 para verificación.
Configuración
-
Ve a Consola → Configuración → Transmisión de Logs
-
Haz clic en Añadir Stream
-
Selecciona Webhook como tipo de destino
-
Introduce la configuración:
| Campo | Obligatorio | Descripción |
|-------|------------|-------------|
| Nombre | Sí | Un nombre descriptivo para este stream |
| URL | Sí | La URL de tu endpoint HTTPS |
| Eventos | No | Filtra qué tipos de eventos transmitir (vacío = todos los eventos) |
- Haz clic en Crear
Auris genera un secreto de firma para el webhook. El formato de la solicitud es:
POST /tu-endpoint-de-logs HTTP/1.1
Host: api.tuempresa.com
Content-Type: application/json
X-Webhook-Signature: <hmac-sha256-hex>
X-Webhook-Timestamp: <unix-seconds>
{
"events": [
{ "id": "log_abc123", "type": "login.succeeded", ... },
{ "id": "log_def456", "type": "user.updated", ... }
]
}
Los eventos se agrupan en lotes (hasta 100 por solicitud) y se entregan en segundos. Usa la misma lógica de verificación de firma descrita en la guía de Webhooks.
Ejemplo de Receptor
import express from 'express'
import crypto from 'crypto'
const app = express()
app.post(
'/logs/auris',
express.raw({ type: 'application/json' }),
(req, res) => {
const signature = req.headers['x-webhook-signature'] as string
const timestamp = req.headers['x-webhook-timestamp'] as string
const secret = process.env.AURIS_LOG_STREAM_SECRET!
// Verificar firma
const payload = `${timestamp}.${req.body.toString()}`
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex')
if (
!crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
)
) {
return res.status(401).send('Firma inválida')
}
const { events } = JSON.parse(req.body.toString())
// Reenviar a tu sistema de logging
for (const event of events) {
console.log(`[${event.severity}] ${event.type}: ${event.description}`)
}
res.status(200).json({ received: events.length })
}
)
Configurar Destino Amazon S3
El destino S3 escribe entradas de log como archivos JSON en un bucket de S3. Los archivos se organizan por fecha y se agrupan en lotes para un almacenamiento eficiente.
Configuración
-
Ve a Consola → Configuración → Transmisión de Logs
-
Haz clic en Añadir Stream
-
Selecciona Amazon S3 como tipo de destino
-
Introduce la configuración:
| Campo | Obligatorio | Descripción |
|-------|------------|-------------|
| Nombre | Sí | Un nombre descriptivo para este stream |
| Bucket | Sí | Nombre del bucket S3 (p. ej., mi-empresa-auris-logs) |
| Región | Sí | Región de AWS (p. ej., eu-west-1) |
| Access Key ID | Sí | Clave de acceso IAM de AWS con permiso s3:PutObject |
| Secret Access Key | Sí | Clave secreta correspondiente |
| Prefijo | No | Prefijo de la clave de objeto (p. ej., auris/produccion/) |
| Eventos | No | Filtra qué tipos de eventos transmitir |
- Haz clic en Crear
Estructura de Objetos en S3
Los archivos de log se escriben con el siguiente patrón de clave:
{prefijo}yyyy/MM/dd/HH/auris-logs-{timestamp}-{uuid}.json
Ejemplo:
auris/produccion/2026/01/15/14/auris-logs-1737014400-a1b2c3d4.json
Cada archivo contiene un array JSON de entradas de log:
[
{ "id": "log_abc123", "type": "login.succeeded", "timestamp": "..." },
{ "id": "log_def456", "type": "user.created", "timestamp": "..." }
]
Política IAM Requerida
Crea un usuario o rol IAM con la siguiente política mínima:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::mi-empresa-auris-logs/auris/*"
}
]
}
Sigue el principio de mínimo privilegio. Solo concede el permiso PutObject en el prefijo específico que usará Auris. No concedas s3:* ni acceso a todo el bucket.
Configurar Destino Datadog
El destino Datadog envía entradas de log a la API de Logs de Datadog, donde aparecen en Log Explorer y pueden usarse en monitores, paneles y alertas.
Configuración
-
Ve a Consola → Configuración → Transmisión de Logs
-
Haz clic en Añadir Stream
-
Selecciona Datadog como tipo de destino
-
Introduce la configuración:
| Campo | Obligatorio | Descripción |
|-------|------------|-------------|
| Nombre | Sí | Un nombre descriptivo para este stream |
| API Key | Sí | Clave de API de Datadog (desde Configuración de Organización) |
| Site | Sí | Tu sitio Datadog: datadoghq.com (EE. UU.), datadoghq.eu (UE), us3.datadoghq.com (US3), us5.datadoghq.com (US5) |
| Source Tag | No | Etiqueta de origen para filtrar en Datadog (por defecto: auris) |
| Eventos | No | Filtra qué tipos de eventos transmitir |
- Haz clic en Crear
Formato de Log en Datadog
Auris mapea las entradas de log al formato de log de Datadog:
{
"ddsource": "auris",
"ddtags": "env:production,tenant:your-tenant-id",
"hostname": "auth.tuempresa.com",
"service": "auris",
"status": "info",
"message": "El usuario inició sesión correctamente",
"timestamp": "2026-01-15T10:30:00.000Z",
"auris": {
"event_type": "login.succeeded",
"actor_id": "usr_xyz789",
"actor_email": "[email protected]",
"target_type": "application",
"target_id": "app_web123",
"ip_address": "203.0.113.42",
"session_id": "sess_abc123"
}
}
Crear Monitores en Datadog
Una vez que la transmisión de logs esté activa, crea monitores en Datadog para alertar sobre eventos críticos:
Pico de inicios de sesión fallidos:
logs("source:auris @auris.event_type:login.failed").index("main").rollup("count").last("5m") > 50
Bloqueo de cuenta:
logs("source:auris @auris.event_type:user.blocked").index("main").rollup("count").last("1h") > 5
Inicio de sesión sospechoso detectado:
logs("source:auris @auris.event_type:login.suspicious").index("main").rollup("count").last("15m") > 0
Configurar Destino Splunk
El destino Splunk envía entradas de log a un endpoint de Splunk HTTP Event Collector (HEC).
Requisitos Previos
-
Activa el HTTP Event Collector en Splunk (Configuración > Entradas de Datos > HTTP Event Collector)
-
Crea un nuevo token HEC
-
Anota la URL y el token HEC
Configuración
-
Ve a Consola → Configuración → Transmisión de Logs
-
Haz clic en Añadir Stream
-
Selecciona Splunk como tipo de destino
-
Introduce la configuración:
| Campo | Obligatorio | Descripción |
|-------|------------|-------------|
| Nombre | Sí | Un nombre descriptivo para este stream |
| HEC URL | Sí | Endpoint HEC de Splunk (p. ej., https://splunk.tuempresa.com:8088) |
| Token | Sí | Token HEC |
| Índice | No | Índice de Splunk de destino (por defecto: el índice predeterminado de Splunk) |
| Eventos | No | Filtra qué tipos de eventos transmitir |
- Haz clic en Crear
Formato HEC de Splunk
Auris envía eventos en formato JSON HEC de Splunk:
{
"time": 1737014400,
"host": "auth.tuempresa.com",
"source": "auris",
"sourcetype": "auris:audit",
"index": "auris_logs",
"event": {
"id": "log_abc123",
"type": "login.succeeded",
"severity": "info",
"actor": { "id": "usr_xyz789", "email": "[email protected]" },
"description": "El usuario inició sesión correctamente",
"metadata": { "ipAddress": "203.0.113.42" }
}
}
Ejemplos de Búsqueda en Splunk
Tras la ingestión, busca eventos de Auris con SPL:
# Todos los fallos de autenticación en la última hora
sourcetype="auris:audit" type="login.failed" earliest=-1h
# Contar inicios de sesión por país
sourcetype="auris:audit" type="login.succeeded"
| spath path=metadata.location
| stats count by metadata.location
# Detectar viaje imposible
sourcetype="auris:audit" type="login.suspicious"
| where metadata.reason="impossible_travel"
Filtrar Eventos
Por defecto, un stream de logs recibe todos los eventos de auditoría. Puedes filtrar por tipo de evento al crear o actualizar un stream para reducir el volumen y el coste.
Categorías de Eventos Disponibles
| Categoría | Eventos de Ejemplo |
|----------|--------------------|
| Autenticación | login.succeeded, login.failed, login.mfa_required, login.suspicious |
| Ciclo de vida de usuario | user.created, user.updated, user.deleted, user.blocked |
| Contraseña | user.password_changed, user.password_reset_requested |
| Roles y permisos | role.created, role.assigned, permission.changed |
| Organización | organization.created, organization.member_added, organization.invitation_sent |
| Aplicación | application.created, application.secret_rotated |
| Sesión | session.created, session.revoked |
| Administración | admin.settings_changed, admin.user_impersonated |
Ejemplo: transmitir solo eventos de autenticación y seguridad:
curl -X POST https://auth.tudominio.com/api/log-streams \
-H "Authorization: Bearer $AURIS_ACCESS_TOKEN" \
-H "x-tenant: your-tenant-id" \
-H "Content-Type: application/json" \
-d '{
"name": "Eventos de seguridad a Datadog",
"type": "DATADOG",
"config": {
"apiKey": "dd-api-key-here",
"site": "datadoghq.eu",
"sourceTag": "auris"
},
"events": [
"login.failed",
"login.suspicious",
"user.blocked",
"user.unblocked",
"user.password_changed",
"session.revoked",
"role.assigned",
"role.unassigned"
]
}'
Verificar la Entrega
Tras crear un stream de logs, verifica que funcione correctamente:
Verificación desde la Consola
-
Ve a Configuración → Transmisión de Logs
-
Haz clic en tu stream para ver su página de detalles
-
El indicador de Estado muestra si las entregas recientes fueron exitosas
-
La marca de tiempo de Última Entrega indica cuándo se envió el último lote
Generar un Evento de Prueba
Genera un evento de prueba realizando una acción en la Consola (p. ej., crear un usuario de prueba y luego eliminarlo). En pocos segundos, el evento debería aparecer en tu destino.
Comprobar Fallos de Entrega
Si las entregas están fallando, la página de detalles del stream muestra:
-
Mensaje de error — El código de estado HTTP o el error devuelto por el destino
-
Fallos consecutivos — Cuántas entregas han fallado consecutivamente
-
Última entrega exitosa — Cuándo funcionó el stream por última vez
Si un stream acumula demasiados fallos consecutivos, Auris lo pausa automáticamente y notifica a los administradores del tenant. Soluciona el problema subyacente (credenciales, red, disponibilidad del endpoint) y vuelve a habilitar el stream desde la Consola.
Resolución de Problemas
Webhook: Errores 401 o 403
-
Verifica que el secreto de firma coincida entre Auris y tu endpoint
-
Asegúrate de que tu endpoint no requiera cabeceras de autenticación adicionales que Auris no envíe
-
Comprueba que el reloj de tu servidor esté sincronizado (NTP) — la verificación de marca de tiempo falla si los relojes están desincronizados más de 5 minutos
S3: Acceso Denegado
-
Verifica que la clave de acceso y la clave secreta de IAM sean correctas
-
Asegúrate de que la política IAM concede
s3:PutObjecten el bucket y prefijo correctos -
Comprueba que el bucket S3 exista en la región especificada
-
Si usas una política de bucket, asegúrate de que no deniegue el acceso desde el rango de IPs de Auris
Datadog: Los Eventos No Aparecen
-
Verifica que la clave de API sea válida (prueba con
curl -X POST "https://http-intake.logs.datadoghq.com/api/v2/logs" -H "DD-API-KEY: tu-clave" -d '...') -
Asegúrate de haber seleccionado el sitio Datadog correcto (US, EU, US3, US5)
-
Comprueba en Logs de Datadog > Configuración > Pipeline si hay reglas de procesamiento que puedan estar descartando eventos
Splunk: Conexión Rechazada
-
Verifica que la URL HEC sea correcta e incluya el puerto (normalmente 8088)
-
Asegúrate de que el HEC esté habilitado en Splunk (Configuración > Entradas de Datos > HTTP Event Collector > Configuración Global)
-
Verifica que el token HEC sea válido y tenga los permisos de índice correctos
-
Comprueba los certificados SSL si usas HTTPS — Auris requiere un certificado válido
Guías Relacionadas
-
Configurar Webhooks — Notificaciones de eventos en tiempo real para tu aplicación
-
Protección Contra Ataques — Comprender los eventos generados por el pipeline de seguridad
-
Gestión de Sesiones — Eventos de sesión en el log de auditoría
This guide covers the supported destinations, how to configure each one, the log entry format, and how to verify delivery.