Skip to Content

Log Streaming

Auris enregistre des logs d’audit pour chaque événement significatif dans ton tenant : connexions, modifications d’utilisateurs, assignations de rôles, vérifications de permissions, appels API et actions administratives. Le log streaming te permet d’exporter ces événements en temps réel vers des services externes de logging et d’analyse, t’offrant une vue unifiée de l’activité d’authentification avec les logs de ton application.

Ce guide couvre les destinations supportées, comment configurer chacune, le format des logs et comment vérifier la livraison.

Pourquoi le Log Streaming

Bien que la Console Auris fournisse un visualiseur de logs d’audit intégré avec recherche et filtres, les organisations ont souvent besoin de :

  • Centraliser les logs de tous les systèmes (application, infrastructure, authentification) dans un seul SIEM
  • Conserver les logs au-delà de la période de rétention par défaut (Auris conserve les logs 90 jours par défaut)
  • Créer des tableaux de bord et des alertes personnalisés basés sur les événements d’authentification
  • Satisfaire les exigences de conformité (SOC 2, HIPAA, RGPD) qui nécessitent l’export des logs vers un système d’archivage contrôlé
  • Corréler les événements d’authentification avec les événements d’application pour les investigations d’incidents

Le log streaming envoie les événements dès qu’ils se produisent avec une latence minimale (typiquement inférieure à 5 secondes).

Destinations Supportées

Auris supporte quatre types de destinations pour le log streaming :

DestinationTransportAuthentificationIdéal pour
WebhookHTTPS POSTSignature HMAC-SHA256Intégrations personnalisées, Elasticsearch, SIEM auto-hébergé
Amazon S3AWS S3 APIAccess key + Secret keyArchivage long terme, conformité, data lake
DatadogDatadog Log APIClé APISurveillance et alertes en temps réel
SplunkHTTP Event Collector (HEC)Token HECSIEM enterprise et analyses de sécurité

Format des Logs

Tous les logs partagent le même schéma JSON indépendamment de la destination :

