Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Audit : lire la piste

La piste d’audit dit qui a fait quoi, sur quel fichier, et si ca a marche ; refus et erreurs compris. Le vocabulaire des lignes (actions, champs, reason) est dans la reference.

{"timestamp":"2026-10-07T14:41:25.402Z","level":"INFO","target":"audit","fields":{"message":"audit: operation succeeded","source":"sftp","action":"upload","session_id":"550e8400-e29b-41d4-a716-446655440000","remote_addr":"192.168.1.42","username":"alice","path":"/in/rapport.csv","backend":"disque","new_path":"","count":524288,"replaced":"no","removed":"","result":"success"}}

Ou elle va

ReglageOu va la piste
defautstdout, melee au journal applicatif, une ligne JSON par evenement, target = audit
[log] diren plus, craft-file-gate-audit.log (la piste seule) a cote de craft-file-gate.log
[log] stdout = falseles fichiers seulement
[telemetry]chaque ligne d’operation est aussi un evenement du span de l’operation

Rotation, retention et niveau : Journaux.

Ce qu’elle garde

log.audit (all, changes, failures) ne retire que des succes ; les refus anonymes repetes sont resumes en connection_rejected_summary. Voir Le volume de la piste et Refus repetes.

Severite

NiveauLignes
WARNce que seul un porteur de credential produit : une operation denied, error ou unknown ; un refus apres une credential acceptee ; un refus d’action admin ; ip_banned
INFOce que n’importe quel pair produit : les autres connection_rejected ; connection_accepted, session_end, les resumes, les succes

Une alerte sur les WARN de la piste ne se declenche donc pas pour un scanner anonyme.

Filtrer

Dans la console, onglet Logs, source audit (permission audit) : filtres par niveau, periode, texte et champ:valeur ; chaque lecture ecrit une ligne audit_read. Voir Console et API d’administration.

# l'API de la console
curl -H "Authorization: Bearer $TOKEN" \
  'http://serveur:8081/admin/logs/audit?field=username:alice&level=WARN&since=2026-10-07T00:00:00Z'

# les fichiers ; sans [log] dir : docker logs ... | jq -c 'select(.target == "audit")'
jq -c 'select(.fields.username == "alice")' /var/log/craft-file-gate/craft-file-gate-audit.log
QuestionFiltre
tout ce qu’a fait une session SFTP.fields.session_id == "<id>"
les fichiers ecrases.fields.action == "upload" and .fields.replaced == "yes"
les refus d’ACL.fields.reason == "acl"
les pannes du stockage.fields.result == "error" and .fields.backend == "<nom>"
les refus et erreurs.fields.result != "success"

Le texte d’une erreur du stockage n’est pas dans la piste : cherchez-le dans le journal applicatif, a la meme heure, avec le meme path.

Une piste incomplete

Une ligne que le serveur ne peut pas ecrire (pipe ferme, disque plein) est perdue : craftfilegate_log_write_errors_total le compte, stderr le dit au plus une fois par minute, et le serveur continue de servir. Alertez sur increase(craftfilegate_log_write_errors_total[5m]) > 0.