Aller au contenu
Retour aux Tutoriels

Comment sécuriser une application IA agentique : garde-fous, permissions d'outils et journaux d'audit

Avancé · 1 hour 15 minutes · 3 min de lecture · Byte Smith ·

Avant de commencer

  • Une architecture d'application web ou d'API basique
  • Accès à un fournisseur LLM ou une gateway de modèles
  • Un framework d'appel d'outils ou d'actions dans votre application
  • Une stack de logging comme Pino, OpenTelemetry ou un pipeline de logs compatible SIEM
  • Familiarité basique avec TypeScript ou Node.js

Ce que vous apprendrez

  • Mapper les vraies capacités et le rayon d'impact d'une application agentique
  • Définir les frontières de confiance entre l'entrée utilisateur, la mémoire, les outils et les systèmes externes
  • Implémenter des permissions par outil, des périmètres lecture seule versus écriture et des portes d'approbation
  • Construire un flux d'exécution sûr qui valide l'intention et logue chaque action importante
  • Ajouter des journaux d'audit qui lient l'utilisation des outils aux utilisateurs, sessions et décisions de politique
  • Red-teamer votre propre agent avant le déploiement en production
Sur cette page

Les applications agentiques sont plus risquées que les applications chat normales parce qu’elles font plus que générer du texte. Une application chat normale répond à un prompt. Une application agentique peut lire la mémoire, appeler des outils, interroger des systèmes internes, envoyer des messages, mettre à jour des enregistrements et prendre des actions qui affectent des personnes ou de l’argent. Cela change le modèle de menace de “mauvaise sortie” à “mauvaises décisions, mauvaises actions ou mauvaises chaînes d’actions.”

Ce tutoriel montre comment sécuriser une application IA agentique dès le départ en utilisant une implémentation de référence TypeScript pratique. Vous allez construire un registre d’outils, étiqueter les frontières de confiance, appliquer des permissions, exiger une approbation humaine pour les actions risquées, logger chaque décision importante et ajouter des tests de red-team. À la fin, vous aurez une base de sécurité que vous pourrez appliquer que votre agent parle à des outils MCP, des API internes ou de l’appel de fonctions natif au fournisseur.

Avant de commencer, créez un petit projet Node.js et installez les dépendances utilisées dans les exemples :

mkdir secure-agent-app
cd secure-agent-app
npm init -y
npm install express zod pino pino-http express-rate-limit
npm install -D typescript tsx vitest @types/node @types/express
npx tsc --init

Ce tutoriel est très riche en code. Le pattern complet est documenté dans l’article compagnon. Les étapes clés sont :

  1. Mapper les pouvoirs réels de votre agent — Inventoriez chaque action de lecture, écriture, externe et impactant des humains que l’agent peut effectuer via un registre d’outils typé.
  2. Définir les frontières de confiance — Étiquetez chaque source de contexte (politique système, entrée utilisateur, contexte récupéré, mémoire, réponse d’outil) avec un niveau de confiance.
  3. Ajouter des frontières de permissions — Appliquez des règles d’accès par outil, des restrictions par environnement et des approbations en code.
  4. Se défendre contre les risques courants d’agent — Classifiez les intentions risquées, bloquez l’exfiltration par politique réseau, séparez les permissions utilisateur des capacités du modèle.
  5. Construire un flux d’exécution sûr — Validez le risque de la requête, construisez le contexte avec des tags de confiance, demandez au modèle un plan, exécutez chaque appel d’outil à travers la politique, exigez l’approbation quand nécessaire, et loggez chaque décision.
  6. Ajouter l’auditabilité — Persistez suffisamment de détails pour enquêter plus tard avec des logs structurés et une table d’audit PostgreSQL.
  7. Red-teamer votre propre agent — Écrivez des tests qui simulent les chemins d’abus courants : injection de prompt, exfiltration cachée, escalade de privilèges et requêtes d’écriture sans approbation.
  8. Checklist de déploiement en production — Ajoutez des limites de débit, des contrôles de secrets, de la surveillance, un comportement de fallback et une réponse aux incidents.

Pour le code source complet et l’implémentation détaillée de chaque étape, consultez le dépôt GitHub de l’article compagnon et le tutoriel anglais original.

Attention

Ne laissez pas l‘“appel d’outils” masquer l’impact métier. Un appel sendTransactionalEmail n’est pas juste un outil. C’est une action orientée client avec des conséquences légales, de confiance et opérationnelles.

Astuce

Le choix de conception le plus important est simple : traitez le modèle comme un planificateur, pas un superutilisateur. Une fois que votre architecture reflète cela, le reste de l’histoire de sécurité devient beaucoup plus facile.

Si votre application IA agentique génère du code dans des pipelines CI/CD, consultez aussi Verrouiller les pipelines d’agents de codage IA, qui couvre comment détecter les PRs générées par l’IA, appliquer la politique comme code, exécuter des scans de sécurité, tester dans un sandbox et contrôler les merges par niveau de risque.

Pour la limitation de débit spécifique aux LLM au niveau de la couche proxy, incluant les budgets de tokens par clé et les tableaux de bord de coûts, consultez Implémenter la limitation de débit et les contrôles de coûts des API LLM.