Journaux d'audit d'agent : enregistrements de session et d'appel
Les journaux d'audit d'agent ont besoin d'enregistrements de session pour l'autorité et d'enregistrements d'appel pour chaque action externe. Découvrez comment ces deux vues accélèrent la réponse aux incidents.

Les journaux d'audit d'agent échouent lorsqu'ils tentent de répondre à deux questions différentes dans un seul enregistrement. Pendant un incident, vous devez établir à la fois qui détenait l'autorité d'agir et quelle action a réellement atteint le monde extérieur. L'enregistrement de l'exécution ne peut pas remplacer celui de l'appel, et une liste de requêtes ne peut pas expliquer pourquoi le processus avait l'autorisation nécessaire.
Les équipes ne conservent souvent qu'une seule de ces vues, parce qu'elle semble suffisante pendant une démonstration. Puis un agent ouvre un ticket, modifie un paramètre de production ou exécute une commande SSH, et l'enquête se réduit à deviner les heures. C'est évitable. Tenez un journal de session pour l'autorité et le cycle de vie. Tenez un journal d'activité pour chaque action externe tentée. Reliez-les avec un identifiant que ni les humains ni les agents ne peuvent choisir à leur guise.
Un enregistrement d'exécution indique qui détenait l'autorité
Un enregistrement de session doit indiquer si un processus d'agent précis avait l'autorisation d'agir, pendant quelle période et à la suite de quelle décision humaine. C'est l'enregistrement que vous consultez lorsqu'on demande : « Quelle instance d'agent a fait cela et pourquoi l'avons-nous laissée agir ? »
Un enregistrement de session utile commence lorsque le processus demande pour la première fois une autorité, pas lorsqu'un utilisateur ouvre un éditeur et pas lorsqu'un répertoire de projet apparaît. Les noms d'agents sont des éléments de preuve faibles. Deux processus peuvent se présenter sous le même nom, et un binaire malveillant peut emprunter un nom familier. Capturez l'identité du processus connue par l'hôte, son autorité de signature lorsque le système d'exploitation en fournit une, le processus parent lorsque c'est utile, un identifiant de session généré, les heures de début et de fin, ainsi que le résultat de l'autorisation.
L'enregistrement de session doit aussi contenir les événements du cycle de vie. L'approbation est un événement. La révocation est un événement. La fin du processus est un événement. Le verrouillage du coffre-fort d'identifiants, s'il bloque l'activité, est également un événement qu'il vaut la peine de corréler. Sans ces limites, l'enquêteur ne peut pas déterminer si un appel s'est produit pendant une période approuvée ou après un arrêt supposé.
Ne transformez pas l'enregistrement de session en journal intime de chaque réflexion du modèle, ligne de terminal et modification de fichier. Vous créeriez une masse de données sensibles tout en manquant la limite importante : un processus d'agent a reçu l'autorité de demander à une passerelle d'effectuer des actions externes. Capturez clairement les éléments de preuve qui établissent cette limite.
Voici un enregistrement de session simplifié :
{
"type": "session.authorized",
"session_id": "ses_7f4c2",
"observed_at": "2025-04-18T14:03:11Z",
"process": {
"pid": 8124,
"signing_authority": "Example Development Team",
"parent_pid": 8090
},
"decision": "approved",
"approved_by": "local_operator"
}
L'enregistrement n'a pas besoin du nom d'un employé pour être utile. Sur un poste partagé, local_operator peut être le niveau d'attribution honnête. Prétendre en savoir davantage produit une fiction présentée avec assurance. Si votre environnement peut associer l'approbation à une personne authentifiée, consignez cette association et la manière dont elle a été établie.
Un enregistrement de session ne doit jamais affirmer qu'une exécution entière était sûre. L'approbation accorde une autorité, mais elle ne préapprouve pas tous les effets qu'un processus peut produire. Cette distinction peut sembler pointilleuse jusqu'à ce qu'un agent de programmation garde une session ouverte pendant des heures et effectue des centaines d'appels sous une seule approbation.
Un enregistrement d'appel indique ce qui a atteint le monde extérieur
Un enregistrement d'appel doit décrire une opération tentée et son résultat. C'est l'élément de preuve nécessaire lorsqu'on demande : « L'agent a-t-il envoyé cette requête, vers quelle cible et avec quel résultat ? »
Consignez les tentatives, pas seulement les réussites. Une requête refusée peut montrer qu'un agent cherchait un identifiant. Une requête échouée peut révéler un hôte mal orthographié, un secret expiré ou une commande dangereuse rejetée par le système distant. Une requête annulée peut expliquer pourquoi une session semble s'être arrêtée au milieu d'un déploiement. Les journaux qui ne montrent que les réussites racontent une histoire rassurante, mais incomplète.
Pour une action HTTP, conservez l'identité de la destination, la méthode HTTP, le chemin ou une représentation contrôlée du chemin, la référence de l'identifiant plutôt que sa valeur, l'heure de la requête, l'heure de fin, le résultat, l'identifiant de session et un identifiant d'appel. Pour SSH, conservez l'identité de l'hôte visé, la commande ou une représentation sûre de celle-ci, le résultat de la connexion, le code de sortie distant lorsqu'il est disponible, l'identifiant de session et l'identifiant d'appel.
Vous devez décider avec soin quelles données de requête conserver. Enregistrer par habitude tous les en-têtes et corps complets est une source d'incident en attente. Les en-têtes d'autorisation, les cookies, les URL signées, les jetons d'accès, les données privées de clients et les mots de passe s'y cachent souvent. Un bon enregistrement préserve le sens de l'opération tout en supprimant les secrets. Par exemple, POST /v1/users/123/disable peut suffire à reconstituer une modification administrative. Copier tout le corps JSON pourrait exposer bien plus de données que l'enquête n'en nécessite.
Utilisez l'identité de la cible, pas seulement une chaîne d'URL brute. https://api.example.test et https://api.example.test:443 peuvent désigner la même destination, tandis qu'un hôte ressemblant peut différer d'un seul caractère. Pour SSH, consignez l'identité de l'hôte utilisée pour la vérification lorsque votre système peut l'obtenir. Un nom d'hôte seul ne suffit pas à confirmer que la connexion a atteint la machine attendue.
Cet ensemble montre la séparation :
{
"type": "call.completed",
"call_id": "call_b91d",
"session_id": "ses_7f4c2",
"observed_at": "2025-04-18T14:09:27Z",
"channel": "http",
"operation": "POST",
"target": "api.example.test/v1/deployments/42/cancel",
"credential_ref": "deployment-service",
"authorization": "session_approved",
"outcome": "completed",
"response_status": 202
}
L'identifiant de session indique quelle autorité l'appel a utilisée. La cible et le résultat indiquent ce qui s'est produit. Si vous fusionnez ces éléments dans un événement vague comme agent performed task, vous n'aurez correctement enregistré aucune des deux réponses.
L'approbation et l'exécution sont deux faits distincts
Les équipes confondent souvent un événement d'approbation avec la preuve qu'une requête a été exécutée. Ce sont deux faits distincts, et une piste d'audit doit conserver les deux.
Un opérateur peut approuver un nouveau processus d'agent, puis s'absenter. Le processus peut ne faire aucun appel parce que la tâche s'achève localement. Il peut effectuer une requête API échouée ou cinquante requêtes réussies. L'enregistrement d'approbation reste identique dans tous les cas. Seuls les enregistrements d'appels montrent l'effet produit.
La confusion inverse existe aussi. Quelqu'un voit une requête sortante dans un journal réseau et suppose qu'un agent approuvé l'a envoyée. Un journal réseau peut établir l'existence d'une connexion ou d'un fragment de requête, selon l'endroit où il a été capturé. Il ne montre généralement pas la décision d'approbation, l'identité réelle du processus ni le fait qu'une passerelle ait injecté un identifiant pour le compte de l'agent. Ne lui demandez pas de répondre à des questions pour lesquelles il n'a jamais été conçu.
La publication spéciale NIST 800-92, Guide to Computer Security Log Management, distingue la source de l'événement, l'infrastructure de journalisation et le processus d'analyse. Sa leçon pratique pour les systèmes d'agents est simple : collectez l'événement à la couche qui connaît le fait. La couche d'autorisation sait si une session a reçu une autorité. La passerelle d'action sait quelle opération elle a tentée avec un identifiant protégé. Un pare-feu connaît le trafic qu'il a observé. Chaque enregistrement possède une portée probante différente.
Un état d'autorisation précis sur chaque appel est utile. session_approved signifie que la session disposait d'une approbation permanente. per_call_approved signifie qu'un opérateur a approuvé cette utilisation. denied_locked signifie que le coffre-fort d'identifiants a refusé la tentative parce qu'il était verrouillé. denied_user signifie qu'un opérateur l'a refusée. Ce ne sont pas des libellés décoratifs. Ils indiquent à l'enquêteur si l'opération a atteint l'exécuteur d'action et si une intervention humaine l'a arrêtée.
Ne qualifiez pas chaque appel réussi d'« approuvé ». Ce mot masque la différence entre une permission accordée au début de la session et une permission accordée au moment de l'utilisation. Lorsqu'un examinateur demande si quelqu'un a approuvé la suppression, l'enregistrement doit fournir la réponse en une seule lecture.
L'approbation par appel a sa place, mais utilisez-la comme un contrôle ciblé. Appliquez-la aux identifiants dont chaque utilisation a de lourdes conséquences ou lorsque la cible change d'état d'une manière qu'un opérateur doit voir. Si vous exigez un clic humain pour les lectures courantes et les appels de build sans danger, les utilisateurs finissent par approuver une succession de demandes sans les lire. L'approbation existe toujours sur le papier, mais elle ne signifie plus un consentement éclairé.
Une chronologie d'échec révèle les lacunes cachées par les résumés
Une seule chronologie d'incident suffit à montrer l'intérêt des deux vues. Supposons qu'un agent de programmation autonome reçoive la tâche de nettoyer les environnements de prévisualisation obsolètes. L'opérateur approuve son processus pour la session. L'agent découvre un ancien identifiant d'API de déploiement et demande à la passerelle d'effectuer des appels avec celui-ci.
À 14 h 03, le journal de session enregistre un processus approuvé et lui attribue ses_7f4c2. À 14 h 07, le journal d'activité enregistre une requête GET qui liste les déploiements. À 14 h 09, il enregistre l'appel d'annulation présenté plus haut. À 14 h 10, une deuxième tentative d'annulation reçoit une réponse 403. À 14 h 12, l'opérateur révoque la session après avoir constaté que l'agent avait sélectionné le mauvais groupe d'environnements.
Imaginez maintenant que vous n'ayez conservé que les enregistrements de session. Vous pourriez dire qu'un processus a été approuvé puis révoqué. Vous ne pourriez pas établir s'il a annulé un environnement, plusieurs, ou aucun. Vous ne pourriez pas distinguer une deuxième tentative bloquée d'une tentative réussie. Il faudrait interroger le service de déploiement, dont la durée de conservation ou le niveau de détail des requêtes ne répond peut-être pas à vos besoins.
Imaginez ensuite que vous n'ayez conservé que les enregistrements d'appels. Vous verriez deux requêtes d'annulation. Vous ne pourriez pas établir quel processus local les a lancées, si un opérateur avait approuvé ce processus, si l'approbation était encore valide au moment des appels, ni si l'examinateur avait agi rapidement après la révocation.
La chronologie doit préserver l'ordre sans prétendre que l'heure murale est parfaite. Les machines dérivent. Les services distants fournissent leurs propres horodatages. Écrivez un horodatage de passerelle lorsque vous observez la requête et, lorsque c'est pertinent, conservez séparément l'horodatage du résultat distant. Utilisez une séquence d'ordonnancement interne au journal d'audit si vous en avez une. Ne déduisez pas de causalité simplement parce que deux événements partagent la même seconde sur une horloge.
La question délicate est de savoir si une session révoquée peut encore avoir des appels qui se terminent ensuite. C'est possible, selon le moment où la révocation atteint l'exécuteur et selon qu'une requête a déjà quitté la machine. Vos enregistrements doivent le rendre visible. Consignez l'heure de révocation, puis chaque fin d'appel ultérieure, avec l'heure de début et l'heure de fin de l'appel. Un système qui supprime simplement une session rend cette analyse impossible.
Les identifiants de corrélation doivent être contrôlés strictement
Un identifiant de session ne fonctionne que si la passerelle l'attribue et le contrôle. Ne laissez pas l'agent fournir un identifiant de session et ne le considérez pas comme un élément de preuve de sécurité.
Les agents peuvent transporter du texte arbitraire entre les appels d'outils. Ils peuvent réutiliser un identifiant obsolète après un redémarrage, faire une faute de frappe ou revendiquer délibérément l'identifiant d'une autre session si l'interface le permet. La passerelle doit déduire l'association à partir de la connexion locale authentifiée ou de la relation entre les processus, puis ajouter elle-même l'identifiant de session à chaque appel.
Les identifiants d'appel doivent être traités de la même manière. Générez-les à la limite d'action, avant que la requête ne quitte la machine. Si une requête HTTP est réessayée, indiquez si la nouvelle tentative est un nouvel essai lié à l'appel d'origine ou une partie du même appel comportant plusieurs tentatives de transport. Les deux modèles peuvent fonctionner. Les mélanger détruit la précision des comptages pendant une panne.
Utilisez un modèle de corrélation simple et cohérent :
- Un identifiant de session regroupe les événements d'autorité et de cycle de vie d'un même processus d'agent.
- Un identifiant d'appel identifie une opération externe demandée.
- Un identifiant de tentative identifie une tentative de transport lorsque les nouvelles tentatives comptent.
- Une référence d'identifiant désigne le secret configuré sans en exposer la valeur.
- Une référence de cible désigne l'hôte, le service ou la destination de la commande.
Ne cherchez pas à rendre chaque identifiant compréhensible par un humain. Son rôle est de relier les enregistrements de manière fiable. Des libellés lisibles peuvent les accompagner, mais les libellés changent, entrent en collision et invitent aux modifications improvisées.
Pour les agents concurrents, la corrélation évite une erreur fréquente. Un ingénieur voit une requête destructive à 16 h 21, trouve la transcription d'un terminal d'agent à 16 h 21 et suppose qu'elles correspondent. Pendant ce temps, un autre processus d'agent s'exécutait sous le même compte. L'identifiant de session présent sur l'enregistrement d'action supprime cette incertitude. S'il n'existe pas de lien stable, indiquez cette limite dans le rapport d'incident au lieu de la combler avec une fausse certitude.
Le journal d'audit doit montrer les refus comme les utilisations
Les actions refusées comptent souvent davantage que les actions achevées, car elles révèlent ce que l'agent a tenté de faire avant qu'un contrôle ne l'arrête. Consignez-les avec suffisamment de contexte pour expliquer la décision, mais évitez que le journal des refus devienne une nouvelle source de secrets.
Un coffre-fort d'identifiants verrouillé doit refuser toute action qui en dépend. L'enregistrement d'appel qui en résulte doit indiquer que l'action a été refusée avant toute exécution externe, identifier la session et la cible demandée, et préciser la catégorie de motif. Il ne doit contenir ni faux jeton, ni fragment de clé privée, ni en-tête d'autorisation copié.
Le refus par appel mérite la même attention. Si un opérateur refuse une commande SSH, consignez la représentation de la commande, la cible, l'heure de la décision et son résultat. L'absence de code de sortie distant prend alors tout son sens : l'exécuteur n'a jamais lancé la commande. C'est différent d'une commande lancée puis terminée avec un code non nul.
Sallyport utilise trois contrôles fixes : une barrière absolue sur le coffre-fort, l'autorisation par session par défaut et l'approbation par appel facultative pour un identifiant donné. Ce modèle limité facilite l'interprétation de l'audit, car chaque enregistrement peut indiquer quelle décision a arrêté ou autorisé l'action.
Évitez la réponse à la mode qui consiste à créer un immense langage de politiques pour chaque action d'agent. Elle plaît parce qu'elle promet une automatisation complète. En pratique, un moteur de politiques ajoute un second programme que les équipes doivent examiner, tester, mettre à jour et expliquer pendant un incident. Si vous avez besoin de politiques pour la gouvernance du réseau ou des services, appliquez-les à la couche concernée. Ne prétendez pas qu'un ensemble de règles illisible dispense d'éléments de preuve clairs sur les sessions et les appels.
Un enregistrement doit distinguer les résultats suivants :
- L'agent n'a jamais disposé d'une session autorisée.
- La session avait une autorité, mais le coffre-fort était verrouillé.
- La passerelle a demandé une décision par appel et l'opérateur l'a refusée.
- La passerelle a exécuté l'action et la cible distante l'a refusée ou a échoué.
- La passerelle a exécuté l'action et reçu un résultat positif.
Ces situations exigent des suites différentes. Une demande de session refusée peut indiquer un processus non fiable. Une réponse distante 403 peut signaler un problème de portée d'identifiant. Un appel réussi mais indésirable peut nécessiter l'examen de l'instruction donnée à l'agent, de la décision d'approbation de la session et de l'utilisation autorisée de l'identifiant cible.
La preuve d'altération protège l'enregistrement après l'incident
Les journaux applicatifs ordinaires sont faciles à modifier, tronquer ou remplacer après la prise de contrôle d'un hôte. Cela ne les rend pas inutiles, mais limite ce qu'ils peuvent prouver. Un journal d'audit chaîné par hachage rend les modifications ultérieures visibles lorsqu'un vérificateur compare la chaîne aux enregistrements reçus.
La distinction compte. Une chaîne de hachage peut montrer qu'une entrée a changé ou disparu au milieu d'une chaîne conservée. Elle ne peut pas prouver que le système a enregistré chaque événement qui aurait dû exister. Elle ne peut pas protéger un hôte déjà compromis avant la création de l'événement. Elle ne peut pas dire si un opérateur a compris une demande d'approbation. Toute affirmation allant au-delà relève de la mise en scène sécuritaire.
La RFC 5848, Signed Syslog Messages, traite d'un problème proche : les messages de journal peuvent perdre leur intégrité et la garantie de leur origine lorsqu'ils traversent plusieurs systèmes. Sa leçon reste valable même si vous utilisez un journal local chiffré plutôt que syslog. Protégez les journaux près du lieu où l'événement se produit, conservez les éléments d'ordonnancement et vérifiez au lieu de vous fier uniquement à une interface élégante.
Sallyport produit son journal Sessions et son journal Activity à partir d'un même journal d'audit chiffré, chaîné par hachage et protégé contre les écritures. Sa commande sp audit verify vérifie la chaîne hors ligne sur le texte chiffré, sans nécessiter la clé du coffre-fort. C'est utile lorsque l'examinateur doit valider l'intégrité des enregistrements sans recevoir les secrets utilisés pour les actions.
Effectuez la vérification avant de filtrer, d'exporter ou d'annoter les enregistrements d'un incident. Préservez d'abord les éléments de preuve chiffrés originaux. Créez ensuite une copie de travail pour l'analyse. Si la vérification échoue, consignez l'échec et l'artefact exact examiné. Ne poursuivez pas discrètement avec un export nettoyé, car la question de l'intégrité fait alors partie de l'incident.
La preuve d'altération modifie aussi la discipline opérationnelle. Si votre équipe sait qu'une modification ultérieure sera visible, elle cesse de considérer le journal d'audit comme un endroit pratique où réécrire l'histoire après un mauvais déploiement. Cela n'empêche pas les erreurs. En revanche, cela préserve les éléments nécessaires pour en tirer des leçons.
La conservation nécessite des limites, pas une collecte indiscriminée
Conservez les enregistrements de session et d'appel assez longtemps pour enquêter sur une découverte tardive, une utilisation abusive d'identifiants et les revues d'accès, mais ne conservez pas chaque charge utile indéfiniment sous prétexte que le stockage est bon marché. Les journaux les plus dangereux sont souvent ceux que personne n'a classifiés.
Commencez par les questions auxquelles votre équipe doit répondre en cas d'incident. Combien de temps après une exécution d'agent le propriétaire d'un service peut-il remarquer une modification indésirable ? Pendant combien de temps devez-vous retracer l'utilisation d'un identifiant après le départ d'un membre du personnel ? Quelles réglementations ou quels contrats imposent une durée de conservation ? Ces réponses fixent la période. Elles ne justifient pas la collecte de prompts bruts, de réponses complètes ou de secrets inutiles.
Séparez la visibilité opérationnelle de la conservation forensique. Les opérateurs peuvent avoir besoin d'une vue concise des sessions actives et des appels récents. Les enquêteurs peuvent avoir besoin de la séquence immuable complète, avec les refus et les détails horaires. Donner à tous les développeurs un accès sans restriction à cette dernière transforme la piste d'audit en un autre jeu de données sensibles.
Définissez des limites de rôles pour la consultation, mais ne vous servez pas du contrôle d'accès pour cacher des éléments aux personnes responsables des incidents. Un propriétaire de service peut avoir besoin de savoir qu'un appel a modifié son service. Il n'a pas besoin d'un jeton porteur ni d'une charge utile client sans rapport pour le comprendre.
Lorsqu'un enregistrement renvoie à un contenu sensible conservé ailleurs, stockez une référence contrôlée et une procédure de récupération. Par exemple, conservez un identifiant de requête que le service cible pourra utiliser pour retrouver une charge utile protégée selon ses propres règles d'accès. Le journal d'actions reste ainsi utile sans dupliquer des données métier sensibles dans chaque système d'audit.
La suppression nécessite son propre enregistrement. Si la conservation arrive à échéance pour un lot d'entrées, consignez l'événement de conservation, sa portée et l'autorité ayant entraîné la suppression avant d'effacer les données. Sans cela, un vérificateur ultérieur ne peut pas distinguer une expiration autorisée d'une absence inexpliquée. La politique de conservation doit être assez claire pour qu'un examinateur puisse l'appliquer sans consulter la personne qui a écrit le système initial.
Construire la vue d'incident en partant de l'appel
Pendant une enquête active, commencez par l'appel suspect et remontez vers les autres éléments. C'est généralement la preuve la plus concrète : une cible, une opération, une heure et un résultat. Utilisez son identifiant de session pour récupérer l'enregistrement d'autorité, puis examinez les appels proches dans cette session ainsi que l'événement de révocation ou de fin de session.
Suivez cette séquence :
- Préservez et vérifiez les enregistrements d'audit originaux avant de les modifier ou de les exporter.
- Repérez l'enregistrement d'appel par destination, identifiant d'appel, opération ou fenêtre temporelle de l'incident.
- Récupérez l'enregistrement de session associé et confirmez l'identité du processus, l'heure d'approbation et l'état du cycle de vie.
- Examinez tous les appels de cette session autour de l'événement, y compris les refus et les nouvelles tentatives.
- Comparez la chronologie des actions avec les propres enregistrements du service cible, puis documentez les lacunes au lieu de les combler par des suppositions.
Cette méthode révèle à la fois l'erreur évidente et l'erreur plus discrète. L'erreur évidente est un appel qui n'aurait jamais dû avoir lieu. L'erreur plus discrète est une session restée autorisée après la fin prévue de la tâche, ou une nouvelle tentative qui a répété une action après l'expiration d'un délai du service.
Ne faites pas tourner tous les identifiants en premier simplement parce que cette mesure semble décisive. Si le coffre-fort a gardé les identifiants hors de portée de l'agent et que l'enregistrement montre un appel émis par la passerelle vers une seule cible connue, une rotation générale peut provoquer une interruption inutile. Révoquez immédiatement les sessions actives lorsqu'une utilisation abusive en cours est plausible. Utilisez ensuite les enregistrements d'appels pour décider quel identifiant, quelle cible ou quelle portée d'accès doit être traité.
Deux vues produisent effectivement davantage d'enregistrements. Elles suppriment aussi la phrase la plus coûteuse d'un rapport d'incident : « Nous ne pouvons pas déterminer si l'agent approuvé a réellement effectué cette modification. » Rendez l'autorité visible à la limite de session et les effets visibles à la limite d'appel. Toute solution moindre laisse votre équipe reconstituer un événement de sécurité à partir de fragments.
FAQ
Quelle est la différence entre un journal de session d'agent et un journal d'actions ?
Un enregistrement de session décrit un processus ou une exécution d'agent : qui l'a lancé, comment il a été identifié, quand il a commencé et s'est terminé, et si un opérateur l'a autorisé ou révoqué. Un enregistrement d'appel décrit une tentative d'action externe, comme une requête HTTP ou une commande SSH. Les deux sont nécessaires, car une exécution de confiance peut tout de même produire un appel dangereux.
L'approbation d'une session suffit-elle pour les agents IA ?
Non. L'approbation au niveau de la session indique si vous avez autorisé ce processus d'agent à agir pendant sa durée de vie. Elle ne dit pas si chaque destination, requête, commande, code de réponse et échec de cette exécution était acceptable.
Quel journal dois-je consulter en premier après une action suspecte d'un agent ?
Commencez par l'enregistrement de l'appel individuel. Il indique la destination, l'opération, l'heure, le résultat et la session à l'origine de la requête. Consultez ensuite l'enregistrement de session pour déterminer quel processus détenait l'autorité et si cette autorité a été révoquée avant ou après l'appel.
Comment relier les enregistrements de session et d'appel ?
Ils doivent être reliés par un identifiant de session stable, enregistré sur chaque appel. Évitez de vous appuyer principalement sur les horodatages, les noms de processus ou une identité utilisateur supposée. Ces champs facilitent l'enquête, mais n'établissent pas de manière fiable la causalité lorsque plusieurs agents s'exécutent en parallèle.
Les actions refusées d'un agent doivent-elles figurer dans les journaux d'audit ?
Chaque appel tenté mérite un enregistrement, y compris les requêtes refusées, annulées ou échouées. Un système qui ne consigne que les actions réussies dissimule les recherches de permissions, les commandes mal formées, les identifiants expirés et les tentatives qu'un opérateur a arrêtées à temps.
Quand un agent IA doit-il demander une approbation pour chaque appel API ?
L'approbation par appel convient aux identifiants ou aux opérations dont une seule utilisation peut causer un dommage disproportionné, comme la suppression en production ou l'envoi de fonds. Elle doit compléter l'autorisation de session, pas la remplacer. L'imposer pour des appels courants et peu risqués crée une fatigue liée aux approbations et incite les opérateurs à approuver sans lire.
Un journal d'audit chaîné par hachage prouve-t-il que rien n'a été omis ?
Une chaîne de hachage rend les modifications ultérieures visibles si le vérificateur dispose de la chaîne attendue et d'un point de départ fiable. Elle ne prouve pas que les événements enregistrés sont complets, que la machine n'était pas compromise au moment de la capture, ni qu'un humain a compris l'autorisation. L'infalsifiabilité fournit une preuve solide, pas une preuve magique.
Quels champs doivent figurer dans une piste d'audit d'agent IA ?
Conservez suffisamment de contexte pour reconstituer l'autorité et l'action : identité du processus, identifiant de session, type d'opération, identité de la cible, horodatages, décision d'autorisation, résultat et identifiant de corrélation. Ne placez pas de clés API brutes, de clés privées SSH, de jetons porteur ni de corps de requête sensibles dans les enregistrements d'audit ordinaires.
Comment auditer les commandes SSH exécutées par des agents de programmation ?
Une commande SSH doit produire un enregistrement d'appel contenant l'identité de l'hôte cible, la commande ou une représentation contrôlée de celle-ci, l'identifiant de session, l'état d'autorisation, les horaires, le résultat de sortie et des détails d'échec que l'on peut conserver sans risque. L'enregistrement doit montrer que la passerelle a exécuté la commande sans exposer la clé privée à l'agent.
Que faire après un appel externe inattendu effectué par un agent ?
Vérifiez la chaîne, préservez les enregistrements originaux, identifiez la limite de session et établissez une chronologie des appels avant de modifier l'environnement. Révoquez l'autorité active si l'agent peut encore fonctionner, puis faites tourner les identifiants ou réduisez leur portée uniquement lorsque les enregistrements montrent une exposition ou une utilisation abusive possible. Faire tourner tous les identifiants sans chronologie détruit souvent des éléments utiles tout en créant une seconde interruption de service.