Aller au contenu
English

Comprendre les limites de sécurité

Examinez les fichiers, les identifiants et les accès réseau disponibles pour les agents et le code hôte.

Un agent peut exécuter les commandes du projet avec les accès fournis par sa sandbox. Examinez l’environnement, les fichiers montés et les identifiants avant de lancer une tâche ; le fournisseur de sandbox détermine ces limites.

SandboxL’agent atteintFrontière
Docker et PodmanLe worktree et les métadonnées Git du dépôt, tous deux modifiables ; un répertoire personnel privé ; les variables déclarées.Un conteneur aux capacités retirées. Pas une frontière contre un agent hostile.
Git privéUn checkout et un répertoire Git privés dans le conteneur ; un répertoire personnel privé ; les variables déclarées.Vos métadonnées Git restent hors du conteneur. Les commits ne reviennent qu’après validation.
Sandboxes cloudUne copie de l’historique avec toutes les branches et tous les tags, les fichiers choisis, les identifiants et les variables déclarées.Une sandbox hébergée dans votre compte cloud. Les commits ne reviennent qu’après validation.
FirecrackerLa même copie dans une microVM dotée de son propre noyau invité, jointe par SSH.La VM, plus le jailer si vous l’activez. Vous exploitez l’hôte.
Exécution sur l’hôteTout ce que votre utilisateur atteint : fichiers, réseau, votre répertoire personnel et tout l’environnement de votre processus.Aucune.

Chaque donnée ne va que là où votre configuration l’envoie.

DonnéeDestination
Connexion de l’agentOutpost lit sur l’hôte le fichier de connexion de la CLI choisie, jamais un trousseau système, et le copie dans le répertoire personnel privé de la sandbox. L’exécution sur l’hôte ne reçoit que des variables.
Clés d’API et variablesDans l’environnement de la sandbox. L’agent peut toutes les lire.
Clés du fournisseur et du stockageRestent sur l’hôte, avec le client du fournisseur cloud ou du transport. Les agents ne les reçoivent jamais.
Dépôt et entréesLes sandboxes cloud et Firecracker reçoivent l’historique Git, les copies et, sur demande, le travail non commité.
Objets persistésUn transport reçoit les artefacts, journaux, checkpoints, transcriptions et données de reprise que vous lui confiez.
Transcriptions, logs et lots de repriseConservés sur l’hôte ou dans votre transport. Ils peuvent contenir tout secret passé par l’agent.

Les serveurs MCP agissent avec l’autorité de l’agent et reçoivent les variables que vous nommez. Leur configuration contient des noms de variables, jamais de valeurs. Une connexion MCP copiée dans une sandbox peut renouveler son refresh token et déconnecter l’hôte.

Outpost enregistre qui a fait quoi et écarte les processus d’écriture concurrents. Les contrôles d’identité et de droits restent dans votre application.

ValeurCe qu’Outpost vérifieCe que vous vérifiez
actor d’une approbationQu’il figure dans les actors du gateQui est la personne et si elle peut décider.
Décision d’étape d’approbation signéeUne signature Ed25519 de la clé de l’acteurQue votre service de signature a authentifié la personne.
producer d’un artefactQue le contenu correspond à son empreinteQui l’a publié : quiconque peut écrire dans le stockage le peut.
Écritures conditionnelles et révisionsLes processus d’écriture périmés sont rejetésL’identité du processus qui écrit.
PID distant dans les données de repriseRien : c’est une métadonnéeQue le processus distant est arrêté avant de reprendre sa propriété.
Entrée du cache de tâchesSa clé et sa forme JSONQui peut écrire dans le transport : il choisit les valeurs restaurées.
Signature de webhookQue la requête vient de la source configuréeSi event.actor peut lancer le workflow.
Jeton de file HTTPQue l’appelant détient un jeton configuréQui le détient : un jeton accorde toutes les opérations de la file.

Les restrictions réseau limitent les connexions sortantes de la sandbox. Elles ne régissent ni les montages, ni les identifiants, ni les sockets de l’hôte que vous lui exposez.

Le trafic qui part de l’hôte échappe à la politique : requêtes de modèle du harness intégré, téléchargements d’images et appels au plan de contrôle du cloud. Une destination autorisée peut toujours recevoir ce que l’agent lui envoie.

Faire travailler des agents sur du code non fiable

Section intitulée « Faire travailler des agents sur du code non fiable »

Durcissez d’abord la sandbox. Ce fournisseur Docker garde vos métadonnées Git hors du conteneur et coupe son réseau :

import { createDockerSandboxProvider } from "@elie-laloum/outpost/providers/docker";

export const sandboxProvider = createDockerSandboxProvider({
  image: "outpost:dev",
  repositoryMode: "isolated",
  egress: { mode: "deny-all" },
});

Sans réseau, un agent CLI ne peut pas joindre son modèle. Utilisez le harness intégré, dont les requêtes de modèle partent de votre hôte, ou une sandbox cloud avec une liste de domaines autorisés.

  • Isoler GitUtilisez le Git privé, une sandbox cloud ou Firecracker, jamais l’exécution sur l’hôte.
  • Ne rien monter de plusN’ajoutez aucun volume, périphérique, socket de l’hôte ou cache partagé dont la tâche n’a pas besoin.
  • Limiter les identifiantsConnectez-vous avec un profil dédié via account.file et ne déclarez que les clés utiles à la tâche.
  • Restreindre le réseauBloquez les sorties ou limitez-les à une liste là où le fournisseur le permet.
  • Garder des hooks d’hôte fiablesLancez les scripts du projet dans sandboxReady, pas dans hostReady ni workspaceReady.
  • Relire avant d’exécuterLisez le diff rapporté avant de le compiler, le tester ou le pousser depuis l’hôte.
  • Un conteneur monté n’est pas une frontière contre un agent hostile. Outpost désactive les hooks Git pour ses propres commandes, pas pour les vôtres ni pour l’outillage du projet.
  • Le Git privé protège vos métadonnées Git, pas l’hôte. Vous faites toujours confiance à l’image, au moteur, au noyau et à chaque montage explicite.
  • Avec le jailer Firecracker, le processus Outpost s’exécute en root. N’y lancez qu’un projet de workflow et une configuration de confiance.
  • Un compte cloud conserve ce qu’Outpost y envoie selon ses propres règles de stockage et de réseau.

Signalez une vulnérabilité en privé selon la politique de sécurité du dépôt, sans identifiants réels.

API : ContainerOptions · EgressPolicy · AgentAuthentication · createLocalSandboxProvider · defineHarnessTool · defineHarnessHook.