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.

Key Takeaway

Claw Patrol sĂ©curise les agents IA en agissant comme une passerelle qui injecte les identifiants Ă  la volĂ©e, filtre les actions via des rĂšgles CEL et centralise l'observabilitĂ© des requĂȘtes.

Highlights

  • Claw Patrol fonctionne comme une passerelle sĂ©curisĂ©e entre les agents IA et Internet pour rĂ©soudre trois problĂšmes majeurs de sĂ©curitĂ©.

  • L'injection automatique des identifiants (secrets) par la passerelle empĂȘche l'agent d'y accĂ©der directement, limitant les risques en cas d'injection de prompt ou de fuite de journaux.

  • Le contrĂŽle granulaire des actions permet de bloquer des requĂȘtes spĂ©cifiques, comme la suppression de tables de base de donnĂ©es, via une analyse en temps rĂ©el des requĂȘtes.

  • Chaque requĂȘte effectuĂ©e par l'agent est enregistrĂ©e dans le tableau de bord, centralisant la visibilitĂ© des activitĂ©s de l'agent sans nĂ©cessiter d'examen manuel des journaux de chaque service.

  • La configuration s'effectue via un fichier HCL unique, permettant de dĂ©finir des rĂšgles, des identifiants et des profils de contrĂŽle basĂ©s sur les rĂŽles.

  • La prise en charge native de Tailscale et WireGuard facilite la mise en place de l'infrastructure de passerelle pour les agents distants.

Timeline

ProblÚmes de sécurité et architecture

  • Claw Patrol rĂ©sout trois failles : l'exposition des secrets, l'absence de contrĂŽle des actions et le manque de visibilitĂ© sur les activitĂ©s de l'agent.
  • L'architecture repose sur une passerelle centrale traitant le trafic, compatible nativement avec Tailscale et WireGuard.

Cette passerelle sert d'intermĂ©diaire entre les machines exĂ©cutant les agents et Internet. Elle centralise la gestion des rĂšgles, des identifiants et des journaux, offrant une couche de contrĂŽle sur les requĂȘtes sortantes.

Gestion des secrets par injection

  • Les identifiants sensibles (clĂ©s API, mots de passe Postgres) sont stockĂ©s sur la passerelle et non sur la machine de l'agent.
  • La passerelle injecte les vraies valeurs dans les requĂȘtes curl avant leur exĂ©cution rĂ©elle.

L'agent n'a jamais accÚs aux identifiants réels, ce qui protÚge ces données contre les fuites accidentelles, les injections de prompt ou l'exposition dans les journaux. Cette technique permet aux agents d'effectuer des tùches authentifiées tout en manipulant des données factices ou vides en local.

ContrÎle des actions et observabilité

  • Le filtrage des requĂȘtes permet d'interdire des actions spĂ©cifiques, comme la modification de schĂ©ma sur une base de donnĂ©es.
  • Le tableau de bord offre une visibilitĂ© totale sur les sessions actives, les requĂȘtes API et les commandes exĂ©cutĂ©es.

Les rĂšgles de contrĂŽle analysent les requĂȘtes en temps rĂ©el, permettant de bloquer des opĂ©rations non autorisĂ©es ou de demander une validation humaine. L'interface centralisĂ©e Ă©limine le besoin de parcourir les journaux de chaque service pour auditer les actions de l'agent.

Configuration et limites actuelles

  • La configuration utilise un fichier HCL pour dĂ©finir les points de terminaison, les identifiants et les rĂšgles (langage CEL).
  • Les profils permettent un contrĂŽle basĂ© sur les rĂŽles pour diffĂ©rents agents ou Ă©quipes.
  • Le projet est Ă  un stade prĂ©coce, rendant la configuration parfois fastidieuse et prĂ©sentant des difficultĂ©s d'interception sur certaines infrastructures locales.

La mise en place nécessite de définir des rÚgles de blocage ou d'autorisation. Bien que la fonctionnalité de test des rÚgles permette de limiter les erreurs, l'ajout dynamique d'identifiants via le tableau de bord reste un axe d'amélioration important pour la fluidité d'utilisation.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video