Deno представили open-source файрвол для агентов (Claw Patrol)

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

Transcript

00:00:00Это Claw Patrol, open source межсетевой экран, созданный командой Dino, который находится между
00:00:04вашими ИИ-агентами и интернетом. Он решает три ключевые проблемы безопасности ИИ-агентов.
00:00:09Доступ — это не реальный контроль: агент не должен видеть секреты, а вы не можете видеть, что именно
00:00:14сделал ваш агент. Я пробовал много инструментов для безопасности ИИ-агентов в последнее время,
00:00:19и мне очень нравится подход Claw Patrol, но он еще не идеален. Итак, как работает Claw Patrol: у вас есть
00:00:28один сервер, называемый шлюзом (gateway), где хранятся правила, учетные данные, логи и
00:00:32панель управления Claw Patrol, а затем у вас есть любое количество машин, на которых работают агенты,
00:00:36они могут подключиться к этому шлюзу и направлять через него агентский трафик. На самом деле, вы
00:00:40можете запускать отдельные команды через шлюз или добавить всю машину целиком. В моем случае шлюз — это просто сервер
00:00:45Ubuntu, к которому я подключаюсь через Tailscale (который Claw Patrol поддерживает «из коробки»),
00:00:50а также WireGuard, или оба сразу. Мои агенты — это мой Mac и сервер OpenClaw. Я запускаю шлюз OpenClaw
00:00:55через Claw Patrol, а на Mac я просто использую команду single run с Clawd, когда мне нужно.
00:01:00Имея этот контекст, давайте рассмотрим три ключевые проблемы, которые решает Claw Patrol, и я
00:01:04начну со второй: агенты не должны видеть секреты, так как это логично подводит к остальным
00:01:09проблемам. На шлюзе Claw Patrol вы можете настроить учетные данные, такие как пользователи Postgres,
00:01:14подписки Clawd, учетные записи GitHub и любые bearer-токены или пользовательские заголовки, как у меня здесь для моего
00:01:19продакшн API-сервера. Благодаря этому, когда мы запускаем агентов через шлюз с помощью команды Claw Patrol
00:01:25run, им не нужны эти учетные данные для выполнения запросов. Они будут просто
00:01:30автоматически добавлены в запрос при прохождении через шлюз. Так что если я попрошу Claw использовать мой API и мой
00:01:35базу данных, чтобы получить обзор обоих, он сможет сделать это без проблем. Я могу видеть в
00:01:41командах, которые он выполняет, что он не включает API-ключи в эти curl-запросы,
00:01:46хотя ключ необходим. А для Postgres он использует поддельный пароль X, который точно не является
00:01:51настоящим паролем, но он все равно подключается и получает нужную информацию, так как шлюз
00:01:56перехватил эти запросы и прикрепил настоящие учетные данные. Это означает, что агент никогда не
00:02:00имеет доступа к реальным значениям. Если кто-то увидит логи моего агента или попытается использовать prompt injection,
00:02:06он никогда не получит эти учетные данные, так как они находятся на полностью отдельном сервере, и у агента
00:02:10нет способа получить к ним доступ. Чтобы еще нагляднее показать процесс вставки, если я запущу этот curl-запрос в
00:02:15своем терминале, вы увидите, что запрос отклонен, потому что я не передал API-ключ. Но если я запущу
00:02:20ту же самую команду через claw patrol run, данные вернутся как обычно, так как API-ключ был добавлен.
00:02:26Следующая проблема, которую пытается решить claw patrol — это то, что доступ не равен контролю действий. Claw patrol дает
00:02:31вам очень тонкий контроль над тем, что агент может делать с запросом. Например, если я снова использую
00:02:36навык Postgres, но на этот раз попрошу его удалить таблицу и создать новую, когда команда запустится, она немедленно
00:02:41вернет настроенное мной сообщение об ошибке: что изменения схемы возможны только через миграции
00:02:46в PR, а не через агента. Шлюз проанализировал Postgres-запрос, который сделал мой агент,
00:02:51и сверил его с набором правил, которые я определил. Благодаря одному из моих правил он отклонил
00:02:56запрос на удаление таблицы. Еще один способ справиться с этим — «человек в контуре» (human in the loop): я могу
00:03:00сделать так, чтобы это правило обращалось ко мне за подтверждением действия. На данный момент поддерживается только
00:03:04Slack, но скоро появятся и другие варианты. Есть даже опция использования LLM в качестве судьи,
00:03:09и правила невероятно настраиваемы и гибкие. Вы можете задать правила, например, проверять
00:03:13конечную точку API вашей службы поддержки, которая отправляет ответы, и видеть, есть ли там оскорбительный
00:03:18контент, отсутствуют ли приветствия или есть что-то еще, чего вы не хотите допустить в запросе. И опять же,
00:03:22все это выполняется для запроса на шлюзе, что теоретически защищает от
00:03:27prompt injection и практически всех других видов атак на ИИ. Третья проблема, которую решает claw patrol
00:03:31— это то, что вы не видите, что сделал агент. С claw patrol каждый запрос виден в
00:03:37панели управления, вы можете видеть активные сессии, а также использованные токены. А если нажать
00:03:42на запрос, вы увидите важные детали, такие как выполненная команда postgres,
00:03:46или, в случае API-вызова, запрос и полученный ответ.
00:03:51Таким образом, вам не нужно тратить время на просмотр всех логов отдельных сервисов,
00:03:55к которым обращался агент, пытаясь понять, что он сделал. Вместо этого вы можете просто увидеть, что он сделал
00:03:59в момент запроса, так что вы увидите практически все, что делает агент.
00:04:03Это три проблемы, которые пытается решить claw patrol, но как все это настроить? Что ж,
00:04:07после установки claw patrol шлюз настраивается с помощью одного файла HCL.
00:04:12В нем вы определяете различные конечные точки, для которых у вас будут правила и учетные данные,
00:04:16такие как OpenAI, Slack, SSH, Postgres и так далее. Если запрос проходит
00:04:22через шлюз и совпадает с одной из них, он знает, что нужно проверить правила и учетные данные.
00:04:26Что касается самих учетных данных, их настройка также довольно проста.
00:04:30Вы указываете тип учетных данных и конечную точку, которой они должны соответствовать.
00:04:34Поддерживается множество типов данных, таких как подписки Anthropic, Codex,
00:04:39ClickHouse, Postgres, а также базовые вещи, такие как bearer-токены и пользовательские заголовки,
00:04:43так что вы найдете почти все нужные вам типы,
00:04:46и даже если чего-то нет, вы можете написать плагины, чтобы добавить свой тип.
00:04:50После того как вы определили учетные данные здесь, все, что нужно сделать — это перейти в панель управления, чтобы ввести
00:04:54фактическое значение. Настройка правил также довольно проста.
00:04:56Вы просто указываете конечную точку, к которой применяется правило, и пишете правило
00:05:00используя Common Expression Language (CEL), так что это может охватывать широкий спектр вещей, таких как HTTP,
00:05:05Postgres, Kubernetes и так далее. После этого вы указываете вердикт для правила, которое
00:05:09только что определили: одобрить или отклонить. Вы используете “approve”, если создаете
00:05:14белый список вместо черного (то есть блокировать все по умолчанию и только потом
00:05:18разрешать некоторые вещи). В моем случае я просто использовал метод черного списка.
00:05:22Наконец, еще одна очень полезная функция — это профили. Вы можете группировать учетные данные
00:05:26в несколько профилей, что означает, что любые правила и конечные точки, привязанные к ним,
00:05:31также группируются вместе. Это позволяет вам настроить контроль на основе ролей для ваших
00:05:35агентов и команд: разработчики могут иметь определенный доступ к учетным данным и правилам,
00:05:40а, возможно, другая команда, например служба поддержки, имеет другие учетные данные и другие правила.
00:05:45Чтобы помочь вам при внесении изменений в правила, есть команда тестирования, где вы можете
00:05:49скачать действия правил из панели управления, а затем запустить их снова против ваших локальных изменений, чтобы увидеть, не
00:05:54изменился ли результат, чтобы обнаружить случайные утечки.
00:05:59Должен признаться, процесс настройки показался мне немного утомительным, и я уверен, что он будет
00:06:02улучшен, так как это ранняя стадия проекта. Но если бы был простой способ добавлять
00:06:07учетные данные и правила из панели управления, это было бы просто потрясающе. Возможно, что-то похожее на
00:06:11работу AdGuard, где вы видите входящий запрос и просто нажимаете, чтобы добавить правило или
00:06:15учетные данные для этого запроса. У меня также возникло много проблем при попытке добавить конечные точки,
00:06:19которые были просто IP-адресами моего локального сервера Proxmox. По какой-то причине он просто не хотел
00:06:24перехватывать эти запросы, и я не видел их на панели управления, что вызывало
00:06:28головную боль. Так что определенно нужны исправления, или, может быть, я просто использовал его неправильно,
00:06:33но в любом случае, потребуется работа, чтобы довести удобство использования до уровня, который не мешает
00:06:38вашему рабочему процессу. Хотя это логично, ведь речь идет о безопасности, а не о запуске агента
00:06:43в режиме “YOLO”. Дайте знать в комментариях, что вы думаете о Claw Patrol, и есть ли у вас
00:06:47инструменты безопасности, которые вы используете для своих агентов. Не забудьте подписаться, и
00:06:51как всегда, увидимся в следующем видео.

