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_TOKEN
GraphQL 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_TOKEN
query {
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=token
 pour 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