AI Agents Need Boundaries, Not Master Keys

Donner à un agent IA l'accès à votre application via MCP est risqué. Vous lui remettez un trousseau de clés en espérant qu'il n'ouvre que certaines portes. Cette confiance constitue un risque de sécurité.

Lors de la création d'outils MCP pour une application Laravel multi-tenant, vous devez résoudre un problème : comment permettre à un agent de piloter l'application sans accéder aux données d'un autre utilisateur.

Chaque outil MCP agit comme un endpoint. Un agent appelle un outil, et votre serveur exécute du code. Dans une configuration multi-tenant, chaque outil doit répondre à deux questions :

  • Avez-vous l'autorisation de faire cela ?
  • Avez-vous l'autorisation de le faire ici ?

Si vous ignorez ces étapes, vous créez une faille de sécurité.

Les requêtes web utilisent des sessions pour gérer le multi-tenancy. Les outils MCP utilisent des tokens. Il n'y a ni session ni middleware pour définir le contexte du tenant actuel. Si vous vous reposez sur des global scopes qui recherchent une "organisation actuelle" dans une session, ils ne trouveront rien. Une requête qui devrait être restreinte pourrait retourner toutes les lignes de votre base de données.

J'utilise ces quatre règles pour rester en sécurité :

  • Filtrage explicite : Ne vous reposez jamais sur un scope ambiant sous authentification par token. Utilisez un trait unique pour filtrer par organisation à chaque fois.
  • Utilisez des UUID : N'utilisez jamais d'ID auto-incrémentés. Utilisez des identifiants impossibles à deviner pour que les agents ne puissent pas deviner d'autres enregistrements.
  • Réutilisez les permissions : Ne créez pas de nouveaux ensembles de permissions pour les agents. Utilisez les mêmes chaînes de capacités que votre application web.
  • Marquez les effets de bord : Utilisez des annotations pour étiqueter les outils comme étant en lecture seule ou avec autorisation d'écriture.

En utilisant un trait unique pour la recherche d'organisation, vous créez un point d'audit centralisé. Si la recherche renvoie null, l'outil indique à l'agent que l'enregistrement n'a pas été trouvé. L'agent ne reçoit aucune information sur les autres tenants.

Ce n'est pas un problème d'IA. C'est un problème de multi-tenancy et d'autorisation. MCP facilite l'exposition de votre application, vous devez donc faire preuve de discipline concernant vos limites.

Un agent doit faire exactement ce qu'un humain peut faire, au sein de son propre tenant, et rien de plus.

Source: https://dev.to/nasrulhazim/giving-an-ai-agent-the-keys-without-giving-it-the-building-rbac-org-scoped-mcp-tools-in-laravel-43oi

Communauté d'apprentissage optionnelle : https://t.me/GyaanSetuAi