8 min de lecture

Autorisation de l'agent après un redémarrage : des permissions qui expirent

Après un redémarrage, l'autorisation d'un agent doit expirer sans effacer les preuves d'audit. Définissez des enregistrements durables, de nouvelles approbations et une reprise HTTP et SSH sûre.

Autorisation de l'agent après un redémarrage : des permissions qui expirent

Un redémarrage du Mac offre aux équipes une limite technique nette. Il faut l'utiliser. Le processus agent s'arrête, sa mémoire disparaît et toute approbation qui concernait cette exécution précise doit disparaître avec lui. Chercher à reprendre un travail autonome de manière invisible après un redémarrage transforme généralement une permission limitée et vérifiable en accès permanent, avec une expiration mal définie.

Cela ne signifie pas qu'un redémarrage doit tout effacer. Les équipes ont besoin des preuves qui expliquent les actions passées, des identifiants chiffrés qui permettent les travaux futurs et d'un contexte suffisant pour reprendre une tâche de façon réfléchie. La règle est simple : conservez les enregistrements et les éléments protégés, mais supprimez l'autorité active. Demandez ensuite à une personne d'approuver le processus nouvellement lancé avant qu'il ne communique avec l'extérieur.

Après un redémarrage, l'autorisation de l'agent doit repartir d'un environnement vide

L'autorisation d'un agent après un redémarrage doit commencer sans autorisation active accordée à un processus, sans coffre déverrouillé, sans secret de session hérité et sans approbation mémorisée qu'un nouveau processus pourrait utiliser. Un redémarrage met fin à l'objet qui a reçu l'approbation. Traiter le processus de remplacement comme son équivalent simplement parce qu'il utilise le même dépôt, la même commande ou le même nom d'agent est une erreur d'identité.

On entend souvent que cela ajoute des frictions après une mise à jour du système ou une coupure de courant. Cela crée effectivement une pause volontaire. Elle oblige quelqu'un à examiner le processus qui demande maintenant une autorité, plutôt que le processus approuvé quelques heures plus tôt dans des conditions différentes.

Une limite de redémarrage nette offre quatre avantages :

  • Elle efface les éléments volatils comme les jetons d'accès en mémoire, les références de clés déchiffrées, les confirmations en attente et les identifiants de processus.
  • Elle empêche un agent de conserver une approbation pendant une période sans surveillance où l'opérateur peut ne plus être présent.
  • Elle fournit un repère d'audit fiable pour déterminer si une action a eu lieu avant ou après le redémarrage.
  • Elle révèle les dépendances cachées envers les caches locaux, les assistants en arrière-plan et les multiplexeurs de connexion.

Ne confondez pas redémarrage et déconnexion de l'utilisateur. Une déconnexion doit elle aussi mettre fin à l'autorité de l'agent, mais le redémarrage est plus facile à tester puisqu'il arrête presque tous les processus ordinaires. Si une autorisation lui survit, quelqu'un l'a stockée volontairement ou a créé un assistant qui existe en dehors du cycle de vie de l'agent. Dans les deux cas, il faut examiner la situation.

La règle s'applique même si le binaire de l'agent est signé et inchangé. La signature du code peut aider l'opérateur à identifier l'éditeur du programme. Elle ne prouve pas que le processus en cours utilise les mêmes instructions, variables d'environnement, état du dépôt, configuration des outils ou intention de l'opérateur que lors de l'exécution précédente. Un processus signé peut toujours recevoir une invite dangereuse après un redémarrage.

La même règle vaut pour une tâche planifiée. Supposons qu'un agent ait préparé une migration de base de données, demandé une approbation, puis que le Mac ait redémarré avant son exécution. Le plan peut rester dans un répertoire de travail. L'autorité pour l'exécuter ne doit pas rester. Après le redémarrage, l'agent doit présenter de nouveau l'opération prévue et l'opérateur doit décider si elle est toujours correcte.

C'est à ce moment que de nombreuses conceptions deviennent imprudentes. Elles enregistrent une preuve durable indiquant « approuvé » et l'appellent une session. Cet enregistrement devient une permission transférable puisqu'un processus ultérieur peut s'en réclamer. Une autorisation de session doit être liée à une instance de processus active et avoir une durée courte et déterminée. Lorsque le processus se termine, l'enregistrement doit indiquer que l'autorisation a pris fin, au lieu de rester réutilisable.

