Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

Utilisation de l’API de journal d’audit pour votre entreprise

Vous pouvez récupérer par programmation des événements d’entreprise avec l’API REST ou GraphQL.

Who can use this feature

Enterprise owners and site administrators can use the audit log API.

Utilisation de l’API de journal d’audit

Vous pouvez interagir avec le journal d’audit à l’aide de l’API GraphQL ou de l’API REST.

Les horodatages et les champs de date de la réponse de l’API sont mesurés en millisecondes d’époque UTC.

Interrogation de l’API GraphQL de journal d’audit

Pour garantir la sécurité de votre propriété intellectuelle et assurer la conformité de votre entreprise, vous pouvez utiliser l’API GraphQL de journal d’audit pour conserver des copies de vos données de journal d’audit et superviser : * L’accès aux paramètres de votre organisation ou de votre dépôt.

  • Les modifications des autorisations.
  • Les utilisateurs ajoutés ou supprimés dans une organisation, un dépôt ou une équipe.
  • Les utilisateurs promus en administrateurs
  • Modifications apportées aux autorisations de GitHub App

Notez que vous ne pouvez pas récupérer les événements Git à l’aide de l’API de journal d’audit.

La réponse GraphQL peut inclure des données allant jusqu’à 90 à 120 jours.

Exemple 1 : Membres ajoutés ou supprimés dans des organisations d’une entreprise

La requête ci-dessous extrait les journaux d’audit de l’entreprise avocado-corp et retourne les 10 premières organisations de l’entreprise, où la seule action effectuée a été l’ajout ou la suppression d’un membre dans une organisation. Les 20 premières entrées du journal d’audit pour chaque organisation sont retournées.

Cette requête utilise le champ auditlog de l’objet Organization ainsi que les objets OrgAddMemberAuditEntry et OrgRemoveMemberAuditEntry. Le compte GitHub qui interroge le journal d’audit d’entreprise doit être propriétaire de chaque organisation au sein de l’entreprise.

{
  enterprise(slug: "avocado-corp") {
    organizations(first: 10, orderBy: {field: LOGIN, direction: DESC}) {
      nodes {
        name
        auditLog(first: 20) {
          edges {
            node {
              ... on OrgAddMemberAuditEntry {
                action
                actorLogin
                createdAt
              }
              ... on OrgRemoveMemberAuditEntry {
                action
                actorLogin
                createdAt
              }
            }
          }
        }
      }
      pageInfo {
        hasNextPage
        endCursor
      }
    }
  }
}

L’API GraphQL retourne au maximum 100 nœuds par requête. Pour récupérer des résultats supplémentaires, vous devez implémenter la pagination. Pour plus d’informations, consultez « Limitations des ressources » dans la documentation sur l’API GraphQL et Pagination dans la documentation GraphQL officielle.

Exemple 2 : Événements dans une organisation pour une date et un acteur spécifiques

Vous pouvez spécifier plusieurs expressions de recherche, par exemple created et actor, en les séparant par un espace dans votre chaîne de requête.

La requête ci-dessous extrait tous les journaux d’audit de l’entreprise avocado-corp qui sont liés à l’organisation octo-org, où les actions ont été effectuées par l’utilisateur octocat à partir du 1er janvier 2022. Les 20 premières entrées du journal d’audit sont retournées, avec l’entrée la plus récente en premier.

Cette requête utilise l’interface AuditEntry. Le compte GitHub qui interroge le journal d’audit d’entreprise doit être propriétaire de l’organisation octo-org.

{
  enterprise(slug: "avocado-corp") {
    organizations(first: 1, query: "octo-org") {
      nodes {
        name
        auditLog(first: 20, query: "actor:octocat created:>=2022-01-01T00:00:00.000Z", orderBy: {field: CREATED_AT, direction: DESC}) {
          edges {
            node {
              ... on AuditEntry {
                action
                actorLogin
                createdAt
                user {
                  name
                }
              }
            }
          }
        }
      }
    }
  }
}

