Перейти к основному содержимому

Casbin в 2025 году: авторизация для эпохи AI-агентов

· 4 мин. чтения
Yang Luo
Creator of Casbin

2024 год стал годом, когда AI-агенты перешли от демонстраций к продакшену. Model Context Protocol (MCP) был принят Google, OpenAI, Microsoft и многими другими, и способ взаимодействия приложений с внешними сервисами меняется. Этот переход приносит новый набор задач авторизации, над которыми мы в Casbin активно работаем.

Мир изменился​

Когда мы начинали Casbin в 2017 году, типичный сценарий авторизации был простым: пользователь отправляет запрос, мы проверяем наличие у него разрешений, и всё. А сегодня? AI-агент может действовать от имени пользователя, вызывая несколько MCP-серверов, каждый со своими разрешениями на инструменты, и всё это должно происходить за миллисекунды на edge-инфраструктуре.

Спецификация MCP теперь классифицирует MCP-серверы как OAuth 2.0 Resource Servers (обновление июня 2025 года), с детальными scope'ами вроде mcp:tools:weather или mcp:resources:customer-data:read. Именно для такой гранулярной модели разрешений и создавался Casbin; однако интеграция с MCP и OAuth требует доработки.

Над чем мы работаем​

Авторизация MCP-серверов​

Это одно из наших ключевых направлений работы. Когда AI-агент вызывает MCP-сервер, сервер должен решить: может ли этот агент от имени этого пользователя вызвать этот инструмент с данными параметрами?

Традиционного RBAC недостаточно. Нужен подход вроде ABAC — например, «разрешено ли этому агенту получать доступ к данным клиентов региона Alice в рабочее время?» Мы исследуем, как модель политик Casbin может выразить такие ограничения.

Проблема в том, что MCP-серверы должны принимать решения очень быстро. Мы рассматриваем легковесную оценку политик внутри процесса MCP-сервера вместо вызова отдельного сервиса авторизации.

Edge-first авторизация​

Cloudflare Workers, Deno Deploy, Vercel Edge Functions — рынок edge-вычислений взорвался. В 2025 году время ответа менее 50 мс стало обязательным требованием, и вы не можете позволить себе добавлять 100 мс на проверку авторизации через центральный сервер.

Это заставляет нас по-новому взглянуть на то, как работает Casbin. Можем ли мы компилировать политики в WebAssembly и выполнять их напрямую в изолятах V8? Можно ли реализовать умное кэширование политик на edge, сохраняя консистентность? Это сложные задачи, и у нас пока нет всех ответов, но именно туда движется развитие.

Нас особенно интересует экосистема Cloudflare Workers — они построили целую платформу для MCP-серверов со встроенной поддержкой OAuth. Нативная интеграция Casbin там могла бы быть мощной.

Авторизация пайплайнов RAG​

Постоянная тема: компании строят системы RAG, где LLM должен иметь доступ к внутренним документам, но каждый пользователь должен видеть только те документы, которые ему разрешены.

OWASP Top 10 for LLM Applications 2025 выделяет «Утечку чувствительной информации» как один из главных рисков. Решение заключается не только в фильтрации выходных данных, но и в обеспечении того, чтобы LLM никогда не получал документы, к которым у пользователя нет доступа.

Следовательно, авторизация должна происходить на уровне запросов к векторному хранилищу. Мы изучаем возможность преобразования политик Casbin в фильтры метаданных для векторных БД — то есть проверка разрешений превращается в условие WHERE, передаваемое на уровень выборки.

Сценарии с множеством агентов​

При наличии нескольких агентов в цепочке (например, coding agent → deployment agent → monitoring agent) делегирование разрешений становится сложной задачей. Каждый агент может обладать разными возможностями, и необходимо отслеживать всю цепочку.

Поток On-Behalf-Of (OBO) в OAuth покрывает часть этой задачи, но логика «может ли агент B выполнить X от имени агента A от имени пользователя alice» требует четкой модели. Иерархии ролей и доменный RBAC в Casbin могут быть расширены на иерархии агентов; сейчас мы прорабатываем семантику.

Обычные пункты дорожной карты​

Конечно, мы не забываем о базовых вещах. Вот некоторые практические задачи из нашего списка:

Догоняющие реализации языков - SwiftCasbin и Lua-Casbin все еще отстают по функциональности от версий на Go и Node.js. Оператор in, WatcherEx, улучшенное кэширование для функции g — всё это должно быть единообразным везде.

Новые промежуточные слои для фреймворков - go-zero часто запрашивают сообществом. Poem для Rust набирает популярность. Play Framework для Java давно находится в списке желаний.

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

То, чего мы еще не знаем​

Область авторизации для AI-агентов развивается стремительно; мы учимся на ходу. Открытые вопросы:

  • Должен ли Casbin иметь первоклассные примитивы для разграничения «идентификации агента» и «идентификации пользователя»?
  • Как обрабатывать авторизацию для инструментов, динамически обнаруживаемых через MCP?
  • Какая стратегия кэширования подходит, если политики могут зависеть от контекста в реальном времени?

Если вы работаете в этой области и сталкиваетесь с проблемами авторизации, мы хотим услышать ваше мнение. Лучшие функции рождаются из реальных кейсов использования.

Участие в проекте​

Мы являемся организацией GSoC уже много лет, и эти темы, связанные с ИИ, отлично подходят для летних проектов. Вам не нужно ждать начала GSoC — если вам это интересно, напишите нам в Discord или создайте issue на GitHub.

Ближайшие несколько лет будут бурными для индустрии авторизации. Проблемы становятся сложнее, но и интереснее. Мы рады вместе решать их.

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.