Conserver les preuves et la configuration, supprimer les autorisations actives

Une équipe doit conserver les faits qui expliquent le travail et les configurations qui peuvent être réutilisées sans danger, tout en supprimant ou invalidant chaque objet qui donne une autorité immédiate. Placez ces catégories dans des espaces de stockage et des cycles de vie différents. Les mélanger crée le problème classique où un enregistrement d'audit devient par accident un jeton d'autorisation.

La séparation suivante fonctionne bien en pratique :

Conserver après un redémarrageExpirer au redémarrage
Historique des actions en ajout uniquement et décisions d'approbationAutorisation du processus agent et identifiant de l'exécution
Identifiants API et SSH chiffrésÉtat du coffre déverrouillé et références d'identifiants déchiffrées
Définitions des points de terminaison, choix d'identifiant autorisé et références de tâchesJetons bearer en mémoire et état des connexions HTTP
Autorité de signature du processus enregistrée pour les exécutions passéesSockets de contrôle SSH et processus auxiliaires en cours
Description d'une tâche en attente et son état précédentFenêtres d'approbation, actions en file d'attente et permission de nouvelle tentative

La première colonne assure la continuité. La seconde empêche cette continuité de devenir une conservation silencieuse des privilèges.

Conservez l'état d'un travail interrompu, mais rendez cet état descriptif. Un bon enregistrement indique que l'exécution R-1842 a demandé une commande SSH, reçu une approbation puis s'est arrêtée avant l'exécution parce que l'hôte a redémarré. Un mauvais enregistrement indique que l'exécution R-1842 peut exécuter ses actions restantes au prochain lancement. Le premier permet à un opérateur de prendre une décision. Le second la prend à l'avance, sans savoir ce que fera le processus ultérieur.

Le stockage des identifiants demande la même précision. Une clé API stockée chiffrée dans un coffre peut rester disponible après un redémarrage. Sa forme déchiffrée ne doit pas rester accessible simplement parce que la machine a redémarré rapidement. Le verrouillage du coffre crée un moment explicite où la personne devant le Mac confirme de nouveau sa présence. Cela ne revient pas à décider si un processus agent peut utiliser un identifiant précis.

Sallyport applique cette séparation : son verrou de coffre bloque toute action lorsqu'il est verrouillé, et son autorisation par session s'applique à un nouveau processus agent connecté, pas à un nom de tâche mémorisé. Ce sont deux décisions différentes. Les confondre rend l'analyse d'un incident beaucoup plus difficile.

Ne conservez pas une approbation en la dissimulant dans des fonctions pratiques. Quelques exemples semblent anodins jusqu'à ce qu'ils se combinent :

  • Un agent de lancement redémarre un client MCP et lui transmet l'ancien fichier de session.
  • Un client SSH conserve un socket de contrôle dans /tmp ou dans le cache de l'utilisateur.
  • Un script copie un jeton bearer dans un fichier d'environnement afin que les nouvelles tentatives fonctionnent après le redémarrage.
  • Un gestionnaire de tâches trouve un travail inachevé et l'exécute avant de vérifier si la cible a changé.

Chaque fonction prétend préserver la progression. Chacune peut aussi conserver une autorité sans montrer à l'opérateur qui la détient maintenant ni comment elle est utilisée.

Utilisez plutôt un enregistrement d'interruption. Donnez-lui une référence de tâche, l'ancien identifiant d'exécution, une empreinte de la liste d'actions prévue, les noms des cibles et un état comme stopped_by_reboot. N'y incluez aucun identifiant utilisable, cookie, jeton d'approbation ni instruction qu'un lanceur pourrait exécuter. Lors de l'exécution suivante, affichez cet enregistrement comme contexte pour une personne. Le contexte facilite l'examen ; l'autorité doit venir d'une décision fraîche.

Un redémarrage n'est pas une rotation d'identifiants

Un redémarrage doit faire expirer les permissions de l'agent, mais il ne doit pas faire tourner automatiquement les clés API ou SSH. Ces contrôles répondent à des problèmes différents. L'expiration d'une autorisation limite les personnes qui peuvent utiliser un identifiant existant et la durée d'utilisation. La rotation remplace l'identifiant parce que vous soupçonnez une exposition, une perte, un usage abusif ou un changement de besoin.

