Aller au contenu principal

Bac à sable et autorisations

Deux réglages, deux rôles différents. Le bac à sable décide de ce que l'agent peut faire ; les autorisations décident de ce qu'il doit demander d'abord.

Le bac à sable

sandbox_mode = "workspace-write"
L'agent peut
read-onlyregarder les fichiers, pas les modifier
workspace-writeécrire dans son répertoire de travail
danger-full-accesstout ce que votre compte peut faire

Les lectures ne sont jamais restreintes. Seuls l'écriture et l'accès réseau le sont : read-only signifie donc que l'agent voit tout votre disque et n'en change rien.

La racine inscriptible est le répertoire de travail

Sous workspace-write, « l'espace de travail » désigne le répertoire dans lequel la conversation ou l'exécution est ouverte. Pas le projet, pas le dépôt — ce répertoire-là.

C'est la phrase la plus importante de cette page. Une exécution ouverte dans votre dossier personnel peut écrire dans .ssh, Documents et Library.

Ce n'est pas une hypothèse. Une tâche planifiée créée avant l'existence des services portait le dossier personnel et avait tourné quarante-deux fois ainsi, chaque exécution pouvant tout atteindre, sans que personne soit consulté ni que rien soit dit. Changer la valeur par défaut pour les nouvelles conversations n'y a rien changé, parce qu'un défaut n'est pas rétroactif.

D'où une seconde vérification, au moment où une exécution démarre.

Où une exécution en arrière-plan peut démarrer

Une exécution est autorisée à commencer quand son répertoire est un que ce produit connaît déjà :

  • à l'intérieur de l'espace de travail
  • à l'intérieur du répertoire d'un service
  • à un endroit que vous avez autorisé nommément

Tout le reste est retenu, et apparaît sous En attente de vous dans le panneau Dispatch avec un bouton Autoriser ce répertoire. Autoriser un endroit libère toutes les exécutions qui l'attendaient.

Le fait de demander est le sujet : tourner à un endroit inhabituel est souvent exactement ce qu'on voulait, et la réponse est une question, pas un refus.

Autorisations

approval_policy = "on-failure"
untrustedtoute commande non connue comme sûre est montrée d'abord
on-failureles commandes s'exécutent sans surveillance ; on vous demande quand l'une a besoin de plus d'accès
neverrien n'est montré avant l'exécution

never veut dire aussi que rien n'est retenu. Qui a coupé les autorisations a dit, en toutes lettres, qu'il ne voulait pas être arrêté, et décider qu'il voulait dire quelque chose de plus étroit reviendrait pour le produit à passer outre son propre réglage.

À utiliser pour un répertoire dans lequel vous lâcheriez un script.

La combinaison qui piège

sandbox_mode = "danger-full-access" avec approval_policy = "never", c'est un agent qui exécute des commandes arbitraires sur votre machine sans rien montrer ni rien demander. Il existe des répertoires où c'est la bonne réponse. Votre dossier personnel n'en fait pas partie.

Deux choses que le bac à sable ne fait pas

  • Il n'empêche pas le modèle de lire vos fichiers. Les lectures ne sont restreintes dans aucun mode.
  • Il ne couvre pas ce que fait ensuite une commande qu'il a lancée. Un script que l'agent démarre hérite du bac à sable ; un service qu'il démarre et qui survit à l'exécution, non.