Key Takeaway

Claw Patrol повышает безопасность ИИ-агентов, выступая посредником для автоматической подстановки учетных данных и фильтрации команд в реальном времени, предотвращая доступ агентов к секретам и несанкционированные действия.

Highlights

  • Claw Patrol — это open-source шлюз безопасности, который разграничивает ИИ-агентов и доступ к критическим ресурсам интернета.

  • Архитектура системы состоит из центрального шлюза на сервере Ubuntu и подключаемых машин с агентами, использующих Tailscale или WireGuard.

  • Шлюз вставляет реальные учетные данные (API-ключи, пароли Postgres, токены) в запросы агентов автоматически, исключая необходимость хранения секретов на стороне самого агента.

  • Правила фильтрации запросов на шлюзе настраиваются через Common Expression Language (CEL), позволяя запрещать или разрешать действия на основе типа запроса.

  • Централизованная панель управления позволяет отслеживать активность агентов в реальном времени, включая выполненные команды Postgres и содержимое API-вызовов.

  • Функция профилей позволяет группировать учетные данные и правила, реализуя контроль доступа на основе ролей для различных команд разработчиков.

Timeline

Архитектура и назначение Claw Patrol

  • Claw Patrol функционирует как промежуточный слой между ИИ-агентами и сетью.
  • Система использует центральный шлюз для хранения конфигураций и логирования трафика.
  • Подключение осуществляется через защищенные протоколы Tailscale или WireGuard.

