Deno vient de rendre open-source son pare-feu pour agents (Claw Patrol)
BBetter Stack
컎íší°/ìíížìšìŽì°œì
/ì€íížì
AI/믞ëêž°ì
Transcript
00:00:00Voici Claw Patrol, un pare-feu de sécurité open source conçu par l'équipe Dino, qui se place entre
00:00:04vos agents IA et Internet, et résout trois problÚmes de sécurité majeurs liés aux agents IA.
00:00:09L'accÚs n'est pas un contrÎle réel, votre agent ne doit pas voir les secrets, et vous ne pouvez pas voir ce que votre agent
00:00:14a fait. J'ai testé pas mal d'outils de sécurité pour agents IA récemment, et j'aime vraiment l'approche
00:00:19adoptée par Claw Patrol ici, mais ce n'est pas encore parfait. Alors, comment fonctionne Claw Patrol : vous avez
00:00:28un serveur appelé la passerelle, qui contient vos rÚgles, vos identifiants, vos journaux et le tableau de bord
00:00:32Claw Patrol, et ensuite vous avez un certain nombre de machines qui exécutent des agents, et elles peuvent rejoindre
00:00:36cette passerelle et faire transiter le trafic de leurs agents par celle-ci. En fait, vous pouvez choisir d'exécuter des commandes uniques
00:00:40via la passerelle, ou vous pouvez y ajouter toute votre machine. Dans mon cas, ma passerelle est simplement un serveur Ubuntu
00:00:45auquel je me connecte avec Tailscale, que Claw Patrol prend en charge nativement, ainsi que
00:00:50WireGuard ou les deux, et mes agents sont mon Mac et mon serveur OpenClaw. J'exécute la passerelle OpenClaw
00:00:55via Claw Patrol, et sur mon Mac, j'utilise simplement la commande d'exécution unique avec Clawd quand j'en ai besoin.
00:01:00Avec ce contexte, examinons les trois problÚmes clés que Claw Patrol résout, et je vais
00:01:04commencer par le numéro deux, à savoir que vos agents ne devraient pas voir les secrets, car cela mÚne naturellement aux
00:01:09autres problĂšmes. Donc, sur la passerelle Claw Patrol, vous pouvez configurer vos identifiants comme les utilisateurs Postgres,
00:01:14les abonnements Clawd, les comptes GitHub, et tous les jetons d'accĂšs ou en-tĂȘtes personnalisĂ©s, comme je l'ai fait ici pour mon
00:01:19serveur API de production. Grùce à cela, lorsque nous exécutons nos agents via la passerelle en utilisant cette commande
00:01:25Claw Patrol, ils n'ont besoin d'aucun de ces identifiants pour que les requĂȘtes fonctionnent. Ils seront simplement
00:01:30injectĂ©s lorsque la requĂȘte passera par la passerelle. Donc, si je demande Ă Claw d'utiliser mon API et ma
00:01:35base de données pour me donner un aperçu des deux, il peut le faire sans aucun problÚme, et je peux voir sur
00:01:41les commandes qu'il exĂ©cute rĂ©ellement qu'il n'inclut aucune clĂ© API pour ces requĂȘtes curl,
00:01:46alors qu'il en a besoin, et pour Postgres, il utilise juste un faux mot de passe X qui n'est certainement pas le vrai
00:01:51mot de passe, mais il se connecte quand mĂȘme et rĂ©cupĂšre les informations pertinentes, car la passerelle a
00:01:56effectivement interceptĂ© ces requĂȘtes et attachĂ© les vrais identifiants. Cela signifie que l'agent n'a jamais
00:02:00accĂšs aux vraies valeurs, donc si quelqu'un voyait les journaux de mon agent ou tentait une injection de prompt,
00:02:06il n'obtiendrait jamais ces identifiants car ils résident sur un serveur complÚtement séparé, et l'agent n'a
00:02:10aucun moyen d'y accĂ©der. Juste pour montrer ce processus d'injection encore plus clairement, si j'exĂ©cute cette requĂȘte curl sur mon
00:02:15terminal ici, vous pouvez voir qu'elle est rejetée parce que je n'ai pas fourni de clé API, mais si j'exécute exactement
00:02:20la mĂȘme commande via claw patrol run, les donnĂ©es sont renvoyĂ©es normalement car cette clĂ© API est injectĂ©e.
00:02:26Le problÚme suivant que Claw Patrol vise à résoudre est que l'accÚs n'est pas un contrÎle d'action. Claw Patrol vous donne
00:02:31un contrĂŽle trĂšs prĂ©cis sur ce qu'un agent peut faire avec une requĂȘte. Par exemple, si j'utilise Ă nouveau ce
00:02:36skill Postgres, mais que cette fois je lui demande de supprimer une table et d'en créer une nouvelle, quand il l'exécute, il renvoie immédiatement
00:02:41un message d'erreur personnalisé que j'ai configuré, indiquant que les changements de schéma ne se font que via des PR
00:02:46de migration, pas via l'agent. La passerelle a effectivement analysĂ© la requĂȘte Postgres que mon agent a faite,
00:02:51et elle l'a vérifiée par rapport à un ensemble de rÚgles que j'ai défini, et grùce à l'une de mes rÚgles, elle a refusé
00:02:56la requĂȘte de suppression de table. Une autre façon de gĂ©rer cela est d'utiliser un humain dans la boucle, donc je peux
00:03:00faire en sorte que cette rĂšgle fasse appel Ă moi pour approuver l'action. Pour le moment, celle-ci ne prend en charge que
00:03:04Slack, mais d'autres options arrivent bientĂŽt. Il existe mĂȘme une option pour utiliser un LLM comme juge,
00:03:09et les rĂšgles sont incroyablement personnalisables et flexibles, vous pouvez donc mĂȘme avoir des rĂšgles comme vĂ©rifier
00:03:13votre point de terminaison d'API de support client qui envoie des réponses, et vous pouvez voir s'il y a du contenu
00:03:18offensant, des salutations manquantes, ou simplement tout ce que vous ne voulez pas voir fuiter dans cette requĂȘte. Et encore une fois,
00:03:22tout cela Ă©tant effectuĂ© sur la requĂȘte au niveau de la passerelle signifie que thĂ©oriquement tout cela est protĂ©gĂ© contre
00:03:27les injections de prompt et pratiquement tous les autres types d'attaques IA. Le troisiĂšme problĂšme que Claw Patrol
00:03:31rĂ©sout, c'est que vous ne pouvez pas voir ce que l'agent a fait, mais avec Claw Patrol, chaque requĂȘte est visible dans
00:03:37le tableau de bord ici, et vous pouvez mĂȘme voir les sessions actives ainsi que les jetons utilisĂ©s, et si vous cliquez
00:03:42sur une requĂȘte, vous pouvez voir les dĂ©tails pertinents comme la commande postgres qui a Ă©tĂ© rĂ©ellement exĂ©cutĂ©e,
00:03:46ou dans le cas d'un appel API, vous pouvez voir la requĂȘte API ainsi que la rĂ©ponse qu'elle a reçue.
00:03:51De cette façon, vous n'avez pas besoin de passer du temps à parcourir tous les journaux des services individuels
00:03:55que l'agent a touchés pour essayer de comprendre ce qu'il a fait, et au lieu de cela, vous pouvez simplement voir ce qu'il a fait
00:03:59au moment de la requĂȘte, vous devriez donc voir pratiquement tout ce que l'agent fait.
00:04:03Voilà les trois problÚmes que Claw Patrol vise à résoudre, mais comment tout cela est-il configuré ? Eh bien,
00:04:07une fois que Claw Patrol est installé, la passerelle est entiÚrement configurée avec un seul fichier HCL.
00:04:12Ici, vous définissez les différents points de terminaison pour lesquels vous aurez des rÚgles et des identifiants,
00:04:16donc j'en ai divers comme OpenAI, Slack, SSH, Postgres, et ainsi de suite, donc si une requĂȘte passe
00:04:22par la passerelle et correspond à l'un d'eux, elle sait qu'elle doit vérifier les rÚgles et les identifiants.
00:04:26Quant aux identifiants eux-mĂȘmes, leur configuration est Ă©galement assez simple.
00:04:30Vous indiquez le type d'identifiant et le point de terminaison auquel cet identifiant doit correspondre.
00:04:34Il existe une prise en charge de nombreux types d'identifiants comme les abonnements Anthropic, Codex,
00:04:39ClickHouse, Postgres, ainsi que les bases comme les jetons d'accĂšs et les en-tĂȘtes personnalisĂ©s,
00:04:43vous devriez donc trouver qu'il prend en charge presque tous les types dont vous avez besoin,
00:04:46et mĂȘme s'il ne le fait pas, vous pouvez coder des plugins pour ajouter votre propre type.
00:04:50Une fois que vous avez défini un identifiant ici, il vous suffit de vous rendre sur le tableau de bord pour remplir
00:04:54la valeur réelle. La configuration des rÚgles est également assez facile.
00:04:56Vous indiquez simplement le point de terminaison auquel la rÚgle va s'appliquer, puis vous écrivez la rÚgle
00:05:00en utilisant le langage d'expression commun (CEL), donc cela peut couvrir un large éventail de choses comme HTTP,
00:05:05Postgres, Kubernetes, etc. Ensuite, vous indiquez le verdict pour la rĂšgle que vous venez
00:05:09de dĂ©finir, si vous approuvez ou refusez en fonction de celle-ci, et vous utiliseriez âapprouverâ ici si vous crĂ©iez
00:05:14une approche basée sur une liste d'autorisation plutÎt qu'une liste de blocage, donc vous bloqueriez tout par défaut puis
00:05:18n'autoriseriez que certaines choses. Dans mon cas cependant, j'ai simplement utilisé la méthode de la liste de blocage.
00:05:22Enfin, une autre fonctionnalité trÚs utile ici est les profils. Vous pouvez en effet regrouper vos identifiants
00:05:26en plusieurs profils, ce qui signifie que toutes les rÚgles et tous les points de terminaison attachés à ces identifiants
00:05:31sont également regroupés avec eux, et cela vous permet de mettre en place une sorte de contrÎle basé sur les rÎles pour vos
00:05:35agents et vos équipes, ainsi les développeurs peuvent avoir certains accÚs aux identifiants et des rÚgles différentes pour
00:05:40eux, et peut-ĂȘtre qu'une autre Ă©quipe, comme une Ă©quipe de support, a des identifiants et des rĂšgles diffĂ©rents Ă©galement.
00:05:45Pour vous aider lorsque vous apportez des modifications aux rĂšgles, il existe en fait une commande de test oĂč vous pouvez
00:05:49télécharger les actions de rÚgle depuis le tableau de bord, puis les réexécuter par rapport à vos modifications locales pour voir si
00:05:54l'une d'entre elles a changé le résultat, afin que vous puissiez repérer s'il va y avoir des fuites accidentelles.
00:05:59Je dois admettre que j'ai trouvé ce processus de configuration un peu fastidieux, et je suis sûr qu'il sera
00:06:02amélioré bientÎt, car nous sommes au tout début de la vie du projet, mais s'il y avait juste un moyen simple d'ajouter
00:06:07des identifiants et des rĂšgles depuis le tableau de bord, ce serait absolument gĂ©nial. Peut-ĂȘtre quelque chose de similaire Ă
00:06:11la façon dont fonctionne AdGuard, oĂč vous pouvez simplement voir une requĂȘte passer et cliquer pour ajouter une rĂšgle ou
00:06:15un identifiant pour cette requĂȘte. J'ai aussi rencontrĂ© beaucoup de problĂšmes lorsque j'essayais d'ajouter des points de terminaison
00:06:19qui étaient simplement des adresses IP vers mon serveur Proxmox local. Pour une raison quelconque, il ne voulait tout simplement pas
00:06:24intercepter ces requĂȘtes, et je ne pouvais en voir aucune apparaĂźtre sur le tableau de bord, et cela m'a juste
00:06:28donnĂ© un peu mal Ă la tĂȘte. Donc, il y a certainement des correctifs nĂ©cessaires, ou peut-ĂȘtre que je l'utilisais mal,
00:06:33mais dans les deux cas, oui, il faudra du travail pour arriver à un point d'utilisabilité qui n'interrompt pas
00:06:38votre flux, mais cela a du sens puisque tout cela concerne la sécurité et pas seulement l'envoi d'un agent
00:06:43en mode YOLO. Dites-moi donc dans les commentaires ci-dessous ce que vous pensez de Claw Patrol, et si vous
00:06:47avez des outils de sĂ©curitĂ© que vous utilisez pour vos agents. Pendant que vous y ĂȘtes, abonnez-vous, et comme
00:06:51toujours, on se voit dans la prochaine.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video