Технологии

Я отдал языковой модели доступ к продовой панели администрирования. Вот что пришлось построить, чтобы она её не сожгла

Полгода назад я поддерживал TypeScript SDK для одной панели администрирования. Обычная библиотека: сгенерированный из OpenAPI клиент, авторизация, ретраи, вебхуки. И в какой-то момент я поймал себя на том, что рутинные вопросы к панели — «у кого истекает доступ на этой неделе»...

Я отдал языковой модели доступ к продовой панели администрирования. Вот что пришлось построить, чтобы она её не сожгла

Полгода назад я поддерживал TypeScript SDK для одной панели администрирования. Обычная библиотека: сгенерированный из OpenAPI клиент, авторизация, ретраи, вебхуки. И в какой-то момент я поймал себя на том, что рутинные вопросы к панели — «у кого истекает доступ на этой неделе», «почему нода отвалилась», «сколько трафика съел вот этот аккаунт» — я решаю одинаково: открываю редактор, пишу пятнадцать строк скрипта на своём же SDK, запускаю, читаю, удаляю. Мысль напрашивалась: SDK уже типизирован, схемы уже есть, значит модель может вызывать его сама.

Так появился `marzban-mcp`. Дальше выяснилось, что «обернуть SDK в MCP» — это примерно 10% работы. Остальные 90% — ответ на вопрос, который в обычной библиотеке вообще не стоит: что можно доверить модели делать с боевой инфраструктурой, а что нельзя, и как эту границу выразить в коде.

Как было сложно решать эти вопросы

Чтобы объяснить, почему это так сложно, давайте рассмотрим конкретные примеры. В обычной библиотеке для работы с API, например, часто используются библиотеки для выполнения запросов, а также библиотеки для работы с токенами и авторизацией. Обычно, чтобы использовать эти инструменты, разработчики должны знать основы работы с API, иметь опыт работы с OAuth и других типов авторизации.

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

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

Таким образом, для того чтобы использовать SDK для работы с панелью администрирования, требуется дополнительная логика и проверки, чтобы убедиться, что пользователи не нарушают эти границы. Это требует не только знаний, но и опыта в разработке и администрировании.

Какие шаги мы предприняли для обеспечения безопасности

Чтобы обеспечить безопасность, мы предприняли следующие шаги:

1. Типизация и схемы

Вначале мы создали типизированные схемы данных, которые соответствовали схемам данных в панели администрирования. Это дало нам возможность работать с API, используя те же схемы, что и в панели. Это помогло нам сократить количество ошибок и упростить работу с API.

2. Ограничение прав

Вторым шагом было установить ограничения на права модели. Мы создали систему, которая определяла, какие данные и операции могут быть доступны модели. Например, модель была ограничена только теми схемами данных, которые были определены в типизированных схемах. Это предотвратило случайное использование модели и уменьшило риск взлома.

3. Функциональные ограничения

Третьим шагом было определить функциональные ограничения для модели. Мы создали список операций, которые были разрешены и запрещены модели. Например, модель была ограничена только теми операциями, которые были определены в схемах данных. Это предотвратило случайное использование модели и уменьшило риск взлома.

4. Внешние ограничения

Нашей последней мерой было внедрение внешних ограничений. Мы добавили дополнительные уровни защиты, которые проверяли каждое действие модели, чтобы убедиться, что оно соответствует предварительно определенным правилам. Эти ограничения включали проверку, что модель не пытается использовать API для выполнения операций, которых она не должна была бы использовать. Это обеспечило дополнительную защиту от случайного использования модели.

Чем это важно

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

Что еще можно сделать?

Теперь, когда мы поняли, что можно сделать для обеспечения безопасности при использовании языковых моделей с API, есть еще несколько вещей, которые можно сделать:

1. Обучение и инструктаж

Первым делом стоит провести обучение и инструктаж для команды разработчиков и администрирователей. Это поможет усвоить правила и ограничения, которые были установлены для использования языковых моделей с API.

2. Аудит и отслеживание

Во-вторых, стоит провести регулярный аудит и отслеживание использования языковых моделей с API. Это поможет выявить любые несоответствия или нарушения правил и принять необходимые меры для их устранения.

3. Обновления и интеграции

Также стоит обратить внимание на то, что языковые модели могут изменяться и улучшаться. Поэтому важно следить за новыми версиями и интеграциями, чтобы обеспечить continued support и защиту данных.

FAQ

Q1: Какую безопасность гарантирует эта система?**

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

Q2: Почему это важно, когда мы уже используем языковые модели?**

Это важно, потому что позволяет эффективно использовать языковые модели для работы с API, не рискуя разрушением инфраструктуры. Это улучшает производительность, удобство использования и безопасность системы.

Q3: Что мы можем сделать в будущем?**

В будущем можно провести обучение и инструктаж для команды разработчиков и администрирователей, провести регулярный аудит и отслеживание использования языковых моделей с API и следить за новыми версиями и интеграциями.

Список источников:

1. [Я отдал языковой модели доступ к продовой панели администрирования. Вот что пришлось построить, чтобы она её не сожгла](https://habr.com/ru/articles/1073920/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1073920)

Источники

Читайте также

Смотреть больше материалов