Об этом проекте

Mandatum — это библиотека Go на ранней стадии разработки для проверяемой делегации полномочий ИИ-агентам. Вместо того чтобы агенты наследовали общий credential (сервисный аккаунт, API-ключ или сессию человека), полномочия агента становятся подписанной цепочкой, уходящей корнем к названному человеку-спонсору. Каждое звено привязано к родительскому через хэш и может только сужать полномочия, поэтому они не могут расширяться по пути вниз. Любое звено можно отозвать индивидуально, а ограничения оцениваются на последовательностях действий, а не на одном вызове за раз. В README описаны три проблемы наследования credentials: ответственность нельзя проследить до человека; одного неисправного агента нельзя отозвать, не отрезав всё, что использует общий credential; авторизация по каждому вызову не может обнаружить вредоносные пары отдельных легитимных вызовов (например, чтение ненадёжного внешнего контента с последующей записью во внутреннюю систему). Как это работает: человек аутентифицируется и получает утверждение о делегировании; этот агент может суб-делегировать более узкий грант; сервер ресурсов (точка принуждения политики) проверяет цепочку офлайн, проверяет, что грант покрывает вызов, обращается к совместимой с AuthZEN точке принятия решений по политике и, наконец, допускает действие с учётом истории цепочки. В README отмечается, что допуск действия также записывает его, поэтому вызов, отклонённый PDP, не должен расходовать бюджет вызовов цепочки. Правила на уровне последовательности могут запрещать, например, изменяющий вызов после чтения внешнего контента. Заявленные границы области применения: Mandatum — не движок авторизации (он устанавливает факты для OPA, Cedar, OpenFGA, SpiceDB, Cerbos или любого PDP, соответствующего AuthZEN), не новый протокол (использует JOSE, RFC 8693, SPIFFE, AuthZEN, RFC 6962), не шлюз, реестр, песочница или среда выполнения агентов (это библиотека, предназначенная для работы внутри agentgateway, ToolHive или MCP-сервера через net/http middleware), и не блокчейн (журнал аудита — это дерево Меркла). Признаётся предшествующий опыт: macaroons и Biscuit для ослабленной делегации, SPIFFE для идентификации рабочих нагрузок и RFC 8693 для семантики делегирования при обмене токенами. В README говорится, что Mandatum авторизует на основе истории, а не переинтерпретирует утверждение о действии, описывая это как расширение модели RFC 8693. Новизна заявляется только в трёх узких областях: цепочка, уходящая корнем к аутентифицированному человеку и переживающая суб-делегирование; ограничения, оцениваемые на последовательностях действий; и привязка к AuthZEN. Статус и ограничения изложены прямо: формат, верификатор, уровень подписи и эмитент работают end-to-end и протестированы на реальных подписях; реализованы привязка к AuthZEN, оценка последовательностей, разрешение ключей JWKS/SPIFFE, локальный отзыв из опубликованного компактного набора и middleware принуждения вызовов инструментов MCP. Журнал аудита не создан, хранилище последовательностей работает только в процессе, ничего не публикует наборы отзыва по расписанию, и не проводилось стороннего аудита безопасности. Существуют запускаемые примеры через go test для процесса выпуска и пути принуждения MCP. Лицензия Apache 2.0.