Les équipes perdent du temps et cassent des intégrations lorsqu'elles traitent chaque redémarrage comme un incident d'exposition. Elles créent aussi un faux sentiment de sécurité si une rotation régulière masque une fuite sans déterminer où l'identifiant est sorti. Faire tourner une clé ne corrige pas une conception qui a remis cette clé à un agent, l'a placée dans une transcription ou l'a écrite dans l'historique du shell.

La publication spéciale 800-63B du NIST sépare la gestion des sessions du cycle de vie des authentifiants. Ses recommandations traitent l'arrêt de session et la réauthentification comme des contrôles explicites, tandis que le remplacement d'un authentifiant répond à un autre problème. Cette distinction convient bien aux systèmes agents. Mettez fin à l'exécution active de l'agent lors du redémarrage. Faites tourner les identifiants sous-jacents uniquement lorsque des preuves ou une règle l'exigent.

Faites tourner un identifiant après un redémarrage lorsque celui-ci fait suite à un événement crédible d'exposition. Cela peut arriver si vous découvrez qu'un secret a atteint un journal d'invite, si vous trouvez un processus inconnu ayant accès à l'environnement de l'agent, si un ordinateur portable est perdu ou si vous apprenez qu'un ancien membre de l'équipe a conservé une copie de l'identifiant. Dans ces cas, le redémarrage est secondaire. C'est la fuite présumée qui impose la rotation.

Les identifiants bearer de longue durée demandent une attention particulière puisqu'ils peuvent fonctionner partout où le réseau l'autorise. Si un agent reçoit un jour leur valeur en clair, la passerelle a déjà perdu la limite nette qui rend l'expiration au redémarrage utile. L'agent peut stocker ou transmettre cette valeur avant le redémarrage de la machine. Une approbation ultérieure de session ne peut pas la rappeler.

SSH a ses propres pièges. Une clé privée peut rester protégée dans un coffre local alors qu'une connexion SSH existante continue d'exécuter des canaux distants jusqu'à sa fermeture. Le multiplexage des connexions SSH peut aussi laisser un socket de contrôle local qu'un client ultérieur réutilise. Un redémarrage doit normalement effacer ces éléments, mais ne vous fiez pas aux suppositions. Testez réellement les options du client et le comportement des assistants utilisés par votre équipe.

La règle pratique est la suivante : conserver les identifiants sources chiffrés, verrouiller le coffre au redémarrage, mettre fin à toutes les autorisations et tous les transports actifs, puis demander une nouvelle autorisation du processus avant que la passerelle réutilise un identifiant. Ajoutez des déclencheurs de rotation liés à l'exposition et aux changements de personnel, pas à un démarrage arbitraire.

Cette règle rend aussi la réponse aux incidents plus honnête. Si un opérateur dit « nous avons redémarré, donc l'accès a été réinitialisé », demandez si l'identifiant a déjà quitté son espace protégé et si le fournisseur distant conserve des sessions indépendantes. Un redémarrage réinitialise l'état d'exécution local. Il n'invalide pas un jeton chez un fournisseur cloud, sauf si celui-ci reçoit une demande de révocation ou de rotation.

Déverrouillage de l'appareil, présence humaine et approbation du processus sont trois faits distincts

Une reprise sûre doit répondre séparément à trois questions : le Mac peut-il accéder aux identifiants protégés, une personne identifiable est-elle présente et quel processus demande à les utiliser ? Une conception qui utilise un seul signal pour répondre aux trois questions lui donne trop de portée.

Le déverrouillage de l'appareil contrôle l'accès à l'environnement utilisateur local. Il peut montrer que quelqu'un a franchi la protection de connexion du Mac. Sur le matériel compatible, un coffre peut utiliser Secure Enclave et Touch ID pour garder les secrets indisponibles lorsqu'il est verrouillé. Cela protège les données au repos et crée une limite d'action claire, mais ne dit rien de précis sur le prochain processus lancé par une infrastructure agent.

