API Logs d’Audit
Les logs d’audit enregistrent de manière immuable toutes les actions effectuées dans le tenant — connexions, modifications de configuration, assignations de rôles, et bien plus. Ils sont conçus pour la conformité (SOC 2, ISO 27001, GDPR Article 30).
Tous les endpoints nécessitent le header x-tenant.
Consultation des Logs
/api/audit-logsRequires: view:audit_logsInterroge les logs d’audit avec filtrage et pagination. Les logs sont retournés par ordre chronologique décroissant (du plus récent au plus ancien).
Paramètres de query
| Paramètre | Type | Description |
|---|---|---|
action | string | Filtre par type d’action (ex. user.login) |
userId | string | Filtre par identifiant utilisateur |
resourceType | string | Filtre par type de ressource (ex. user, role, application) |
level | string | Filtre par niveau : info, warn, error |
dateFrom | ISO 8601 | Début de la plage temporelle |
dateTo | ISO 8601 | Fin de la plage temporelle |
search | string | Recherche textuelle dans les détails |
page | integer | Numéro de page (défaut : 1) |
limit | integer | Éléments par page (défaut : 50, max : 200) |
Réponse de succès
{
"ok": true,
"data": {
"data": [
{
"id": "log_abc123",
"action": "user.login",
"userId": "usr_abc123",
"resourceType": "session",
"resourceId": "ses_xyz789",
"details": {
"method": "password",
"ipAddress": "192.168.1.1",
"userAgent": "Mozilla/5.0..."
},
"level": "info",
"ipAddress": "192.168.1.1",
"userAgent": "Mozilla/5.0...",
"createdAt": "2025-03-01T10:00:00Z"
}
],
"pagination": { "page": 1, "limit": 50, "total": 1842 }
}
}Structure d’une Entrée de Log
| Champ | Type | Description |
|---|---|---|
id | string | Identifiant unique du log |
action | string | Type d’action au format categorie.action |
userId | string | Identifiant de l’utilisateur ayant effectué l’action (null pour les actions système) |
resourceType | string | Type de ressource affectée |
resourceId | string | Identifiant de la ressource affectée |
details | object | Contexte supplémentaire — peut contenir before/after pour les mutations |
level | string | info, warn, ou error |
ipAddress | string | Adresse IP de la requête |
userAgent | string | User-agent du client |
createdAt | ISO 8601 | Horodatage de l’événement |
Le champ details pour les opérations de mutation (création, modification, suppression) contient des snapshots before et after de la ressource. Les champs sensibles (mots de passe, secrets) ne sont jamais loggés.
Types d’Actions
Authentification et Sessions
| Action | Niveau | Description |
|---|---|---|
user.login | info | Connexion réussie |
user.login.failed | warn | Tentative de connexion échouée |
user.logout | info | Déconnexion de session |
session.revoke | warn | Session révoquée manuellement |
token.exchange | info | Échange de token (Token Exchange flow) |
token.refresh | info | Renouvellement de token d’accès |
magic_link.sent | info | Magic link envoyé |
magic_link.verified | info | Magic link vérifié |
Gestion des Utilisateurs
| Action | Niveau | Description |
|---|---|---|
user.create | info | Utilisateur créé |
user.update | info | Profil utilisateur modifié |
user.delete | warn | Utilisateur supprimé |
user.enable | info | Compte utilisateur réactivé |
user.disable | warn | Compte utilisateur désactivé |
user.email_verify | info | Email vérifié |
user.password_reset | warn | Mot de passe réinitialisé |
user.import | info | Utilisateurs importés en masse |
Rôles et Permissions
| Action | Niveau | Description |
|---|---|---|
role.create | info | Nouveau rôle créé |
role.update | info | Permissions du rôle modifiées |
role.delete | warn | Rôle supprimé |
role.assign | info | Rôle assigné à un utilisateur |
role.unassign | warn | Rôle retiré d’un utilisateur |
Applications
| Action | Niveau | Description |
|---|---|---|
application.create | info | Application créée |
application.update | info | Application modifiée |
application.delete | warn | Application supprimée |
application.secret.rotate | warn | Secret d’application pivoté |
SSO et Organisation
| Action | Niveau | Description |
|---|---|---|
sso.connection.create | info | Connexion SSO créée |
sso.connection.activate | info | Connexion SSO activée |
sso.connection.deactivate | warn | Connexion SSO désactivée |
organization.create | info | Organisation créée |
organization.member_add | info | Membre ajouté à une organisation |
organization.member_remove | warn | Membre retiré d’une organisation |
Sécurité
| Action | Niveau | Description |
|---|---|---|
security.brute_force.lockout | error | Compte verrouillé après trop de tentatives |
security.suspicious_login | warn | Connexion suspecte détectée |
mfa.enable | info | 2FA activée |
mfa.disable | warn | 2FA désactivée |
security.settings.update | warn | Paramètres de sécurité modifiés |
Streaming des Logs
Le streaming permet d’envoyer en temps réel les logs d’audit vers des destinations externes pour archivage, analyse ou intégration SIEM.
Les logs d’audit sont immuables et ne peuvent pas être modifiés ou supprimés via l’API. Le streaming ne remplace pas le stockage interne des logs — il les duplique vers des destinations configurées.
/api/log-streamsRequires: manage:log_streamsListe toutes les configurations de streaming de logs.
Réponse de succès
{
"ok": true,
"data": [
{
"id": "stream_abc123",
"name": "Archive S3 Production",
"type": "S3",
"status": "active",
"createdAt": "2025-01-01T00:00:00Z"
}
]
}Statuts des streams
| Statut | Description |
|---|---|
active | Stream actif et fonctionnel |
paused | Stream mis en pause manuellement |
error | Erreur de connexion ou d’authentification |
/api/log-streamsRequires: manage:log_streamsCrée un nouveau stream de logs. Supporte 4 types de destinations.
Corps de la requête — WEBHOOK
{
"name": "Webhook Audit",
"type": "WEBHOOK",
"config": {
"url": "https://your-siem.com/audit/ingest",
"headers": {
"Authorization": "Bearer token_value",
"X-Source": "auris-audit"
}
}
}Corps de la requête — S3
{
"name": "Archive S3 Production",
"type": "S3",
"config": {
"bucket": "my-audit-logs-bucket",
"region": "eu-west-1",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"prefix": "auris/audit-logs/"
}
}Les fichiers S3 sont stockés au format : {prefix}YYYY/MM/DD/HH-mm-ss-{uuid}.json
Corps de la requête — DATADOG
{
"name": "Datadog SIEM",
"type": "DATADOG",
"config": {
"apiKey": "datadog_api_key",
"region": "eu",
"service": "auris-auth",
"source": "auris"
}
}Corps de la requête — SPLUNK
{
"name": "Splunk SOC",
"type": "SPLUNK",
"config": {
"hecUrl": "https://your-splunk.com:8088",
"hecToken": "splunk_hec_token",
"index": "security_audit",
"source": "auris",
"sourcetype": "auris:audit"
}
}/api/log-streams/[id]Requires: manage:log_streamsMet à jour un stream existant. Tu peux modifier le nom, la configuration ou le statut (active/paused).
Corps de la requête
{
"status": "paused"
}/api/log-streams/[id]Requires: manage:log_streamsSupprime un stream de logs. Les logs déjà envoyés restent dans la destination.
Conformité
Les logs d’audit d’Auris sont conçus pour répondre aux exigences de conformité :
- GDPR Article 30 : Journal des activités de traitement des données personnelles
- SOC 2 Type II : Traçabilité complète des accès et modifications
- ISO 27001 : Journalisation et surveillance des événements de sécurité
- Immuabilité : Les logs ne peuvent pas être modifiés ou supprimés via l’API — intégrité garantie
Pages Associées
- Guide Log Streaming — Configurer le streaming vers SIEM et archives
- Logs et Conformité (Console) — Consulter les logs depuis la Console