Rapports et journalisation
Lorsqu’un événement inattendu survient — comme la suppression d’un dépôt ou l’échec d’un workflow — vous avez besoin de détails précis : qui l’a fait, quand et comment. Les journaux d’audit de GitHub capturent ces informations pour faciliter le dépannage, assurer la conformité et mener des enquêtes de sécurité.
Vous pouvez accéder au journal d’audit via GitHub.com, GitHub Enterprise Server ou GitHub AE. L’interaction avec le journal d’audit via l’API GraphQL ou l’API REST permet d’extraire des types d’informations spécifiques, bien que certaines limitations existent.
💡 Astuce
Supposons qu’un dépôt critique ait disparu pendant la nuit. Vous utiliserez les journaux d’audit pour identifier l’événement de suppression et rétablir la continuité.
Qu’est-ce qu’un enregistrement de journal ?
Le journal d’audit de votre organisation enregistre les actions effectuées par ses membres. Accessible aux propriétaires de l’organisation, il fournit des informations sur les actions ayant un impact sur l’organisation, notamment :
- Le dépôt concerné par l’action
- L’utilisateur ayant effectué l’action
- L’action réalisée
- Le pays ou la région où l’action a eu lieu
- La date et l’heure de l’action
📌 Remarque
Les journaux sont conservés jusqu’à 90 jours dans GitHub Enterprise Cloud (120 jours via GraphQL sur Enterprise Server).
Affichage et exportation des journaux d’audit via l’interface GitHub
- Sur GitHub.com, accédez aux Paramètres de votre organisation > Journal d’audit.
- Utilisez le champ Filtres pour affiner les résultats par acteur, dépôt, action ou date.
- Cliquez sur Exporter et choisissez CSV ou JSON pour télécharger les données.

🔍 Qualificateurs et exemples
| Qualificateur | Valeur d’exemple |
|---|---|
action | team.create |
actor | octocat |
user | codertocat |
org | octo-org |
repo | octo-org/documentation |
created | 2019-06-01 |
📡 Accès aux journaux d’audit via API
REST API
- Portée : GitHub Enterprise Cloud (jusqu’à 90 jours ; événements Git pendant 7 jours).
- Surveillance : Modifications des paramètres, mises à jour des autorisations, adhésion aux équipes, changements d’applications, événements Git (push, pull, merge).
- Exemple :
GET /orgs/{org}/audit-log?phrase=git.push
Authorization: Bearer YOUR_TOKENGraphQL API
- Portée : GitHub Enterprise Server (jusqu’à 120 jours).
- Surveillance : Paramètres, autorisations, équipes, applications.
- Limite : Ne couvre pas les événements Git.
- Exemple :
query {
auditLogEntries(first: 20, query: "org:octo-org action:repo.cleanup") {
nodes {
action
actor { login }
createdAt
repository { name }
}
}
}🕵️♀️ Investigation des ressources manquantes
Pour récupérer ou auditer des ressources supprimées (ex. : dépôts, équipes) :
- Identifier l’événement (ex. :
repository.deleted). - Interroger l’API avec des filtres :
- REST :
?phrase=repository.deleted - GraphQL :
query auditLogEntries(query: "repository.deleted")
- REST :
- Inspecter les métadonnées : acteur, horodatage, nom du dépôt ou de l’équipe.
- Remédier : restaurer depuis une sauvegarde ou revoir les autorisations.
Exemples :
GET /orgs/{org}/audit-log?phrase=repository.deleted
Authorization: Bearer YOUR_TOKENquery {
auditLogEntries(first: 10, query: "repository.deleted") {
nodes {
action
actor { login }
createdAt
}
}
}🧩 Cas d’usage des journaux d’audit
- Incidents de sécurité : retracer les accès non autorisés ou les fuites de données.
- Audits de conformité : prouver l’application des politiques (SOC 2, ISO 27001).
- Dépannage opérationnel : diagnostiquer les erreurs CI/CD ou de permissions.
- Surveillance des accès : examiner l’utilisation des tokens API et l’activité SSH/Git.
🔐 Sécurité et conformité
- Rétention des données : 90 jours sur Enterprise Cloud ; 120 jours sur Enterprise Server.
- Contrôle d’accès : seuls les propriétaires et responsables sécurité peuvent consulter les journaux.
- Journalisation IP : enregistre l’IP source pour détecter les accès suspects.
- Conformité régionale : respecte les exigences locales de gestion des données.
📤 Streaming des journaux d’audit
Pour envoyer les journaux en temps réel vers des plateformes SIEM (Splunk, Datadog) :
- Aller dans Paramètres > Journal d’audit.
- Sous Streaming, configurer une destination (AWS S3, Azure Event Hubs).
- Vérifier la réception des événements dans votre SIEM.
📚 Types supplémentaires de journaux d’audit
- Journal d’activité Git :
phrase=git.push - Journal d’activité API :
phrase=api.request - Utilisateurs gérés (EMU) :
user.login,repository.permissions_updated,repository.forked - Utilisation des tokens :
phrase=tokenpour détecter les identifiants compromis
🛡️ Fonctionnalités de sécurité d’un dépôt GitHub
SECURITY.md: définit le processus de signalement et les versions prises en charge.- Protection des branches : impose les revues, les vérifications de statut et la signature des commits.
- Alertes Dependabot : détection automatique des vulnérabilités.
- Analyse de code : via CodeQL.
- Scan de secrets & protection push : prévention en temps réel.
- Avis de sécurité : rédaction, collaboration et publication.
- Graphique de dépendances : visualisation et audit.
- 2FA & RBAC : authentification forte et privilèges minimaux.
🔑 Accès API et intégrations
| Type de token | Description |
|---|---|
| PATs | Liés à un compte utilisateur ; scripts simples ; portée large. |
| Tokens d’installation | Pour les apps GitHub ; permissions fines. |
| Tokens OAuth | Pour les apps OAuth ; accès limité ; privilégier le moindre privilège. |
| Tokens d’appareil | Pour les flux d’authentification par appareil. |
| Tokens de rafraîchissement | Renouvellement sans réauthentification. |
Limites de taux :
| Type d’accès | Limite |
|---|---|
| Non authentifié | 60 requêtes/heure |
| Authentifié | 5 000 requêtes/heure |
| Apps | Variable selon l’installation |
Vérification via API :
curl -H "Authorization: token YOUR_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/rate_limit