La présence humaine est un instant donné. Une confirmation biométrique ou un clic peut l'établir pour une décision précise. Laisser un contrôle de présence approuver silencieusement toutes les actions externes futures jusqu'au prochain redémarrage donne à cet instant une portée bien plus grande que celle souhaitée par l'opérateur. Le risque augmente lorsqu'un agent de programmation peut continuer pendant des heures, lire des fichiers de dépôt qui changent ou accepter des instructions issues de demandes de fusion et de commentaires de tickets.

L'approbation du processus répond à une question plus étroite : est-ce que j'autorise ce programme nouvellement lancé à effectuer des appels à la passerelle pendant cette exécution ? L'écran d'approbation doit identifier le processus à partir de preuves durables, comme l'autorité de signature du code, et éviter de demander à l'opérateur d'interpréter un titre de processus modifiable. Un nom comme agent n'est pas une identité. N'importe qui peut choisir ce nom.

L'ordre compte. Le coffre doit d'abord être disponible. La passerelle peut ensuite identifier le processus. L'opérateur peut enfin approuver ce processus pour l'exécution demandée. Pour les identifiants particulièrement sensibles, demandez une nouvelle confirmation à chaque utilisation. Vous obtenez ainsi trois contrôles aux fonctions distinctes, au lieu d'un bouton général « autoriser l'agent ».

N'utilisez pas le nom du compte Mac comme substitut à l'identité du processus. Un compte local partagé peut exécuter plusieurs sessions de terminal, outils de compilation, éditeurs et hôtes d'agents. Si une approbation s'applique à tout le compte, une commande shell malveillante ou un second agent peut utiliser une autorité destinée à un autre processus.

La décision d'approbation ne doit pas non plus prétendre répondre à des questions de périmètre qu'elle ne peut pas trancher. Une autorisation au niveau du processus indique qui peut appeler la passerelle pendant une exécution donnée. Elle ne doit pas signifier silencieusement que tous les identifiants ou toutes les actions sont permis pour toujours. Associez-la au choix de l'identifiant et, lorsque cela se justifie, à une confirmation pour chaque appel. Un identifiant à fort impact ne bénéficiera ainsi pas automatiquement de la facilité accordée à un appel API moins risqué.

On est parfois tenté de résoudre ce problème avec un langage de politiques très élaboré : conditions sur l'heure, le chemin source, le nom de branche, le nom d'hôte, les modèles de commandes et les invites. Ces systèmes peuvent convenir à des équipes de sécurité spécialisées, mais ils créent un autre risque lorsque les développeurs ordinaires ne peuvent pas prévoir le résultat. Un petit nombre de décisions visibles est plus facile à appliquer après un redémarrage et plus simple à expliquer lors d'un examen.

Reprendre une exécution nommée plutôt qu'une permission générale de l'équipe

Vérifier les preuves après un redémarrage
Vérifiez hors ligne le journal d'audit chiffré et chaîné par hachage de Sallyport avec sp audit verify, sans déverrouiller le coffre.

Les équipes peuvent reprendre un travail interrompu en toute sécurité si elles rendent l'élément de travail durable et l'autorisation éphémère. L'agent redémarré doit recevoir assez de contexte pour continuer, mais il doit obtenir une nouvelle autorité en tant que nouveau processus. Une approbation mémorisée à l'échelle du projet est un mauvais raccourci, car elle permet à un travail sans rapport de reprendre une ancienne décision de l'opérateur.

Donnez à chaque exécution importante une référence durable que les personnes comprennent déjà. Un chemin de dépôt et une branche peuvent convenir aux tâches de développement. Un numéro de ticket, une demande de modification, un environnement ou un identifiant d'incident peut être plus adapté aux tâches opérationnelles. La référence n'accorde aucune permission. Elle permet à une personne de comparer la reprise avec le travail attendu.

Une fiche de reprise ou une invite de terminal utile contient cinq informations :

  1. L'identifiant de l'exécution précédente et la raison de son arrêt, par exemple stopped_by_reboot.
  2. La référence du travail et la révision du dépôt ou l'artefact de déploiement utilisés par l'ancienne exécution.
  3. La prochaine action externe proposée par le nouveau processus, avec la destination et le nom de l'identifiant.
  4. Les preuves d'identité du processus actuel, et pas seulement celles de l'ancien processus.
  5. La possibilité d'approuver cette exécution, de la refuser ou d'examiner l'enregistrement des actions précédentes.