{ "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": "Application Web de Production" }, "action": "login.succeeded", "description": "L'utilisateur s'est connecté avec succès", "metadata": { "ipAddress": "203.0.113.42", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...", "location": "Paris, France", "authMethod": "password", "mfaUsed": true, "mfaMethod": "totp", "sessionId": "sess_abc123" }, "tenant": "votre-tenant-id", "source": "auris" }

Référence des Champs

ChampTypeDescription
idstringIdentifiant unique de l’événement
timestampISO 8601Quand l’événement s’est produit
typestringType d’événement (ex. login.succeeded, user.created, role.assigned)
severitystringinfo, warn ou error
actorobjectQui a effectué l’action (utilisateur, admin, système ou client M2M)
targetobjectLa ressource affectée (utilisateur, application, rôle, organisation)
actionstringL’action effectuée
descriptionstringDescription lisible par l’humain
metadataobjectContexte supplémentaire (IP, user agent, localisation, paramètres spécifiques)
tenantstringL’ID du tenant
sourcestringToujours auris

Configuration de la Destination Webhook

La destination Webhook envoie les logs comme des requêtes HTTPS POST à ton endpoint, signées avec HMAC-SHA256 pour la vérification.

Configuration

  1. Va sur Console puis Paramètres puis Log Streaming
  2. Clique Ajouter un Stream
  3. Sélectionne Webhook comme type de destination
  4. Saisis la configuration :
ChampRequisDescription
NomOuiUn nom descriptif pour ce stream
URLOuiL’URL de ton endpoint HTTPS
ÉvénementsNonFiltre quels types d’événements transmettre (vide = tous les événements)
  1. Clique Créer

Auris génère un secret de signature pour le webhook. Le format de la requête est :

POST /votre-endpoint-log HTTP/1.1 Host: api.votreentreprise.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", ... } ] }

Les événements sont regroupés (jusqu’à 100 par requête) et livrés en quelques secondes. Utilise la même logique de vérification de signature décrite dans le guide Webhooks.

Exemple de Récepteur

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! // Vérifier la signature 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('Signature invalide') } const { events } = JSON.parse(req.body.toString()) for (const event of events) { console.log(`[${event.severity}] ${event.type}: ${event.description}`) } res.status(200).json({ received: events.length }) } )

Configuration de la Destination Amazon S3

La destination S3 écrit les logs comme des fichiers JSON dans un bucket S3. Les fichiers sont organisés par date et regroupés pour un archivage efficace.

Configuration

  1. Va sur Console puis Paramètres puis Log Streaming
  2. Clique Ajouter un Stream
  3. Sélectionne Amazon S3 comme type de destination
  4. Saisis la configuration :
ChampRequisDescription
NomOuiUn nom descriptif pour ce stream
BucketOuiNom du bucket S3 (ex. my-company-auris-logs)
RégionOuiRégion AWS (ex. eu-west-1)
Access Key IDOuiClé d’accès IAM AWS avec permission s3:PutObject
Secret Access KeyOuiSecret key correspondante
PréfixeNonPréfixe de clé d’objet (ex. auris/production/)
ÉvénementsNonFiltre quels types d’événements transmettre
  1. Clique Créer

Structure des Objets S3

Les fichiers de log sont écrits avec le pattern de clé suivant :

{préfixe}yyyy/MM/dd/HH/auris-logs-{timestamp}-{uuid}.json

Chaque fichier contient un tableau JSON de logs :

[ { "id": "log_abc123", "type": "login.succeeded", "timestamp": "..." }, { "id": "log_def456", "type": "user.created", "timestamp": "..." } ]

Politique IAM Requise

Crée un utilisateur ou rôle IAM avec la politique minimale suivante :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::my-company-auris-logs/auris/*" } ] }

Suis le principe du moindre privilège. N’accorde que la permission PutObject sur le préfixe spécifique qu’Auris utilisera. N’accorde pas s3:* ou un accès à tout le bucket.

Configuration de la Destination Datadog

La destination Datadog envoie les logs à l’API Logs de Datadog, où ils apparaissent dans le Log Explorer et peuvent être utilisés dans des monitors, tableaux de bord et alertes.

Configuration

  1. Va sur Console puis Paramètres puis Log Streaming
  2. Clique Ajouter un Stream
  3. Sélectionne Datadog comme type de destination
  4. Saisis la configuration :
ChampRequisDescription
NomOuiUn nom descriptif pour ce stream
Clé APIOuiClé API Datadog (depuis Organization Settings)
SiteOuiTon site Datadog : datadoghq.com (US), datadoghq.eu (EU), etc.
Tag SourceNonTag source pour le filtrage dans Datadog (défaut : auris)
ÉvénementsNonFiltre quels types d’événements transmettre
  1. Clique Créer

Création de Monitors Datadog

Après que le log streaming est actif, crée des monitors dans Datadog pour les alertes sur les événements critiques :

Pic de connexions échouées :

logs("source:auris @auris.event_type:login.failed").index("main").rollup("count").last("5m") > 50

Blocage de compte :

logs("source:auris @auris.event_type:user.blocked").index("main").rollup("count").last("1h") > 5

Connexion suspecte détectée :

logs("source:auris @auris.event_type:login.suspicious").index("main").rollup("count").last("15m") > 0

Configuration de la Destination Splunk

La destination Splunk envoie les logs à un endpoint Splunk HTTP Event Collector (HEC).

Prérequis

  1. Active HTTP Event Collector dans Splunk (Paramètres > Entrées de données > HTTP Event Collector)
  2. Crée un nouveau token HEC
  3. Note l’URL HEC et le token

Configuration

  1. Va sur Console puis Paramètres puis Log Streaming
  2. Clique Ajouter un Stream
  3. Sélectionne Splunk comme type de destination
  4. Saisis la configuration :
ChampRequisDescription
NomOuiUn nom descriptif pour ce stream
URL HECOuiEndpoint Splunk HEC (ex. https://splunk.votreentreprise.com:8088)
TokenOuiToken HEC
IndexNonIndex Splunk de destination
ÉvénementsNonFiltre quels types d’événements transmettre
  1. Clique Créer

Exemples de Recherche Splunk

Après ingestion, recherche les événements Auris avec SPL :

# Tous les échecs d'authentification dans la dernière heure sourcetype="auris:audit" type="login.failed" earliest=-1h # Nombre de connexions par pays sourcetype="auris:audit" type="login.succeeded" | spath path=metadata.location | stats count by metadata.location # Détecter les voyages impossibles sourcetype="auris:audit" type="login.suspicious" | where metadata.reason="impossible_travel"

Filtrage des Événements

Par défaut, un stream reçoit tous les événements d’audit. Tu peux filtrer par type d’événement lors de la création ou de la mise à jour d’un stream.

Catégories d’Événements Disponibles

CatégorieExemples d’événements
Authentificationlogin.succeeded, login.failed, login.mfa_required, login.suspicious
Cycle de vie utilisateuruser.created, user.updated, user.deleted, user.blocked
Mot de passeuser.password_changed, user.password_reset_requested
Rôles et permissionsrole.created, role.assigned, permission.changed
Organisationorganization.created, organization.member_added, organization.invitation_sent
Applicationapplication.created, application.secret_rotated
Sessionsession.created, session.revoked
Adminadmin.settings_changed, admin.user_impersonated

Exemple : Stream uniquement des événements d’authentification et de sécurité :

curl -X POST https://auth.votredomaine.com/api/log-streams \ -H "Authorization: Bearer $AURIS_ACCESS_TOKEN" \ -H "x-tenant: votre-tenant-id" \ -H "Content-Type: application/json" \ -d '{ "name": "Événements de sécurité sur Datadog", "type": "DATADOG", "config": { "apiKey": "dd-api-key-ici", "site": "datadoghq.eu", "sourceTag": "auris" }, "events": [ "login.failed", "login.suspicious", "user.blocked", "user.unblocked", "user.password_changed", "session.revoked", "role.assigned", "role.unassigned" ] }'

Vérification de la Livraison

Après avoir créé un stream, vérifie qu’il fonctionne :

Vérification dans la Console

  1. Va sur Paramètres puis Log Streaming
  2. Clique sur ton stream pour en afficher les détails
  3. L’indicateur Statut montre si les livraisons récentes ont réussi
  4. Le timestamp Dernière Livraison montre quand le dernier batch a été envoyé

Déclencher un Événement de Test

Génère un événement de test en effectuant une action dans la Console (ex. crée un utilisateur de test puis supprime-le). Dans quelques secondes, l’événement devrait apparaître dans ta destination.

Vérifier les Échecs de Livraison

Si les livraisons échouent, la page de détails du stream affiche :

  • Message d’erreur — Le code de statut HTTP ou l’erreur retournée par la destination
  • Échecs consécutifs — Combien de livraisons ont échoué d’affilée
  • Dernière livraison réussie — Quand le stream a fonctionné pour la dernière fois

Si un stream accumule trop d’échecs consécutifs, Auris le met en pause automatiquement et notifie les administrateurs du tenant. Corrige le problème sous-jacent (credentials, réseau, disponibilité de l’endpoint) et réactive le stream depuis la Console.

Résolution des Problèmes

Webhook : Erreurs 401 ou 403

  • Vérifie que le secret de signature correspond entre Auris et ton endpoint
  • Assure-toi que ton endpoint ne nécessite pas de headers d’authentification supplémentaires
  • Vérifie que l’horloge du serveur est synchronisée (NTP) — la vérification du timestamp échoue si les horloges diffèrent de plus de 5 minutes

S3 : Accès Refusé

  • Vérifie que l’access key et la secret key IAM sont corrects
  • Assure-toi que la politique IAM accorde s3:PutObject sur le bucket et le préfixe corrects
  • Vérifie que le bucket S3 existe dans la région spécifiée

Datadog : Événements Non Visibles

  • Vérifie que la clé API est valide
  • Assure-toi d’avoir sélectionné le bon site Datadog (US, EU, US3, US5)
  • Vérifie dans la configuration des Logs Datadog les pipelines de traitement qui pourraient supprimer les événements

Splunk : Connexion Refusée

  • Vérifie que l’URL HEC est correcte et inclut le port (typiquement 8088)
  • Assure-toi que HEC est activé dans Splunk (Paramètres > Entrées de données > HTTP Event Collector > Paramètres globaux)
  • Vérifie que le token HEC est valide et a les permissions correctes sur l’index
  • Vérifie les certificats SSL si tu utilises HTTPS — Auris nécessite un certificat valide

Guides Associés