Contrôle local des actions pour les workflows de programmation IA : où l’utiliser
Le contrôle local des actions aide les agents de programmation IA à agir sans exposer les secrets. Découvrez quand utiliser les approbations du développeur et quand les contrôles côté serveur doivent décider.

Le contrôle local des actions s’intègre à un flux de programmation IA lorsqu’un développeur possède la machine, reste suffisamment présent pour autoriser une exécution et a besoin qu’un agent agisse en dehors du dépôt sans recevoir les secrets eux-mêmes. Il répond à un problème courant et bien délimité : un agent peut modifier le code avec un niveau de sécurité acceptable dans un espace de travail, mais il doit aussi interroger une API, récupérer un artefact privé ou exécuter une commande via SSH.
La solution devient mauvaise lorsqu’une équipe cherche à en faire un mécanisme d’autorisation pour toute une flotte. Une approbation côté Mac peut établir qu’un processus local donné peut utiliser un identifiant. Elle ne peut pas indiquer à un service de production quel locataire, environnement, créneau de changement ou règle métier doit autoriser la requête produite. Ces décisions doivent être prises là où se trouve la ressource.
La limite utile est simple : le contrôle local protège les identifiants et rétablit l’intention humaine sur la machine du développeur. Le contrôle côté serveur protège les ressources partagées et continue de fonctionner lorsqu’aucun développeur n’est devant cette machine. Les équipes rencontrent des problèmes lorsqu’elles demandent à l’un de ces deux niveaux de faire le travail de l’autre.
Le contrôle local appartient à un point d’exécution détenu par une personne
Le contrôle local des actions est pertinent lorsque la machine qui lance l’agent a un propriétaire clairement identifié, capable de reconnaître le travail et de l’interrompre. Il s’agit généralement d’un Mac de développeur exécutant une session de programmation interactive, et non d’un agent de build sans surveillance portant un nom d’hôte sympathique.
La question de la propriété semble évidente jusqu’à ce qu’une équipe examine le déroulement réel du travail. Un ordinateur portable peut être attribué à une personne tout en étant régulièrement utilisé à distance. Un Mac partagé dans un laboratoire peut accueillir plusieurs ingénieurs au cours d’une même semaine. Un hôte de build administré peut fonctionner avec le compte d’un développeur tout en exécutant des tâches déclenchées par une pull request. Aucun de ces faits ne crée à lui seul un contrôle humain réel.
Posez quatre questions concrètes avant d’ajouter des approbations locales :
- Qui peut déverrouiller physiquement la machine et approuver une requête ?
- Quel exécutable lance l’agent, et son propriétaire peut-il identifier son autorité de signature de code ?
- Le travail de l’agent reste-t-il dans une session interactive, ou peut-il continuer après le départ de la personne ?
- Si la machine est compromise, qu’est-ce qui limite la portée de l’identifiant sur le service distant ?
Les deux premières questions établissent si l’approbation a un sujet humain. Les deux dernières établissent si son rayon d’action est raisonnable. Si un développeur clique sur « Approuver » pour un processus capable de fonctionner toute la nuit et de déployer dans tous les environnements, ce clic porte bien plus d’autorité que la personne ne le souhaitait probablement.
Une passerelle locale doit conserver le secret et effectuer elle-même l’action sortante. Donner un jeton à l’agent via une variable d’environnement, un fichier de configuration ou la réponse d’un outil rend la barrière locale largement symbolique. L’agent peut le recopier dans une transcription, l’écrire dans un correctif, le placer dans l’historique du shell ou l’envoyer à un autre outil. Vous ne pouvez pas récupérer de manière fiable un identifiant après son entrée dans le contexte de l’agent.
C’est pourquoi une architecture de type proxy ne suffit pas en elle-même. Un proxy HTTP peut acheminer le trafic, mais le routage ne prouve pas que les secrets ne sont jamais entrés dans le processus client. La conception doit garantir que l’agent demande une action, que le composant local injecte l’identifiant et que l’agent ne reçoive que le résultat distant.
La propriété de la machine ne se résume pas à un nom de connexion
Le nom d’un compte de développeur ne prouve pas que le processus approuvé est bien celui qui effectue le travail. Sur macOS, un agent de programmation peut être lancé par un terminal, une extension d’éditeur, un processus auxiliaire ou un script écrit dans le dépôt. Ces origines présentent des niveaux de confiance très différents.
Commencez par examiner l’arbre réel des processus pendant une exécution sans risque. Cette commande affiche les identifiants de processus, leurs parents, les utilisateurs, le temps écoulé et les lignes de commande :
ps -axo pid,ppid,user,etime,command | grep -i '[a]gent'
La sortie doit afficher une chaîne que vous reconnaissez. Par exemple, un terminal interactif peut apparaître comme parent du processus d’agent approuvé. Un script shell situé dans un dépôt non fiable, un élément de lancement en arrière-plan ou un auxiliaire inconnu doit modifier votre décision. N’approuvez pas un processus simplement parce que sa ligne de commande contient le nom d’un outil attendu.
Examinez ensuite l’exécutable au lieu de vous fier à son nom de fichier :
codesign -dv --verbose=4 /path/to/executable 2>&1 | \
grep -E '^(Identifier|TeamIdentifier|Authority)='
Un binaire signé peut toujours contenir des bugs, mais l’autorité de signature donne à l’opérateur un élément stable à reconnaître. Un simple chemin situé dans un répertoire de projet accessible en écriture ne présente pas cette garantie. Une approbation de session qui affiche d’abord l’autorité de signature est bien préférable à une boîte de dialogue indiquant seulement « l’agent veut accéder à vos données ». Elle aide la personne à refuser un binaire copié, un wrapper local ou une mise à jour inattendue avant qu’une action authentifiée soit effectuée.
C’est aussi pourquoi les alias shell et les scripts wrapper méritent de l’attention. Ils sont utiles au quotidien, mais un alias peut lancer autre chose que l’exécutable que la personne pense avoir approuvé. Gardez les commandes de lancement de la passerelle d’actions en dehors des dépôts modifiables par l’agent. Si un agent peut modifier le script qui définit son propre chemin d’accès, la barrière ne représente plus la décision d’un opérateur.
La spécification du Model Context Protocol définit la manière dont un client et un serveur MCP échangent des appels d’outils. Elle n’établit pas que l’appelant est un processus local approuvé. La compatibilité MCP répond à une question d’interface. L’identité du processus, la garde des identifiants et l’autorisation restent des sujets distincts.
L’approbation par session fonctionne lorsqu’une exécution a une limite naturelle
L’approbation par session est un choix pratique par défaut pour une exécution de programmation interactive. Elle demande une confirmation lorsqu’un nouveau processus d’agent démarre, puis s’efface. Elle évite une boîte de dialogue pour chaque lecture sans risque tout en conservant un moment où la personne peut vérifier qui demande l’accès.
La limite doit correspondre à la durée de vie réelle du processus, et non à une notion vague comme « le travail de cet après-midi ». Une session se termine lorsque le processus quitte. Cette règle est facile à expliquer, à révoquer et difficile à réinterpréter par un agent. Si le processus redémarre, il demande une nouvelle approbation. Si la personne la révoque, les appels suivants échouent au lieu d’hériter de la confiance accordée lors d’un clic précédent.
La lassitude face aux approbations indique que la limite est mal choisie. Si un développeur voit une demande chaque fois qu’un agent consulte un outil de suivi, récupère un paquet et lit une API de staging, il approuvera mécaniquement. Des avertissements répétés n’améliorent pas le jugement. Ils apprennent à fermer les fenêtres pour que le travail continue.
Une approbation de session a un objectif plus limité qu’un moteur de politiques. Elle signifie : « Je reconnais ce processus local et je l’autorise à utiliser le chemin d’action permis pendant qu’il est actif. » Elle ne doit pas chercher à déterminer si une requête SQL est sûre, si le titre d’un ticket semble légitime ou si la branche actuelle mérite un accès à la production. Il s’agit de décisions d’autorisation distantes ou de règles de workflow. Les invites en langage naturel sont un très mauvais endroit pour les stocker.
Même une session interactive ne doit pas toujours recevoir une autorisation générale. Un agent qui ouvre des espaces de travail locaux arbitraires, accepte des tâches provenant d’un chat ou exécute des plug-ins issus de dépôts non vérifiés dispose d’une surface d’entrée plus large qu’une session limitée à un dépôt précis. Dans ce cas, réduisez l’ensemble d’actions disponible ou demandez une approbation pour l’identifiant précis qui présente un risque.
Les boîtes de dialogue d’approbation ont également besoin d’un comportement fiable en cas d’échec. Si le coffre est verrouillé, chaque action doit échouer. Si l’interface d’approbation ne peut pas apparaître parce que le Mac est verrouillé ou en veille, chaque action doit échouer. Un mécanisme de secours caché qui laisse passer les requêtes lors d’une erreur d’interface transforme une barrière humaine en simple décoration.
L’approbation par appel est réservée aux actions lourdes de conséquences
L’approbation pour chaque appel convient à un identifiant dont l’utilisation peut créer une modification en production, dépenser de l’argent, supprimer des données ou franchir une limite qu’un développeur doit examiner à chaque fois. Elle ne convient pas à tout identifiant dont le nom semble inquiétant.
Classez l’action selon ses conséquences, et non selon son protocole. Une requête HTTP POST peut créer uniquement un enregistrement de prévisualisation jetable. Une commande SSH peut seulement lire un journal de déploiement. Une requête GET peut exporter l’intégralité des données d’un client. La méthode et le transport ne déterminent pas le mode d’approbation.
Utilisez une barrière pour chaque appel lorsque l’action possède une ou plusieurs de ces caractéristiques :
- Le service distant ne peut pas annuler le résultat de manière fiable.
- L’identifiant peut affecter une ressource de production partagée.
- La requête peut transférer des données sensibles hors d’une destination attendue.
- L’opération est assez rare pour qu’une confirmation réfléchie ne devienne pas machinale.
Le quatrième point compte. Une confirmation à chaque appel pour une action fréquente produit les mêmes clics automatiques qu’une invite de session trop présente. Séparez les identifiants lorsque c’est possible. Donnez au travail de développement courant un identifiant limité aux ressources de développement et réservez l’identifiant capable d’agir en production au petit nombre d’actions qui justifient une interruption.
Un agent ne doit jamais décider quels appels doivent être confirmés. S’il peut qualifier une requête de « lecture seule » ou sélectionner lui-même la classe d’identifiant, une injection d’invite ou une simple erreur d’implémentation peut l’orienter vers le chemin le plus facile. La personne qui possède le compte doit définir l’exigence d’approbation en dehors de l’espace de travail de l’agent.
Rendez la confirmation suffisamment lisible pour permettre une véritable décision. La personne a besoin du nom ou de la fonction de l’identifiant, de la destination, de la méthode de requête ou de la forme de la commande, ainsi que de l’identité du processus à l’origine de l’appel. Afficher le corps brut de la requête peut exposer des secrets ou submerger l’utilisateur. Afficher seulement « Approuver l’action ? » ne fournit aucun contexte utile. Une bonne confirmation en dit moins, mais donne à l’opérateur assez d’informations pour refuser un appel inattendu.
Garder les secrets localement ne règle qu’un seul problème
Un coffre local empêche l’agent de conserver des clés API et des clés SSH privées en clair. Il réduit fortement les divulgations accidentelles dans les invites, les transcriptions, les journaux d’outils, les fichiers copiés et le code écrit par l’agent. Il permet aussi à l’opérateur de révoquer une exécution active sans devoir immédiatement renouveler l’identifiant.
Il ne change pas ce que l’identifiant distant peut faire. Si un jeton API peut supprimer tous les projets, le service acceptera une requête de suppression après une approbation locale. Si un compte SSH dispose de larges droits sudo, protéger la clé privée ne transforme pas ce compte en identité de déploiement limitée. Le moindre privilège côté distant détermine toujours les dégâts maximaux.
Gardez deux distinctions à l’esprit :
- La garde des identifiants demande si l’agent peut obtenir ou reproduire un secret. Un coffre local peut très bien répondre à cette question.
- L’autorisation des ressources demande si le service doit accepter une action dans les conditions actuelles. L’API, l’hôte, le fournisseur d’identité ou le système de déploiement doit répondre à cette question.
Les équipes les confondent souvent parce que les deux sujets apparaissent lorsqu’un agent appelle une API. La conséquence est prévisible : elles installent un coffre local, puis laissent derrière lui un jeton d’administrateur à longue durée de vie. Le jeton fuit moins facilement, mais le chemin d’action reste beaucoup trop large.
SSH rend cette distinction très concrète. La machine locale peut protéger la clé privée, mais l’hôte décide ce que le compte associé à la clé publique peut exécuter. Créez si possible des comptes séparés ou des restrictions de commandes forcées pour l’automatisation. Limitez l’accès aux hôtes. Évitez d’utiliser la clé personnelle d’administrateur d’un ingénieur comme clé générale de l’agent. Les clés personnelles accumulent des exceptions au fil du temps, précisément le type d’héritage qu’un processus autonome ne devrait pas recevoir.
Sallyport applique ce modèle local en conservant les identifiants API et SSH dans un coffre d’application chiffré et en exécutant l’action HTTP ou SSH sans transmettre le secret à l’agent. Cette propriété est utile sur une machine de développement, mais les équipes ont toujours besoin d’identifiants limités et de permissions côté serveur.
Vérifiez le chemin d’action avant de lui faire confiance
Testez une passerelle d’actions avec un endpoint sans risque et un identifiant temporaire avant de la relier à une capacité de production. Le test doit montrer trois choses : l’agent n’a pas reçu le secret, la passerelle a enregistré l’appel et le service distant a vu l’identité attendue.
Créez un identifiant HTTP temporaire capable d’appeler un endpoint non sensible, par exemple une ressource de test qui renvoie l’identité de l’appelant. Demandez à l’agent d’effectuer cette seule action. Examinez sa transcription et le résultat de l’outil pour y rechercher le jeton littéral ainsi que les chaînes ressemblant à un jeton. L’agent doit recevoir le corps de la réponse ou une erreur expurgée, jamais la valeur de l’en-tête utilisée pour authentifier la requête.
Testez ensuite volontairement le refus. Verrouillez le coffre local et répétez l’action. Tuez le processus d’agent approuvé et démarrez-en un nouveau. Révoquez la session active si la passerelle le permet, puis réessayez depuis le processus d’origine. Chaque nouvelle tentative doit échouer à la limite locale. Si les appels réussissent toujours, vérifiez si un autre processus a conservé l’identifiant, si une variable d’environnement contourne la passerelle ou si le service distant dispose d’un autre chemin d’autorisation mis en cache.
Un enregistrement d’audit utile doit contenir assez d’informations pour reconstituer un événement sans conserver le secret lui-même. Pour une action HTTP, enregistrez l’horodatage, l’identité du processus ou de la session, le libellé de l’identifiant, la destination, la méthode, le statut du résultat et un identifiant de requête lorsque le service distant en fournit un. Pour SSH, enregistrez la destination, le libellé du compte, le résultat de la commande et une représentation de celle-ci adaptée à vos règles de sensibilité. Ne journalisez pas les valeurs bearer, les clés privées ni les charges utiles sensibles complètes simplement pour donner l’impression que la piste d’audit est exhaustive.
Le chaînage par hachage aide à détecter la réécriture d’un historique local, mais il ne prouve pas que l’action initiale était judicieuse. Conservez l’enregistrement de la passerelle avec le journal d’audit du service destinataire. En cas de désaccord, traitez-le comme un point à examiner, et non comme une raison de déclarer automatiquement l’une des sources exacte.
Sallyport projette les journaux de session et d’activité à partir d’un journal d’audit chiffré et chaîné par hachage, et sp audit verify peut vérifier cette chaîne hors ligne sans clé de coffre. Effectuez cette vérification lors d’une revue d’incident ou d’un passage de relais avant publication, mais ne confondez pas le contrôle d’intégrité avec l’autorisation.
Les contrôles côté serveur prennent le relais lorsque les personnes sont absentes ou que les ressources sont partagées
Les contrôles côté serveur sont indispensables lorsque l’action doit continuer sans qu’un développeur précis soit disponible pour l’approuver. Cela comprend les tâches CI, les remédiations planifiées, les agents hébergés sur serveur, les exécuteurs partagés et les travailleurs de déploiement. Un Mac local ne peut pas être l’autorité finale pour un travail qui doit survivre à une batterie vide, un déplacement, une mise en veille ou au départ d’une personne de l’entreprise.
Placez la décision d’autorisation près de la ressource protégée lorsque l’une de ces conditions s’applique :
- Plusieurs personnes ou systèmes peuvent déclencher le même workflow.
- La cible est la production, contient des données client, implique une activité financière ou relève d’un système réglementé.
- Un agent s’exécute sur une infrastructure plutôt que sur la machine interactive d’une personne.
- Le service doit appliquer des limites de locataire, des créneaux de changement, des règles d’environnement ou une séparation des responsabilités.
- Le workflow doit rester hautement disponible sans qu’une personne approuve une boîte de dialogue.
Dans ces cas, utilisez une identité de charge de travail dotée de permissions limitées, d’une durée de validité courte lorsque le système d’identité le permet et d’enregistrements d’audit côté serveur. Appliquez les limites d’environnement dans le système de déploiement ou l’API. Exigez-y un ticket de changement ou une approbation humaine si l’organisation en a besoin. La machine locale peut toujours aider un développeur à préparer et examiner une modification, mais elle ne peut pas être le point d’application de l’action de production.
La publication spéciale 800-207 du NIST décrit le zero trust comme un modèle où les décisions d’accès se concentrent sur la protection des ressources plutôt que sur la confiance accordée à l’emplacement réseau. Pour les workflows d’agents, la leçon utile n’est pas que chaque outil local a besoin d’un langage de politiques complexe. C’est que l’API ou l’hôte de production doit prendre sa propre décision concernant l’appelant et la ressource demandée. Une approbation côté Mac ne peut pas la remplacer.
Ne résolvez pas ce problème en transmettant l’identifiant local d’un développeur à la CI. Vous transformerez un identifiant contrôlé par une personne en identifiant de service sans surveillance, sans conserver la clarté de l’un ou de l’autre modèle. Créez une identité de charge de travail distincte et donnez-lui uniquement les permissions nécessaires à la tâche.
Ne reconstruisez pas un moteur de politiques dans les invites d’approbation
Les équipes demandent souvent des règles comme « autoriser les requêtes GET sauf en dehors des heures de travail » ou « autoriser SSH uniquement lorsque le nom de branche contient release ». Cette demande est populaire parce qu’elle semble réduire les clics tout en conservant le contrôle local. Elle crée généralement un système de politiques fragile que personne ne peut expliquer sous pression.
Le contrôle local des actions doit suivre une petite échelle de décision visible : coffre verrouillé ou déverrouillé, session approuvée ou non, identifiant nécessitant ou non une approbation à chaque appel. Chaque état correspond à une action directe de l’opérateur. Une personne peut prévoir le résultat, le tester et le révoquer.
Dès qu’un outil local commence à analyser les noms de branches, le texte des invites, les modèles d’URL, les libellés de tickets et l’intention fournie par l’agent, il prend des décisions d’autorisation à partir d’entrées que l’agent peut influencer. Les règles se multiplient, puis les exceptions deviennent des permissions. Très vite, un développeur a construit sur un ordinateur portable une autorisation serveur partielle, sans le contexte du service nécessaire pour bien faire ce travail.
Associez les décisions locales aux faits que la machine peut établir : le coffre est-il ouvert, quel processus signé a demandé l’action, sa session est-elle approuvée et cet identifiant nécessite-t-il une nouvelle confirmation ? Associez les décisions distantes aux faits que le service peut établir : ressource cible, identité de l’appelant, locataire, environnement actuel, contenu de la requête et contrôles de l’organisation.
Cette séparation facilite aussi le diagnostic des échecs. Un appel local refusé signifie que le coffre, la session ou la barrière par appel l’a arrêté. Un appel serveur refusé signifie que la politique distante l’a rejeté. Lorsqu’un refus peut provenir d’un labyrinthe de règles locales qui se chevauchent, les développeurs désactivent les contrôles au lieu de les corriger.
Un workflow mixte donne à chaque contrôle une mission définie
La plupart des équipes ont besoin de contrôles locaux et côté serveur. La conception pratique n’est pas un choix tout ou rien.
Un développeur peut exécuter localement un agent interactif pour inspecter une API de staging, lire des métadonnées de paquets privés ou lancer des diagnostics SSH limités. Il approuve l’exécution après avoir vérifié l’identité du processus. Le coffre local fournit un identifiant que l’agent ne voit jamais. Les enregistrements d’activité permettent une revue ultérieure.
Le même agent peut préparer une modification de déploiement sans recevoir l’autorisation de la déployer. Un pipeline côté serveur s’exécute ensuite avec sa propre identité de charge de travail, applique les restrictions de production et enregistre le déploiement effectué. Si le pipeline nécessite une approbation humaine, placez-la dans le système qui possède la modification de production, où elle restera visible par les personnes responsables de cet environnement.
Considérez le passage de relais comme une limite à préserver. L’agent local peut produire un correctif, un résultat de test ou une requête signée à examiner. Il ne doit pas transférer subrepticement l’autorité de session d’un développeur à une tâche sans surveillance. La tâche serveur ne doit pas dépendre d’un ordinateur portable déverrouillé pour terminer son travail.
Commencez par représenter chaque action authentifiée dans un workflow actuel. Notez le processus qui l’initie, la machine qui conserve le secret, la ressource qui le reçoit, la personne capable de l’arrêter et la nécessité éventuelle d’exécuter la tâche sans cette personne. Vous trouverez rapidement les actions adaptées au contrôle local, celles qui nécessitent une application côté serveur et celles qui ne disposent actuellement d’aucun des deux.
FAQ
Quand dois-je utiliser le contrôle local des actions pour un agent de programmation IA ?
Utilisez le contrôle local lorsque l’agent s’exécute sur le Mac d’un développeur et doit appeler un petit nombre d’API ou de destinations SSH avec des identifiants qui doivent rester hors du contexte de l’agent. Cette approche fonctionne surtout lorsqu’une personne peut approuver un nouveau processus d’agent et intervenir si la machine demande une confirmation.
Un coffre local d’identifiants rend-il les agents IA sûrs ?
Un coffre local garde les identifiants hors du processus de l’agent, ce qui supprime une importante voie d’exposition. Il ne rend pas fiable une machine de développement compromise et ne remplace pas les règles d’autorisation appliquées par le service qui reçoit la requête.
Que dois-je vérifier avant d’approuver une session d’agent IA ?
Approuvez une session lorsque vous reconnaissez le processus qui la lance, son autorité de signature et le travail qu’il s’apprête à effectuer. N’approuvez pas une session simplement parce que l’invite mentionne le nom d’un projet familier. Une invite ne permet pas d’établir l’identité du processus.
Quelles actions de l’agent nécessitent une approbation à chaque appel ?
Utilisez une approbation pour chaque appel lorsque les identifiants peuvent produire des effets irréversibles, par exemple avec un jeton de déploiement en production, une opération de paiement ou une API administrative destructive. Les appels courants en lecture seule deviennent inutilisables s’ils demandent la même interruption à chaque fois.
SSH via une passerelle d’actions d’agent est-il sûr ?
Non. L’exécution de commandes SSH ne relève d’un contrôle local que lorsque la destination, le compte, la portée des commandes et la confiance accordée à l’hôte sont limités quelque part. Une clé privée protégée peut toujours autoriser une commande dangereuse sur un hôte où le compte dispose de permissions étendues.
Le contrôle local des actions peut-il remplacer l’autorisation côté serveur ?
Non. Les comptes de service, les exécuteurs CI, l’automatisation de production et les machines de build partagées ont besoin de contrôles qui restent disponibles lorsqu’aucun développeur n’est devant un Mac. Dans ces cas, placez l’autorisation et l’audit près du service ou de la charge de travail.
Comment vérifier qu’un processus d’agent est bien celui que j’ai approuvé ?
Commencez par ps pour identifier la hiérarchie des processus et par codesign pour examiner les détails de signature de l’exécutable. Effectuez ensuite un appel sans risque et vérifiez ce que reçoit l’agent, ce qu’enregistre la passerelle d’actions et ce que journalise le service destinataire.
MCP fournit-il des contrôles d’approbation pour les outils d’agent ?
Non. Un serveur MCP décrit une interface d’outil et un protocole de requête. Il ne décide pas où résident les identifiants ni si une personne approuve une action. Considérez la compatibilité du transport et l’autorisation des actions comme deux questions de conception distinctes.
Un journal d’audit détectant les falsifications suffit-il pour assurer la traçabilité d’un agent ?
Un journal rendant les falsifications détectables aide à repérer les modifications de l’historique et à reconstituer ce qui s’est exécuté, mais il ne peut ni annuler une action ni décider si elle était autorisée. Conservez le journal de la passerelle, le journal d’audit du service et les enregistrements de déploiement, car chacun répond à une question différente.
Quels contrôles locaux d’un agent ne doivent jamais être laissés à l’agent ?
Ne laissez pas l’agent choisir le mode d’approbation, la portée de la destination ou la classe d’identifiants dans sa propre invite ou configuration. L’opérateur doit définir ces limites en dehors de l’espace de travail modifiable par l’agent, puis tester le refus et la révocation avant de s’y fier.