Ne restaurez pas toute une file d'actions sans examen. Le monde extérieur a pu changer pendant l'arrêt du Mac. Une demande de fusion peut avoir été poussée de force, un enregistrement DNS peut pointer ailleurs, un déploiement peut s'être terminé par un autre moyen ou une fenêtre de maintenance peut être close. Le fait qu'un agent ait préparé un plan ne rend pas ses effets ultérieurs appropriés.

Prenons l'exemple d'un agent qui mettait à jour un parc via une API HTTP. Avant le redémarrage, il a modifié avec succès les hôtes A à D, puis préparé les appels pour E à H. Le Mac redémarre. Au lancement, l'agent trouve son ancienne file et tente de continuer. Une implémentation imprudente réutilise le jeton et envoie les appels E à H. Une implémentation plus sûre lit l'enregistrement d'interruption, crée une nouvelle exécution, demande une autorisation, récupère l'état actuel et présente les appels restants. Elle peut découvrir qu'un autre opérateur a déjà modifié F et G. L'autorisation fraîche a permis de le voir à temps.

Le comportement des nouvelles tentatives doit avoir une limite nette. Si la passerelle refuse un appel parce que le coffre est verrouillé ou que le processus n'est pas approuvé, le client doit s'arrêter et signaler l'action bloquée. Il ne doit pas boucler, ouvrir des invites répétées, revenir à un accès réseau direct ou remplacer l'identifiant par une variable d'environnement. Une nouvelle tentative après une panne réseau temporaire est raisonnable seulement si l'appel dispose toujours d'une autorisation valide.

Cette approche ne demande pas à un agent d'oublier son travail. Conservez le plan, la sortie des commandes, la différence du dépôt et la note en langage clair qui décrit l'interruption. Traitez ces éléments comme des preuves pour une nouvelle décision. La différence paraît mince lors d'une réunion de conception et devient majeure pendant un incident : le plan enregistré explique l'intention, tandis qu'une autorisation héritée exécute une action sans nouveau choix attribuable.

Pour les opérations sensibles, demandez à l'agent redémarré de relire l'état actuel avant de proposer l'action suivante. C'est particulièrement utile pour les appels API destructifs et les commandes SSH dont les effets dépendent de l'état présent de l'hôte. Cette lecture supplémentaire n'est pas une permission. Elle vérifie que l'ancien plan décrit toujours la réalité.

HTTP et SSH ont besoin de règles de redémarrage explicites

Approuver le processus affiché
Les fiches d'approbation mettent en avant l'autorité de signature du processus demandeur, pas un nom d'agent modifiable.

Les API HTTP et SSH ont toutes deux besoin d'une nouvelle autorisation de l'agent après un redémarrage, mais leur état caché diffère suffisamment pour qu'une vague promesse de « réinitialisation de session » laisse passer des problèmes. Décrivez le comportement de réinitialisation de chaque canal, puis testez les chemins réellement utilisés par les agents.

Pour HTTP, distinguez l'identifiant d'un jeton d'accès ou d'un cookie créé par un service distant. Une passerelle peut conserver l'identifiant chiffré en local et ne l'injecter dans une requête qu'après approbation. L'agent doit recevoir la réponse, pas le jeton bearer. Après un redémarrage, supprimez tout jeton d'accès local mis en cache, les en-têtes de requête conservés pour une nouvelle tentative, les fichiers de cookies de type navigateur utilisés par l'automatisation et l'état des connexions ouvertes.

Un fournisseur peut conserver une session distante après un redémarrage si un client présente ensuite un jeton d'actualisation ou un cookie encore valide. C'est pourquoi un agent ne doit pas détenir ces éléments. Sinon, il peut appeler directement le fournisseur et contourner vos règles locales de redémarrage. Placez l'injection des identifiants et l'actualisation des jetons du côté des actions de la limite, là où un processus nouvellement autorisé les déclenche.

