Tech Hub

@ Solution Architecture Works

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.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 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