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 de 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 « Compréhension de la syntaxe de recherche ».
Pour plus d’informations sur l’API REST de journal d’audit, consultez « Administration de GitHub Enterprise » et « Organisations ».
Exemple 1 : Tous les événements d’une entreprise pour une date spécifique, avec pagination
Vous pouvez utiliser la pagination basée sur la page. Pour plus d’informations sur la pagination, consultez « Utilisation de la pagination dans l’API REST ».
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 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"