Pour SSH, terminez les connexions clientes et examinez le multiplexage. OpenSSH peut réutiliser une connexion maître avec ControlMaster et ControlPath. Cela aide les utilisateurs interactifs, mais peut rendre floue l'identité de l'invocation qui possède la session distante. Une passerelle agent doit utiliser un chemin d'exécution sans état ou un cycle de vie qui termine proprement chaque assistant à la fin de l'exécution de l'agent. Ne supposez jamais qu'une commande distante s'est arrêtée parce que l'interface locale a été fermée.

Utilisez cette procédure de redémarrage reproductible pour les deux canaux :

  1. Lancez une exécution d'agent et approuvez une requête HTTP ou une commande SSH sans danger sur une cible hors production.
  2. Notez l'identifiant d'exécution, l'identité du processus, la requête prévue et l'heure de la dernière action terminée.
  3. Redémarrez le Mac avant que l'agent n'effectue une deuxième action prévue à l'avance.
  4. Relancez l'hôte de l'agent sans modifier ses fichiers de tâche, puis demandez-lui d'effectuer cette deuxième action.
  5. Vérifiez que la première tentative est refusée jusqu'à ce que le coffre soit disponible et que le nouveau processus reçoive une approbation. Examinez ensuite l'enregistrement pour confirmer que la deuxième action appartient à un autre identifiant d'exécution.

Pour une passerelle qui propose un vérificateur d'audit en ligne de commande, exécutez le vérificateur avant et après la procédure :

sp audit verify

La commande doit indiquer si la chaîne d'audit chiffrée est valide, sans exiger le déverrouillage du coffre. N'écrivez pas d'automatisation qui interprète un texte de réussite inventé à partir d'une commande destinée à l'affichage humain. Vérifiez son code de sortie documenté et conservez la sortie de la commande avec le compte rendu du test. Sallyport projette les journaux de session et d'appels individuels depuis un journal d'audit chiffré, chaîné par hachage et inscriptible uniquement. Le vérificateur fournit donc aux opérateurs un contrôle d'intégrité hors ligne après un redémarrage.

La procédure doit aussi tester le mauvais chemin. Essayez une ancienne variable d'environnement, un profil de client HTTP mis en cache, un socket de contrôle SSH et un second processus agent local. Si l'un d'eux atteint la destination sans nouvelle autorisation, la limite du redémarrage est décorative. Corrigez le contournement au lieu d'ajouter un rappel supplémentaire destiné aux opérateurs.

Les journaux d'audit doivent expliquer l'ancienne et la nouvelle exécution

Après un redémarrage, une piste d'audit doit indiquer où une exécution s'est arrêtée et où une autre a commencé. La séparation doit rester visible même si le même utilisateur, le même dépôt et la même infrastructure agent poursuivent la même tâche. Si le journal fusionne ces événements en une seule longue session, il ne peut pas répondre à la question de savoir qui a autorisé l'action après le redémarrage.

Enregistrez explicitement l'état final de l'ancienne exécution. Les valeurs utiles comprennent une sortie normale, un refus dû au verrouillage du coffre, un refus dans l'attente d'une approbation, un arrêt de l'hôte, une panne réseau et une révocation par l'opérateur. Ne remplacez pas cet état au démarrage du nouveau processus. L'enregistrement du redémarrage doit renvoyer à l'exécution précédente, et non être fusionné avec elle.

Pour la nouvelle exécution, enregistrez les preuves d'identité du processus présentées lors de l'autorisation, l'heure de l'approbation et le premier appel externe. Le premier appel est important, car une approbation ne signifie pas toujours qu'une action a eu lieu. Un opérateur peut approuver une exécution qui se termine avant toute action. Distinguer l'approbation de l'exécution empêche de conclure à tort qu'une action a eu lieu alors que l'opérateur n'en a autorisé que la possibilité.

Les enregistrements de chaque appel doivent conserver assez de contexte pour reconstituer l'action sans stocker de secret. Pour HTTP, enregistrez la destination, la méthode, le nom de l'identifiant, la catégorie du résultat et une représentation masquée des métadonnées de la requête. Pour SSH, enregistrez la destination, le nom du compte, la commande ou son empreinte approuvée, le code de sortie et les métadonnées du résultat. Le traitement exact de la conservation de la sortie des commandes dépend de sa sensibilité, mais ne supprimez pas le fait qu'une action a eu lieu.

