Auditer une instance gitrust
À qui s'adresse cette page
Administrateurs qui souhaitent consulter le journal d'audit, filtrer les événements suspects, exporter les logs et les corréler avec les journaux système.
Le journal d'audit dans /admin/audit
Gitrust enregistre toutes les actions significatives dans la table audit_log. Chaque entrée contient : l'acteur (utilisateur), l'action effectuée, la ressource concernée, l'adresse IP source et l'horodatage.
Les actions auditées par défaut (audit_log_actions dans app_settings) :
create— création d'un dépôt, utilisateur, équipe, etc.update— modification de paramètres, de profildelete— suppression d'une ressourcereset_password— réinitialisation de mot de passe
Accédez au journal : https://VOTRE_INSTANCE/admin/audit

Filtrer les événements
L'interface /admin/audit propose des filtres combinables :
| Filtre | Description |
|---|---|
| Utilisateur | Filtrer par nom d'utilisateur de l'acteur |
| Action | Filtrer par type d'action (create, update, delete, reset_password) |
| Période | Sélectionner une plage de dates |
| Ressource | Filtrer par type de ressource (repository, user, team…) |
Exemple de requête typique : « toutes les suppressions de dépôts depuis 30 jours »
- Action :
delete - Période : 30 derniers jours
- Cliquez Filtrer
Exporter les logs en CSV
- Appliquez les filtres souhaités
- Cliquez Exporter CSV
- Le fichier téléchargé contient les colonnes :
timestamp,actor_username,action,resource_type,resource_id,ip_address,details
Ce fichier peut être importé dans un tableur ou un SIEM pour des analyses avancées.
Interroger la base de données directement
Pour des requêtes avancées non disponibles dans l'UI :
-- Connexions de l'administrateur sur les 7 derniers jours SELECT al.created_at, u.username, al.action, al.resource_type, al.ip_address FROM audit_log al JOIN users u ON al.actor_id = u.id WHERE u.username = 'admin' AND al.created_at > NOW() - INTERVAL '7 days' ORDER BY al.created_at DESC;
-- Suppressions massives (plus de 5 suppressions par utilisateur sur 1 heure) SELECT u.username, COUNT(*) AS nb_suppressions, MIN(al.created_at) AS premiere, MAX(al.created_at) AS derniere FROM audit_log al JOIN users u ON al.actor_id = u.id WHERE al.action = 'delete' AND al.created_at > NOW() - INTERVAL '1 hour' GROUP BY u.username HAVING COUNT(*) > 5 ORDER BY nb_suppressions DESC;
Configurer le niveau d'audit
Le niveau et les actions auditées sont des paramètres dynamiques modifiables via /admin/settings :
| Paramètre | Valeur | Description |
|---|---|---|
audit_log_level | INFO | Niveau de détail (INFO, WARN, ERROR) |
audit_log_actions | JSON array | Actions enregistrées |
Pour ajouter l'action login aux événements audités :
- Accédez à
/admin/settings - Trouvez
audit_log_actions - Ajoutez
"login"au tableau JSON :["create","update","delete","reset_password","login"] - Enregistrez (effet immédiat, pas de redémarrage nécessaire)
Corréler avec journalctl
Les logs systemd de gitrust complètent le journal d'audit en capturant les erreurs techniques et les événements bas niveau (connexions SSH refusées, erreurs de migration, etc.).
# Logs gitrust des 24 dernières heures sudo journalctl -u gitrust --since "24 hours ago" --no-pager # Filtrer les erreurs et avertissements uniquement sudo journalctl -u gitrust -p err..warning --since "24 hours ago" --no-pager # Corréler avec une adresse IP spécifique sudo journalctl -u gitrust --since "24 hours ago" --no-pager \ | grep "192.168.1.100" # Suivre les logs en temps réel sudo journalctl -u gitrust -f
Signaux d'alerte à surveiller
# Tentatives d'authentification SSH échouées répétées sudo journalctl -u gitrust --since "1 hour ago" --no-pager \ | grep -i "auth.*fail\|invalid.*key\|permission denied" \ | wc -l # Réponses 429 (rate limiting déclenché) sudo journalctl -u gitrust --since "1 hour ago" --no-pager \ | grep "429" | awk '{print $NF}' | sort | uniq -c | sort -rn | head
Conservation des logs
La rétention des logs d'audit en base de données n'a pas de limite automatique dans la version actuelle — les entrées s'accumulent indéfiniment. Pour une instance à long terme, planifiez une purge périodique :
-- Supprimer les entrées d'audit de plus de 1 an (hors suppressions et reset mdp) DELETE FROM audit_log WHERE created_at < NOW() - INTERVAL '1 year' AND action NOT IN ('delete', 'reset_password');
Vérifiez les exigences de conservation de votre organisation avant de purger (RGPD, ANSSI PA-074 recommande 12 mois minimum pour les événements de sécurité).
GitRust