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

  1. Sur GitHub.com, accédez aux Paramètres de votre organisation > Journal d’audit.
  2. Utilisez le champ Filtres pour affiner les résultats par acteur, dépôt, action ou date.
  3. Cliquez sur Exporter et choisissez CSV ou JSON pour télécharger les données.

🔍 Qualificateurs et exemples

QualificateurValeur d’exemple
actionteam.create
actoroctocat
usercodertocat
orgocto-org
repoocto-org/documentation
created2019-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 :
HTTP
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 :
GraphQL
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) :

  1. Identifier l’événement (ex. : repository.deleted).
  2. Interroger l’API avec des filtres :
    • REST : ?phrase=repository.deleted
    • GraphQL : query auditLogEntries(query: "repository.deleted")
  3. Inspecter les métadonnées : acteur, horodatage, nom du dépôt ou de l’équipe.
  4. Remédier : restaurer depuis une sauvegarde ou revoir les autorisations.

Exemples :

HTTP
GET /orgs/{org}/audit-log?phrase=repository.deleted
Authorization: Bearer YOUR_TOKEN
GraphQL
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) :

  1. Aller dans Paramètres > Journal d’audit.
  2. Sous Streaming, configurer une destination (AWS S3, Azure Event Hubs).
  3. 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.loginrepository.permissions_updatedrepository.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 tokenDescription
PATsLiés à un compte utilisateur ; scripts simples ; portée large.
Tokens d’installationPour les apps GitHub ; permissions fines.
Tokens OAuthPour les apps OAuth ; accès limité ; privilégier le moindre privilège.
Tokens d’appareilPour les flux d’authentification par appareil.
Tokens de rafraîchissementRenouvellement sans réauthentification.

Limites de taux :

Type d’accèsLimite
Non authentifié60 requêtes/heure
Authentifié5 000 requêtes/heure
AppsVariable selon l’installation

Vérification via API :

GraphQL
curl -H "Authorization: token YOUR_TOKEN" \
     -H "Accept: application/vnd.github.v3+json" \
     https://api.github.com/rate_limit
Share this Doc

Rapports et journalisation

Or copy link

CONTENTS