- À mesure que les outils d’assistance au développement par IA sont utilisés de plus en plus fréquemment, un environnement d’exécution sandboxé devient nécessaire pour garantir à la fois la sécurité du système et la praticité d’usage
- Par défaut, Claude Code demande une autorisation à chaque accès fichier ou exécution, mais ces confirmations répétées perturbent le flux de travail
- Pour résoudre ce problème, une configuration de sandbox légère basée sur bubblewrap est proposée, plus légère que Docker tout en permettant de conserver un environnement de développement proche du local
- Le script ne bind que le minimum nécessaire, comme
/etc, $HOME et le répertoire du projet, et limite l’accès à l’extérieur du projet
- Cette approche constitue une méthode pratique pour assurer à la fois l’exécution sûre des agents IA et l’efficacité du développement
Problème d’accès aux fichiers pour les agents IA
- Claude Code est une interface en ligne de commande qui demande l’autorisation de l’utilisateur à chaque lecture/écriture de fichier et à chaque exécution de logiciel
- C’est raisonnable du point de vue de la sécurité, mais ces confirmations répétées compliquent le travail en parallèle
- L’option
--dangerously-skip-permissions permet d’exécuter toutes les opérations sans demander de confirmation
- Certains utilisateurs l’emploient, mais il existe un risque d’endommager le système
Concept de sandboxing et options possibles
- La solution la plus courante consiste à exécuter l’agent dans une sandbox à l’aide d’une machine distante (exe.dev, sprites.dev, daytona.io) ou de technologies de virtualisation comme Docker
- Sous Linux, bubblewrap constitue une alternative légère, qui isole les processus à l’aide de cgroups et des user namespaces
- Les conditions requises dans cet environnement sandboxé sont les suivantes
- conserver la même structure que l’environnement de développement existant
- minimiser l’accès aux informations extérieures au projet en cours
- n’autoriser l’écriture que dans le répertoire du projet
- permettre de consulter et modifier directement les mêmes fichiers que dans l’IDE
- autoriser l’accès réseau pour la connexion au fournisseur d’IA et l’exécution de serveurs
Considérations de sécurité et limites
- bubblewrap et Docker ne fournissent pas une isolation de sécurité complète
- des risques subsistent, comme les vulnérabilités zero-day du noyau, les communications par canaux auxiliaires ou les fuites de données
- L’auteur privilégie toutefois la commodité de développement par rapport à ces risques
- La base de code est gérée avec
git et sauvegardée sur GitHub ou ailleurs, ce qui réduit le risque de dommages
- Pour réduire le risque de fuite de clés API, il est recommandé de séparer les clés API par projet
Structure du script de sandbox bubblewrap
- Le script monte divers répertoires avec la commande
bwrap, soit en lecture seule (ro-bind), soit en écriture autorisée (bind)
- les chemins système comme
/bin, /lib, /usr/bin sont montés en lecture seule
$HOME/.claude, $HOME/.cache et le répertoire de travail courant ($PWD) sont accessibles en écriture
$HOME/.claude.json est injecté via un descripteur de fichier, de sorte que les modifications ne sont pas répercutées sur le fichier réel
- le nom d’hôte est changé en
bubblewrap afin de pouvoir distinguer l’environnement
/tmp, /proc et /dev sont gérés automatiquement par bubblewrap
- Au lieu d’exposer tout
/etc, seuls les fichiers strictement nécessaires sont bindés
- Node.js est installé dans le chemin
/opt/node/node-v22.11.0-linux-x64/
Comment personnaliser la configuration
- Pour l’adapter à d’autres agents IA ou à d’autres systèmes, il suffit de modifier le script pour lancer
bash, puis d’exécuter manuellement l’agent afin d’identifier les fichiers nécessaires
- La commande
strace permet de suivre les appels d’accès aux fichiers
- exemple :
strace -e trace=open,openat,stat,statx,access -o /tmp/strace.log codex
- en analysant les logs, on peut identifier les fichiers requis et ajuster l’environnement en bindant les chemins correspondants
Conclusion
- Le sandboxing avec bubblewrap est une approche pratique qui permet de conserver la même commodité qu’un environnement de développement local tout en minimisant les risques de dysfonctionnement des agents IA ou de fuite de données
- L’auteur prévoit de continuer à ajuster le script selon les besoins, sur la base de cette configuration
Aucun commentaire pour le moment.