Aller au contenu
Bastide Connexion Créer un compte
Appuyez sur / pour chercher

Journal d'audit

EnglishMarkdownv0.3.0

Le journal d'audit dit qui a fait quoi, sur quoi, pour le compte de qui, et avec quel résultat. Cette page explique ce qu'il contient, comment le lire et l'exporter depuis la console, par un agent ou par l'API, combien de temps il est gardé, et ce qui garantit qu'il n'a pas été réécrit.

Ce qui est journalisé

Chaque appel d'une opération de la plateforme écrit une ligne, qu'il soit permis, refusé ou en erreur, qu'il vienne de la console, de la ligne de commande, de l'API ou d'un agent. S'y ajoutent les gestes de la plateforme elle-même (une suppression différée, une relance du second facteur) et ceux d'un exploitant de Glowsoft sous un accès à votre projet (voir Sécurité).

Une ligne lue porte :

ChampSens
occurredAtL'instant, à la microseconde.
actorTypehuman (une personne), agent, service (un compte de service) ou system (la plateforme).
actorIdLe compte, l'agent ou le jeton qui a agi.
onBehalfOfPour un agent ou un compte de service : la personne au nom de qui il agit.
actionL'opération, sous la forme objet.verbe : deployment.create, member.manage, env.write.production.
resultallowed, denied ou error.
denyReasonPour un refus : son motif.
targetLa ressource visée, typée (un projet, un domaine, un membre…).
changesPour un changement de réglages du projet : chaque réglage, sa valeur avant et après.

Ce qui ne sort pas : l'adresse IP, l'agent utilisateur, les portées du jeton, et l'état avant et après d'un geste autre qu'un changement de réglages. Le journal sert à savoir qui a fait quoi ; il n'est pas une copie de vos données.

Deux journaux, qui ne se recouvrent pas

  • Le journal d'un projet : tout ce qui nomme ce projet. Il se lit au rang Lecteur du projet, ou avec le rôle Sécurité.
  • Le journal de l'organisation : ce qui ne nomme aucun projet (rôles des membres, comptes de service, second facteur obligatoire, raccordements GitHub, création de projets). Il se lit au rang Administrateur, ou avec le rôle Sécurité.

Un Administrateur de l'organisation ne lit donc pas, par ce biais, le journal d'un projet où il n'a pas de rôle. L'union des deux est tout ce que le journal tient pour votre organisation.

Lire depuis la console

Dans un projet, ouvrez Audit : l'écran « Journal d'audit » liste les lignes de la plus récente à la plus ancienne. Le filtre en tête choisit « Tout », « Refusé », « En erreur » ou « Autorisé ». Cliquez une ligne pour son détail ; une modification de réglages y montre chaque valeur avant et après, et dit si elle exigeait un redéploiement. « Entrées plus anciennes » charge la page suivante.

Pour l'organisation, l'écran Membres porte la carte « Journal de l'organisation » avec ses dernières lignes.

Lire par un agent, la ligne de commande ou l'API

Un agent lit le journal d'un projet par l'outil audit_read :

{
  "projectId": "prj_01JQ8ZK4M7NP2RSTVWXYZ34567",
  "result": "denied",
  "limit": 50
}

Paramètres : action (une opération précise), result, limit (100 au plus par page), cursor pour la page suivante. Avec "source": "executions", l'outil rend les exécutions d'agent du projet et leur détail : modèle, outils appelés, entrées et sorties expurgées, jetons, coût, durée.

bastide audit read --project-id prj_01JQ8ZK4M7NP2RSTVWXYZ34567 --result denied
bastide organization audit read --organization-id org_01JQ8ZK4M7NP2RSTVWXYZ34567

Le journal de l'organisation n'a pas d'outil MCP : il se lit par la console, la ligne de commande ou l'API. Références : audit.read, organization.audit.read.

Exporter

L'export est gratuit sur tous les paliers, en trois formats. C'est la même route que la lecture, demandée avec l'en-tête Accept :

FormatEn-tête Accept
NDJSON, une ligne par entréeapplication/x-ndjson
CSVtext/csv
JSONapplication/vnd.bastide.export+json
curl https://api.bastide.app/v1/projects/prj_01JQ8ZK4M7NP2RSTVWXYZ34567/audit \
  -H "Authorization: Bearer $BASTIDE_TOKEN" \
  -H "Accept: text/csv" -o audit.csv

L'export rend tout le journal demandé en un fichier, sans curseur, sous les filtres passés. Chaque ligne est contrôlée contre le schéma publié avant de partir ; une ligne non conforme interrompt le fichier plutôt que de sortir fausse.

Dans la console, « Exporter » (écran Audit) télécharge le journal du projet en NDJSON sous le filtre affiché, et « Exporter le journal » (écran Membres) celui de l'organisation.

Combien de temps il est gardé

La grille tarifaire fixe la durée du journal d'un projet par palier :

DécouverteStandardProSouverain
30 jours12 mois24 mois36 mois

Aujourd'hui, la plateforme conserve le journal trois ans sur tous les paliers, par partitions mensuelles entières, et la lecture n'applique pas encore les bornes de la grille. Aucune purge n'efface une partition de moins de trois ans.

Ce qui garantit son intégrité

  • Ajout seul. Le journal ne se modifie pas : une ligne écrite n'est ni réécrite ni effacée par la plateforme.
  • Chaînage. Chaque entrée porte une empreinte calculée avec celle de l'entrée précédente. Retirer ou modifier une entrée rompt la chaîne, et la vérification nomme la première ligne en défaut. Cette vérification est un outil d'exploitation de Glowsoft, qui parcourt toute la chaîne.
  • Copie hors de la plateforme. La plateforme sait déposer chaque jour une copie du journal chez un second opérateur français, en écriture unique, que même un administrateur de la plateforme ne peut supprimer avant trois ans. Cette copie dépend de la configuration de l'installation.

Les gestes de l'équipe de Glowsoft au niveau de la plateforme sont tenus dans un journal d'exploitation distinct, lui aussi chaîné, que vous ne lisez pas. Ce qu'un exploitant fait sur vos données sous un accès entre, lui, dans le journal de votre projet.

Note. L'envoi du flux d'audit vers votre propre outil de supervision (SIEM) n'est pas encore réglable : aucun écran ni aucune opération ne le configure.

Erreurs fréquentes

CodeCe qui se passeQue faire
insufficient_rankVous n'avez ni le rang requis ni le rôle Sécurité.Demandez le rôle Sécurité à un Administrateur.
curseur_expireLe curseur de pagination a expiré.Relancez la lecture depuis le début.
curseur_invalideLe curseur n'a pas été émis par ce serveur, ou il a été modifié.Passez le nextCursor tel quel.

Voir aussi : Sécurité, Organisations et membres, Journaux, Sécurité des agents.

Signaler une erreur sur cette page