Le chaînage par hachage facilite la détection d'une modification ultérieure, sans la rendre impossible. Il est utile parce que chaque enregistrement engage les précédents et qu'une vérification hors ligne peut révéler une séquence rompue. Il ne prouve pas qu'une action approuvée était judicieuse et n'empêche pas une personne autorisée de l'exécuter. Les équipes ont toujours besoin d'un examen et de limites d'approbation rigoureuses.

Conservez le vérificateur d'audit en dehors du chemin normal de l'agent. Un agent capable de réécrire ou de valider ses propres preuves crée une confiance circulaire. Les opérateurs doivent pouvoir effectuer la vérification séparément, y compris lorsque le coffre est encore verrouillé. Ils doivent aussi tester ce qui se passe lorsqu'un enregistrement est modifié dans une copie des données d'audit, afin de connaître le comportement attendu avant d'en avoir besoin.

La révocation immédiate doit elle aussi préciser son périmètre. Si un opérateur révoque une session après un redémarrage, le journal doit indiquer quelle exécution a perdu son autorité et quels appels ont été refusés ensuite. Évitez une formule générale comme « accès agent désactivé », sauf si c'est exactement ce qui s'est passé. Des enregistrements précis évitent à l'équipe de deviner si un autre processus détenait encore une approbation.

Choisir les règles d'expiration avant que l'automatisation ne les choisisse

Mettre fin à l'autorité avec l'exécution
Son autorisation par session s'applique à un nouveau processus agent et prend fin quand cette exécution se termine.

Une politique de redémarrage sûre est assez courte pour que chaque développeur puisse la réciter correctement : un redémarrage verrouille les éléments protégés, met fin à toute autorisation de processus agent et conserve les preuves ainsi que le contexte de tâche non exécutable. Un processus nouvellement lancé reçoit une autorisation nouvellement examinée. Les identifiants ne sont renouvelés que lorsque l'exposition ou les règles de cycle de vie l'exigent.

Écrivez cette politique en termes opérationnels, puis désignez un responsable pour chaque exception. Si une équipe affirme avoir besoin d'une automatisation ininterrompue pendant les redémarrages, demandez quelle action continuerait, quel compte en serait responsable, comment elle serait surveillée et pourquoi une limite d'approbation humaine serait inacceptable. Cela décrit peut-être un travail de compte de service plutôt qu'un agent de programmation interactif. Donnez-lui une conception distincte au lieu de transformer discrètement une session agent en identifiant de serveur.

Préparez une réponse prévisible pour le premier jour ouvré suivant un redémarrage inattendu. L'opérateur vérifie l'intégrité de l'audit, contrôle le dernier appel terminé de l'ancienne exécution, déverrouille les éléments protégés si nécessaire, lance un nouveau processus agent, examine la tâche reprise et n'approuve que le travail qui correspond encore à la situation actuelle. Cette interruption reste modeste comparée à l'annulation d'une action exécutée avec une approbation dont personne ne savait qu'elle avait survécu.

Ne promettez pas que la logique de redémarrage suffit à sécuriser le travail autonome. Elle ne peut créer qu'un point de décision net. La qualité de cette décision dépend toujours d'une identité de processus claire, d'un usage limité des identifiants, de descriptions lisibles des actions et d'enregistrements qu'une autre personne pourra examiner plus tard.

Lorsque le prochain redémarrage interrompra une tâche réelle, résistez à l'envie d'ajouter un bouton « continuer automatiquement ». Conservez le plan. Conservez les preuves. Demandez au nouveau processus de confirmer son autorité avant de l'utiliser.

FAQ

Un agent d'IA doit-il demander une nouvelle approbation après le redémarrage d'un Mac ?

Oui. Un redémarrage doit mettre fin à toute autorisation active détenue par un processus agent. Le processus s'est arrêté, sa mémoire a disparu et toute approbation liée à cette exécution n'est plus rattachée à l'élément qui la rendait traçable. Conservez les preuves d'audit et les définitions de connexion enregistrées, mais demandez une nouvelle autorisation pour le nouveau processus.

Quelles données d'autorisation peut-on conserver sans risque après un redémarrage ?

