Reference : vocabulaire des lignes d’audit
Chaque ligne d’audit est un evenement du target audit, une ligne JSON par
evenement. Lire et filtrer la piste : Audit. Ce que
veut dire une erreur et ou la corriger : Depannage.
Les actions
action | source | Ecrite quand |
|---|---|---|
list | sftp, api | listage d’un repertoire |
download | sftp, api | fin du transfert |
upload | sftp, api | fin du transfert |
mkdir | sftp, api | une ligne par repertoire cree, du plus exterieur au plus interieur |
delete | sftp, api | SFTP REMOVE d’un fichier ; REST DELETE d’un fichier ou d’un repertoire vide |
rmdir | sftp | RMDIR d’un repertoire vide |
delete_recursive | api | DELETE d’un repertoire non vide |
rmdir_recursive | sftp | RMDIR d’un repertoire non vide |
rename | sftp, api | renommage ou deplacement |
stat | sftp, api | refus seulement ; REST HEAD |
setstat | sftp | refus seulement |
request | api | requete refusee avant le handler sans route pour sa methode, ou GET ?rights |
connection_accepted | sftp, api, admin | authentification reussie : une par session SFTP, une par requete REST, une par fenetre admin de 15 min |
connection_rejected | sftp, api, admin | authentification refusee |
connection_rejected_summary | sftp, api, admin | refus anonymes repetes, resumes a la fin de la fenetre |
ip_banned | sftp, api, admin | une adresse est bannie, une fois par bascule |
session_end | sftp | une session SFTP quitte le registre |
session_kick | admin | DELETE /admin/sessions/{id} |
unban | admin | DELETE /admin/bans/{protocol}/{ip} |
logout | admin | POST /admin/logout sous un JWT ou le jeton statique : rien n’est revoque |
session_revoke | admin | POST /admin/revocations, POST /admin/logout sous un jeton de session : username le compte revoque, admin l’auteur |
grant_add, grant_revoke | admin | POST /admin/grants, DELETE /admin/grants/{id} : username le beneficiaire, role, grant_id, until, grant_reason (le motif), lift |
audit_read | admin | lecture de la piste par la console ou son flux |
get_status, get_config, get_resources, list_sessions, session_roles, logs_status, get_logs, events, stream_logs, list_bans, list_grants, grant_candidates | admin | refus insufficient permission d’une route en lecture |
Les resultats
result | Sens |
|---|---|
success | l’operation a abouti |
denied | le serveur l’a refusee |
error | le stockage l’a fait echouer, ou rien n’a pu etre construit pour elle, ou elle a ete interrompue |
unknown | le serveur ne sait pas ce qu’elle est devenue (commit interrompu) |
Les champs
| Champ | Lignes | Sens |
|---|---|---|
source | toutes | la porte : sftp, api, admin ; pour ip_banned, la liste du ban |
action, result | toutes | ci-dessus |
reason | denied, error, unknown ; absent sur success | une chaine fixe, ci-dessous |
username | toutes sauf les resumes | le nom presente ; vide pour un jeton non verifie |
remote_addr | toutes | l’IP du client ; avec le port sur connection_accepted et session_end SFTP |
session_id | operations SFTP, session_end, session_kick | l’identifiant de la session |
path | operations | le chemin vu par l’utilisateur ; la source d’un rename |
new_path | rename | la destination |
backend | operations | le nom du backend du montage ; "" sur un chemin synthetique |
count | upload, download, list | octets transferes, ou entrees listees ; 0 ailleurs |
replaced | upload | yes, no, unknown : l’upload a-t-il detruit un contenu present |
removed | delete_recursive, rmdir_recursive | entrees supprimees ; unknown sur un backend local |
took_over | upload | l’upload bloque du meme compte que celui-ci a repris : son session_id SFTP, ou son transfer_id REST ; "" ailleurs |
transfer_id | upload REST | l’identifiant du transfert, celui de la console ; "" ailleurs |
grant_id | operations | l’acces temporaire par lequel est venu le montage du chemin (plusieurs : separes par des virgules) ; "" ailleurs |
auth_method | connection_* | SFTP password, pubkey, jwt ; API basic, bearer, ticket ; admin jwt, static_token, session, password (connexion a la console) ; none sans credential |
signature_algorithm | connection_accepted SFTP | algorithme de la signature de la cle |
suppressed, threshold, window_secs, overflow | connection_rejected_summary | refus non ecrits, et les reglages de la fenetre |
ban_duration_secs, expires_at_epoch | ip_banned | duree et fin du ban |
duration_secs, bytes_read, bytes_written | session_end | duree et volume de la session |
admin, admin_addr, admin_auth_method | actions admin | l’auteur |
kicked_by | session_kick | l’auteur du kick |
protocol, lift | unban | la liste (sftp, api, admin) ; held, local_only, overruled, not_banned |
lift | session_revoke | held, local_only |
permission | refus insufficient permission | la permission manquante |
lines, levels, since, until, q, fields | audit_read | la lecture faite ; lines = 0 pour un flux |
Un champ hors propos est vide ("", 0), pas absent. Aucune ligne ne porte
de mot de passe, de jeton ni le texte d’une erreur du stockage : ce texte va
dans le journal applicatif, a cote.
Les reason
Operations sur fichiers :
reason | result | Sens |
|---|---|---|
acl | denied | l’ACL ne donne pas le droit |
acl subtree | denied | suppression d’un arbre que l’ACL ne couvre pas en entier |
synthetic path | denied | ecriture sur un repertoire synthetique ou un point de montage |
rename across mounts | denied | source et destination sous deux montages |
invalid path | denied | caractere de controle, \, forme Windows interdite |
reserved name | denied | nom que le serveur se reserve (verrou d’upload) |
rename into restricted | denied | renommage qui deposerait du contenu sans write |
range not satisfiable | denied | telechargement REST dont le Range commence apres la fin du fichier (416) |
symlink escape | denied | lien symbolique hors de la racine locale |
exists | denied | destination existante, ou creation exclusive sur un nom pris |
is a directory, not a directory | denied | REMOVE d’un repertoire, RMDIR d’un fichier |
upload in progress | denied, error | un autre upload tient la destination |
taken over | error | upload bloque repris par un nouvel upload du meme compte (uploads.takeover_idle_secs) |
quota exceeded (et , truncated file removed, , append not undone) | denied | max_file_mb depasse |
session killed | denied | session coupee pendant l’operation |
no roles, username not usable as home directory | denied | REST : aucun role, nom inutilisable |
role resolution, mount conflict | error | REST : roles non resolus, montages en conflit |
not found, permission denied, already exists, not a directory, is a directory, directory not empty, storage error, not implemented, unsupported, upload in progress | error | genre de l’erreur du stockage |
session ended: <cause> | error | session SFTP finie pendant l’operation ; <cause> est le reason du session_end |
session ended | error | client REST parti pendant la requete |
upload idle timeout, upload below minimum rate | error | upload coupe par le serveur |
commit interrupted | unknown | client parti pendant la publication d’un upload |
Authentification (connection_rejected, connection_rejected_summary) :
reason | result | Sens |
|---|---|---|
| absent | denied | mot de passe faux, nom inconnu, cle ou JWT SFTP refuse : rien ne dit quels comptes existent |
no authorized key offered | denied | aucune cle proposee n’etait autorisee |
signature algorithm not allowed | denied | algorithme de signature de la cle non permis |
missing credential, empty credential, malformed credential | denied | en-tete Authorization absent, vide, illisible |
invalid token, expired token, wrong issuer, wrong audience | denied | jeton refuse par le verificateur |
verifier unavailable | denied, error | aucune cle en face du jeton, ou rien pour verifier |
no username claim | denied | jeton verifie sans nom |
method disabled | denied | methode d’authentification coupee |
no matching roles, no matching admin roles | denied | credential acceptee, aucun role |
role resolution, mount conflict, backend initialization failed | error | credential acceptee, session impossible a construire |
username not usable as home directory | denied | le nom ne peut pas etre un repertoire |
session limit | denied | max_sessions_per_user atteint |
banned, rate limit | denied | adresse bannie, debit depasse |
password checks saturated, password checks saturated for address, shutting down | error | mot de passe non verifie : pool plein, part de l’adresse atteinte, arret |
invalid ticket, expired ticket, revoked ticket | denied | ticket de telechargement refuse |
revoked token | denied | jeton de session de la console dont le compte a ete retire ou a change de mot de passe, ou revoque |
Fin de session (session_end) : closed, connection_ended, admin_kick,
shutdown_idle, shutdown, banned, internal_error, grant_expired,
grant_revoked (un acces temporaire que la connexion a utilise a fini :
grant_id le nomme ; un transfert REST coupe ainsi dit
session ended: grant_expired ou grant_revoked).
Actions admin : insufficient permission, session not found, no sessions,
not banned, overruled, unknown protocol, invalid IP address,
no ban manager.