Pour obtenir d’autres exemples de requêtes, consultez le dépôt platform-samples.

Interrogation de l’API REST de journal d’audit

Pour garantir la sécurité de votre propriété intellectuelle et assurer la conformité de votre entreprise, vous pouvez utiliser l’API REST de journal d’audit pour conserver des copies de vos données de journal d’audit et superviser : * L’accès aux paramètres de votre organisation ou de votre dépôt.

  • Les modifications des autorisations.
  • Les utilisateurs ajoutés ou supprimés dans une organisation, un dépôt ou une équipe.
  • Les utilisateurs promus en administrateurs
  • Modifications apportées aux autorisations de GitHub App

Le journal d’audit liste les événements déclenchés par les activités qui affectent votre entreprise. Les journaux d’audit pour GitHub Enterprise Server sont conservés indéfiniment, sauf si un propriétaire d’entreprise a configuré une période de conservation différente. Pour plus d’informations, consultez « Configuration du journal d’audit pour votre entreprise ».

Par défaut, seuls les événements des trois derniers mois sont affichés. Pour voir les événements plus anciens, vous devez spécifier une plage de dates avec le paramètre created. Pour plus d’informations, consultez « Présentation de la syntaxe de recherche ».

Pour plus d’informations sur l’API REST de journal d’audit, consultez « Administration Enterprise » et « Organizations ».

Exemple 1 : Tous les événements d’une entreprise pour une date spécifique, avec pagination

Vous pouvez utiliser la pagination basée sur les pages ou la pagination basée sur les curseurs. Pour plus d’informations sur la pagination, consultez « Utilisation de la pagination dans l’API REST ».

Exemple de pagination basée sur les pages

La requête ci-dessous recherche les événements de journal d’audit créés le 1er janvier 2022 dans l’entreprise avocado-corp et retourne la première page avec un maximum de 100 éléments par page à l’aide de la pagination. Pour plus d’informations sur la pagination, consultez « Utilisation de la pagination dans l’API REST ».

curl -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/avocado-corp/audit-log?phrase=created:2022-01-01&page=1&per_page=100"

Exemple de pagination basée sur les curseurs

La requête ci-dessous recherche les événements de journal d’audit créés le 1er janvier 2022 dans l’entreprise avocado-corp et retourne la première page avec un maximum de 100 éléments par page à l’aide de la pagination. Pour plus d’informations sur la pagination, consultez « Utilisation de la pagination dans l’API REST ». L’indicateur --include entraîne le retour des en-têtes avec la réponse.

curl --include -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/avocado-corp/audit-log?phrase=created:2022-01-01&per_page=100"

S’il y a plus de 100 résultats, l’en-tête link inclut des URL pour récupérer les prochaines, premières et précédentes pages des résultats.

link: <https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=MS42NjQzODMzNTk5MjdlKzEyfDloQzBxdURzaFdVbVlLWjkxRU9mNXc%3D&before=>; rel="next", 
<https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=&before=>; rel="first", 
<https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=&before=MS42Njc4NDA2MjM4MzNlKzEyfExqeG5sUElvNEZMbG1XZHA5akdKTVE%3D>; rel="prev"

Copiez le lien de pagination correspondant dans votre prochaine requête. Par exemple :

curl -I -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=MS42Njc4NDA2MjM5NDFlKzEyfHRYa3AwSkxUd2xyRjA5bWxfOS1RbFE%3D&before="

Exemple 2 : Événements pour les demandes de tirage (pull request) dans une entreprise pour une date et un acteur spécifiques

Vous pouvez spécifier plusieurs expressions de recherche, par exemple created et actor, en les séparant par le symbole + ou le code de caractère ASCII %20 dans votre URL formée.

La requête ci-dessous recherche les événements de journal d’audit pour les demandes de tirage, où l’événement s’est produit à partir du 1er janvier 2022 dans l’entreprise avocado-corp et où l’action a été effectuée par l’utilisateur octocat :

curl -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/avocado-corp/audit-log?phrase=action:pull_request+created:>=2022-01-01+actor:octocat"