Logs et audit en base
Les logs et tables d'audit doivent capturer les changements métier critiques.
Quand logger
- Changements de permissions, rôles ou utilisateurs
- Anomalies d'authentification
- Imports, exports et runs de parsers
- Modifications des paramètres d'application
- Appels API critiques en échec
- Modifications des définitions de tables dynamiques admin
Champs de log recommandés
| Champ | Notes |
|---|---|
| ID acteur | Utiliser l'ID utilisateur authentifié quand disponible |
| Action | Nom d'action machine-readable stable |
| Cible | Type d'entité et ID |
| Contexte | Application, service, module |
| Résultat | success, failure, denied |
| Metadata | JSON sanitisé |
Ce qu'on ne logue JAMAIS
- Mots de passe, tokens, clés API
- Payloads personnels complets
- Fichiers uploadés bruts
- Données de santé ou personnelles sensibles
Pattern de log Laravel
Log::info('User role assigned', [
'id_user' => $user->id_user,
'id_role' => $role->id_role,
'actor_id' => auth()->id(),
'module' => 'admin',
]);
Log::error('Proxmox sync failed', [
'server_id' => $server->id,
'node' => $node->name,
'error' => $e->getMessage(), // jamais le stack trace complet en prod
]);