Audit Trail
Le mode Audit Trail (HasAuditTrail) est la fonctionnalité phare d'AuditChain. Il enregistre chaque modification de vos models Eloquent dans une chaîne cryptographiquement liée et immutable — rendant toute falsification instantanément détectable.
En quoi il diffère du journal d'activité
Alors que le mode Journal d'activité enregistre les mêmes événements et données, l'Audit Trail ajoute une chaîne de hash SHA-256. Chaque entrée du journal d'audit contient :
- Un
hashcalculé à partir des données d'audit - Un
prev_hashla reliant à l'entrée précédente
Cela crée une chaîne inviolable où la modification d'une seule entrée invalide toutes les entrées qui suivent.
La chaîne de hash
Entry #1: hash = SHA256(data + genesis_seed) Entry #2: hash = SHA256(data + hash_of_entry_1) Entry #3: hash = SHA256(data + hash_of_entry_2) ...
Les données incluses dans le calcul du hash :
auditable_typeetauditable_idevent(created, updated, deleted, etc.)user_id,ip_address,user_agentold_valuesetnew_valuespersonal_data_accessedtimestampprev_hash
Note :
batch_uuidetcontextsont intentionnellement exclus du calcul du hash. Ce sont des métadonnées opérationnelles — modifier le regroupement par lot ou le contexte ne doit pas invalider la chaîne.
Quand utiliser le mode Audit Trail
Utilisez HasAuditTrail lorsque vous avez besoin de :
- Preuve de non-falsification — Prouver que les enregistrements n'ont pas été altérés
- Documents financiers — Transactions, factures, paiements
- Audits réglementaires — Historique d'audit vérifiable et ininterrompu
- Conformité réglementaire — RGPD, NIS2, SOX, HIPAA
Utilisation
use GrayMatter\AuditChain\Concerns\HasAuditTrail; use GrayMatter\AuditChain\Contracts\Auditable; class Invoice extends Model implements Auditable { use HasAuditTrail; }
Vérification de la chaîne
Exécutez la commande de vérification pour contrôler l'intégrité de la chaîne :
php artisan audit:verify
Ou utilisez l'API programmatique :
use GrayMatter\AuditChain\Services\AuditChainService; $result = app(AuditChainService::class)->verifyChain(); // ['valid' => true, 'checked' => 150, 'errors' => []]
Consultez Vérification de la chaîne pour plus de détails sur la vérification automatisée et les notifications.