Conservez l'historique d'audit en ajout uniquement, les données d'identité nécessaires pour expliquer les actions passées et les identifiants chiffrés protégés par le verrouillage habituel du coffre. Ne conservez pas les autorisations actives d'un processus, les secrets de session en mémoire, l'état d'un coffre déverrouillé ni un indicateur général du type « reprendre le travail précédent ». Ce sont des informations d'exécution, pas des enregistrements durables.

Faut-il faire tourner les clés API et SSH après chaque redémarrage ?

Un redémarrage ne prouve pas qu'un jeton API ou un identifiant SSH a fuité. Il ne nécessite donc pas automatiquement une rotation des identifiants. Faites-les tourner lorsqu'ils ont pu sortir de leur espace protégé, lorsqu'une personne qui y avait accès change de rôle ou lorsque les règles d'expiration du fournisseur l'exigent. Considérez l'expiration d'une autorisation et la rotation d'un identifiant comme deux contrôles distincts.

Le déverrouillage d'un Mac suffit-il pour laisser un agent reprendre son travail ?

Non. Un écran déverrouillé montre seulement qu'une personne a accès à la session utilisateur du Mac. Il n'identifie ni n'approuve un processus agent donné. Demandez une approbation distincte qui présente l'identité du processus et lui accorde une exécution limitée avant toute action externe.

Comment reprendre en toute sécurité une tâche d'agent interrompue ?

Utilisez un identifiant stable pour l'élément de travail, comme un dépôt, une branche, un ticket, une demande de modification ou une cible de déploiement. L'opérateur doit examiner le plan repris, approuver le nouveau processus et lui donner le périmètre d'action minimal nécessaire. Évitez de restaurer une permission générale simplement parce que l'agent fonctionnait correctement avant le redémarrage.

Que doit-il se passer lorsqu'un agent réessaie un appel API après un redémarrage ?

Par défaut, l'appel doit être refusé jusqu'à ce qu'une personne approuve la nouvelle exécution de l'agent. Si l'action utilise un identifiant qui nécessite une approbation à chaque utilisation, la passerelle doit redemander cette approbation pour l'appel concerné. Une boucle de nouvelle tentative doit traiter le refus comme une condition d'arrêt, et non comme une raison de continuer à demander ou de contourner les contrôles.

La signature du code peut-elle remplacer l'approbation de la session de l'agent ?

Non. Un binaire signé indique qui a signé l'exécutable, tandis qu'une autorisation active indique qu'une personne a approuvé ce processus précis pour une durée limitée. Les deux informations sont utiles, mais aucune ne remplace l'autre.

Comment empêcher les identifiants mis en cache de contourner les règles de redémarrage ?

Les multiplexeurs SSH, les jetons d'accès OAuth mis en cache et les jetons bearer de longue durée brouillent souvent cette séparation. Arrêtez les processus auxiliaires hérités pendant le test de redémarrage, désactivez ou videz les caches d'identifiants côté client lorsque c'est possible, puis vérifiez que l'agent ne peut pas atteindre la destination sans une nouvelle autorisation de la passerelle.

Que doit montrer le journal d'audit après la reprise d'un agent ?

Enregistrez l'heure du redémarrage, l'identifiant de l'exécution précédente, l'identité du processus présentée après le redémarrage, chaque approbation, chaque appel refusé et le premier appel externe réussi. Conservez ces informations dans un enregistrement en ajout uniquement que les opérateurs peuvent vérifier séparément. Une simple transcription de chat ne peut pas prouver ce que l'agent a réellement envoyé.

Est-il prudent de reprendre automatiquement un travail autonome après un redémarrage ?

C'est sûr uniquement si le travail repris est traité comme une nouvelle exécution, avec une approbation fraîche et un périmètre limité. Le plan précédent peut aider l'opérateur à décider, mais il ne doit pas transmettre silencieusement l'autorité d'appeler des API de production, d'utiliser SSH ou d'engager des dépenses. Le confort ne justifie pas de conserver une autorisation active après un redémarrage.

Sallyport

Sallyport exécute les appels d'API et les commandes SSH à la place de votre agent IA. Les clés restent dans un coffre-fort local sur votre Mac ; vous approuvez chaque exécution et chaque action est consignée dans un journal scellé.

© 2026 Sallyport · Open source sous Apache-2.0 · Oleg Sotnikov