Система решает три проблемы: отсутствие контроля над секретами, невозможность отслеживать действия агента и отсутствие надлежащего контроля за исполнением команд. Шлюз на базе сервера Ubuntu выступает единственной точкой доступа, через которую агенты направляют свой трафик. Это позволяет изолировать секретные данные от среды исполнения агента.

Изоляция учетных данных и защита API

  • Агенты выполняют запросы без доступа к реальным API-ключам или паролям.
  • Шлюз перехватывает запросы и автоматически добавляет необходимые заголовки или учетные данные.
  • Применение поддельных данных агентом при работе с Postgres позволяет получать доступ к ресурсам через перехват на шлюзе.

Учетные данные хранятся исключительно на сервере шлюза. При отправке запроса через команду 'claw patrol run', шлюз подставляет необходимые токены на лету. В результате агент никогда не оперирует реальными секретами, что защищает их от утечки через логи или атаки типа prompt injection.

Фильтрация действий и мониторинг

  • Шлюз обеспечивает тонкий контроль над тем, какие команды агент может исполнять.
  • Правила фильтрации способны блокировать опасные SQL-запросы или требовать подтверждения человека через Slack.
  • Вся активность агентов, включая историю вызовов и полученные ответы, доступна в центральной панели.

Пользователи определяют правила с помощью CEL (Common Expression Language), что позволяет ограничивать конкретные действия, например, запрещать удаление таблиц базы данных. Система предоставляет детальный обзор каждого сеанса, позволяя администраторам видеть фактические команды Postgres и HTTP-запросы без необходимости просмотра логов на отдельных машинах.

Настройка и управление профилями

  • Конфигурация шлюза осуществляется через HCL-файлы.
  • Система поддерживает профили для разделения прав доступа между различными командами.
  • Процесс установки и настройки на ранних этапах проекта требует доработки для упрощения UX.

Настройка включает определение конечных точек и соответствующих им правил в HCL-конфигурациях. Профили позволяют группировать учетные данные, обеспечивая разграничение прав доступа. Несмотря на текущие трудности с перехватом локальных IP-адресов и процессом внесения правил, архитектура проекта предоставляет гибкий инструмент для обеспечения безопасности агентов.

Community Posts

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

Write about this video