- Почему MCP меняет границу доверия агента
- Что изолировать в первую очередь
- Где долже н работть MCP-сервер
- Файловые системы и точе ки монтирования для поагданеых рабочих протранств
- Секреты и переменные окружения
- Сетевой исходящий трафик и выбор транспорта
- Установка пакетов, подпроцессы и долговременное состояние
- Логи, очистка и провека человека
- Как вписывается Novita Agent Sandbox
- Контрольный список внедрения
- Чавые вопросы
- Рекомендованные статьи
MCP-серверы должны работать с ограниченными точками монтирования файловой системы, секретами с минимальными привилегиями, явной сетевой политикой, границами рабочей области на каждого агента и журналами, чтобы доступ к инструментам не расширял незаметно границу доверия агента. Песочница полезна, когда MCP-сервер может читать файлы, запускать подпроцессы, устанавливать пакеты, вызывать внутренние API или хранить состояние в рамках длительного сеанса агента. Сложность не в решении, что MCP нуждается в изоляции; сложность в определении того, какая граница относится к каждому инструменту, какие данные пересекают эту границу и какие действия всё ещё требуют проверки человеком.
Почему MCP меняет границу доверия агента
Протокол Model Context Protocol предоставляет AI-приложениям общий способ подключения моделей к инструментам, промптам и ресурсам. Это упрощает интеграцию, но также превращает каждый MCP-сервер в границу политики. Если сервер предоставляет read_file, run_command, query_database или deploy_preview, агент может запрашивать действия, выходящие за пределы окна контекста модели.
Если вы подключаете эти инструменты к более широкому рабочему процессу, начните с статьи Как автоматизировать задачи с помощью ИИ, а затем решите, нужен ли внешнему циклу кодирующий агент или более лёгкий интерпретатор.
Спецификация MCP описывает несколько требований безопасности, важных для проектирования песочницы: пользователи должны понимать и соглашаться на предоставленные инструменты, хост должен требовать согласия перед вызовом инструмента, описания инструментов считаются ненадёжными, если не проверены, и конфиденциальные данные должны защищаться соответствующими средствами контроля доступа. Эти правила — средства контроля на уровне приложения. Песочница добавляет средства контроля времени выполнения под ними, ограничивая то, к чему может получить доступ процесс MCP-сервера, даже если агент, описание инструмента или цепочка промптов отправят неверный запрос.
Рассмотрим границу доверия в трёх уровнях:
| Уровень | Что контролирует | Обычный режи сбоя |
|---|---|---|
| Хост или MCP-клиент | Какие серверы подключены и какие вызовы инструментов одобрены | Широкий инструмент одобряется однкакжды и повторно используется в более чувствительном контексте |
| MCP-сервер | Реализация инструментов, аутентификация, валидация входных данных, доступ к ресурсам | Инструмент читает больше файлов, отправляет больше данных или запускает больше команд, чем ожидалось |
| Среда песочницы | Файловая система, процессы, сеть, секреты, жихенений цикл и логи | Процесс сервера наследуе т достут к хосингу, потомучто рабтае т слишом блито к проижводствен ным ресурасам |
Цель — не сделать каждый MCP-сервер ненадёжным одинаково. Инструмент поиска в календаре, инструмент локального выполнения кода и инструмент развёртывания имеют разные профили риска. Цель — предоставить каждому серверу во время выполнения доступ не шире, чем требуется для выполнения его задачи.
Что изолировать в первую очередь
Начните с MCP-серверов, которые могут изменять внешнее состояние, касаться конфиденциальных данных или выполнять код. Эти серверы с наибольшей вероятностью превратят обычну ю ошибк у промпта в болеесерьёжн й инжидент.
Высокоприоритетные кандидадты для изоляции включаю т:
- Инструменты выполнения ко да, запус кающ ие кома нды шелла, Python, Node.is, комп житоров, тестови тетрадок.
- Инструменты файловой системы, читающие или записывающие репозиторий, загрузки пользователей, примонтированные наборы данных, файлы ганных или генерырованны е артефакты.
- Браузерны е и инструменты «компьютер-испольжование», ханящ ие куки, состояни е сеанса, загрженны е файлы или снимки экрана.
- Коннекторы данных, которы е могкут запрашиват ь записии кльентов, експорт аналитики, тикеты или частные документы.
- Инструменты развёртывания и CI, которые могу т создават ь веки, пубиковат ь превью, вращат ь конфигурацию иди зменят ь инфраструктуру.
- Инлюменты для пакетов и зависимостей, которые могкут загружат ь код из реистров, Git-уданлёных улов или произволь ых URL.
MCP-серверы с ниским риском всё рав мо жно конролотр. Сервер поиска поубли иной докуентаци, толко для чтения, мо жет не нудатсся в миКроВКВ на кажый запро,. но он всё рав до лжна иметь разрешёный сетевой пу,. логи и оанчения часоты. Исляция до лжна следоват ь практческом у радису поражния инструмента, а не яроку «MCP-сервер».
Где долже н работть MCP-сервер
Сществует три распространёных наттерна рамещения. Ни один и з них не является уневерсально правильм.
Напримр, кодовый блок по тексту.
Файловые системы и точе ки монтирования для поагданеых рабочих протранств
Дос туп к файово й системе — этото, где уобство MCP част о првращается в нечаянное расшиен ие рив. Серверу, котору нжно читать ./src, не долже наледовать дома шню ю папку разрботчк. Инструмент, которы й запиывает сгенерыованные диаграмы, не долже н можь перезапи сть конфгураци ю развёртывания.
Испольжуйте яные раниы рабочего протрантва:
- Выделейте каждому агенту собствену ю рабочу ю диретори ю для запуска.
- Монтируйте только репозиторий, папку загрузки, набор данных или директорию артефажтов, необходимых для задачи.
- Предпочитайте монтирование только для чтения для исходных материалов и монтирование чтения-записи только для выходных данных.
- Отделяйте сгенерированные выходные данные от доверенных исходных файлов.
- Избегайте монтирования директорий с учётными данными, таких как
.ssh, конфигурационных директорий облачных провайдеров, профилей браузера или локальных файлов аутентификации менеджера пакетов. - Сбрасывайте или создавайте снимок рабочего пространства между несвязанными пользователями, арендаторами или заданиями.
MCP-корни (roots) могут помочь клиентам сообщить серверу, с какими расположениями файловой системы следует работать, но сами по себе корни не являются полной границей безопасности. Относитесь к ним как к механизму координации между клиентом и сервером. Среда выполнения всё равно нуждается в ограничениях на уровне файловой системы, а сервер должен проверять пути, чтобы запросы не могли покинуть предполагаемое рабочее пространство с помощью символических ссылок, относительных путей или трюков с извлечением архивов.
Практичный шаблон — разделить доступ к рабочему пространству по ролям:
| Директория | Доступ | Назначение |
|---|---|---|
/workspace/input |
Только чтение | Загрузки пользователей, начальный репозиторий, тестовый набор или тестовые данные |
/workspace/output |
Чтение-запись | Сгенерированные файлы, отчёты, патчи, диаграммы или скриншоты |
/workspace/tmp |
Чтение-запись, одноразовое | Кэш сборки, кэш установки пакетов, временные файлы |
/workspace/secrets |
По возможности избегать монтирования файлов | Если неизбежно, монтировать один ограниченный файл с секретами со строгим временем жизни и редактированием |
Конкретные пути не важны. Важен принцип.
Секреты и переменные окружения
Секреты обычно проще утечь, чем файлы, потому что они передаются через переменные окружения, журналы, трассировки стека, скрипты пакетов, историю шелла, сеансы браузера и ответы инструментов. Когда MCP-серверу требуются учётные данные, предоставьте ему самые узкие учётные данные, которые могут выполнить действие инструмента.
Используйте отдельные учётные данные для разных MCP-серверов. Серверу поиска задач GitHub может понадобиться доступ только для чтения к задачам. Серверу создания PR может понадобиться доступ на запись к веткам. Сервер развёртывания не должен использовать ни один из токенов, если модель разрешений действительно этого не требует.
Правильная обработка секретов для MCP-серверов выглядит так:
- Внедряйте секреты при запуске песочницы или процесса, а не через промпты.
- Используйте кратковременные или отзываемые токены, когда провайдер это поддерживает.
- Ограничьте учётные данные по инструменту, арендатору, среде и действию.
- Редактируйте секреты в stdout, stderr, структурированных ответах инструментов и журналах трассировки.
- Не возвращайте необработанные переменные окружения модели.
- Не позволяйте агенту решать, какой секрет загрузить.
- Ротируйте учётные данные, используемые высокорисковыми серверами, и после предполагаемого заражения через инъекцию промптов.
Избегайте распространённого антипаттерна: один универсальный файл окружения, монтируемый в каждый сеанс агента. Это упрощает локальную разработку, но усложняет проверку в производстве. Если инструменту не нужен секрет, он не должен иметь возможности его прочитать.
Сетевой исходящий трафик и выбор транспорта
MCP поддерживает локальные и удалённые шаблоны транспорта. Спецификация описывает stdio для локальной межпроцессной связи и Streamable HTTP для связи сервера с клиентом по HTTP. Более старые конструкции на основе SSE всё ещё встречаются в экосистеме, но новые интеграции должны проверять текущую документацию MCP и выбранный SDK, прежде чем полагаться на конкретный транспорт.
Выбор транспорта и политика сети песочницы решают разные проблемы:
| Вопрос | Ответ транспорта | Ответ сетевой политики |
|---|---|---|
| Как MCP-клиент общается с сервером? | stdio, транспорт на основе HTTP или другой поддерживаемый шаблон | Не применимо |
| Какие внешние хосты может вызывать сервер? | Сам по себе недостаточен | Белый список, чёрный список, прокси, политика DNS или отсутствие исходящего трафика |
| Может ли сервер загружать пакеты или веб-страницы? | Сам по себе недостаточен | Белые списки реестров, белые списки URL, кэширование и журналирование |
| Может ли другой процесс достичь сервера? | Детали привязки и аутентификации | Межсетевой экран входящего трафика и граница сети песочницы |
Для локальных stdio-серверов риск часто заключается в унаследованном доступе к хосту. Сервер может работать как дочерний процесс хост-приложения и видеть локальные файлы, переменные окружения и сетевые маршруты. Если этот сервер выполняет код или читает конфиденциальные файлы, переместите его в изолированный процесс или запустите всю пару хост-рабочий внутри одноразового рабочего пространства.
Для MCP-серверов на основе HTTP риск смещается в сторону аутентификации, сетевой доступности и разделения между арендаторами. Используйте авторизацию на стороне сервера, TLS, проверки источника (если применимо) и учётные данные для каждого клиента. Не предоставляйте удалённый MCP-сервер в широкой внутренней сети без чёткой политики, кто может вызывать какие инструменты.
Для исходящего сетевого трафика политика «запрещено по умолчанию» легче для понимания, чем «разрешено по умолчанию». Если инструменту нужна установка пакетов, разерешите реестр пакетов или кэш-сервер с утягиванием. Если ему нужны веб-исследования, маршрутизируйте черже прокси, которы жжурналируе тзапрашиваемые домены и блокируе твнутренние метаданныеендпойнты. Если ему нужны внутренние API, предоставьте узкий API вместо всей частной сети.
Установка пакетов, подпроцессы и долговременное состояние
Многим полезным MCP-инструментам требуются подпроцессы. Кодирующие агенты запускают тесты. Агенты данных устанавливают библиотеки. Браузерные агенты запускают браузеры. Агенты сборки вызывают компиляторы. Поддержка подпроцессов — не проблема; проблема — невидимая поддержка подпроцессов.
Прежде чем разрешать установку пакетов или выполнение шелла, определите:
- Какие команды разрешены, запрещены или требуют одобрения.
- Могут ли менеджеры пакетов обращаться к публичному интернету.
- Должны ли версии зависимостей быть закреплены или основаны на файле блокировки.
- Где живут кэши сборки и установленные пакеты.
- Как долго могут работать фоновые процессы.
- Какие выходные файлы сохраняются после очистки.
- Может ли агент запускать сетевые слушатели.
Долгоживущие MCP-серверы вводят вторую проблему: дриф сосотояния. Сервера, хоры рабтаю о, жигуы часов, може акаплиать файлы, учетные даннцеы, камкураузак броузера, исорию шела, изменнеия зависимосей и фонове задания. Это сосотяние может быь полезно для многошаговых рабочх поцессов, но он доно принадлежаь правильному агену, пользоваелю и задаче.
Использйуе конроль жижненого цикла:
| Контроль | Почему это важно |
|---|---|
| Идентфикатры песочницы на ааккуента | Препятсвует переходу состояния инструментов оддого агента в контексьт ддтому агенту |
| Тау-а-ау | Очищаает заброшеые сеансы инструментов |
| Полика прозо и возбновления | Поддерживает длителнные задания без оддержанияения излишних вычилиелных ресурсактива |
| Полика снимков или шаблонов | Запускает повторямые средды из извесного базового состояни |
| Явное завершение | Удаляе файлы, причищает процессы и освобождает учетные даннце посла задачи |
Если инструмент производит долговечные артефакты, котируйте только эти артефакты из песочницы. Не сохрняяйте всё рабоцее пространство, есоли продут яно не трбует полного воспроизведения сеанса.
Логи, очистка и провека человека
Логи MCP-инструментов должны отвечать на вопросы безопасности и отладки, не превращаясь в новое хранилище секретов. Полезные логи включают имя инструмента, идентификатор вызывающего, идентификатор песочницы, идентификатор рабочего пространства, категорию команды, прочитанные или записанные файлы, обращённые внешние домены, установленные имена пакетов, статус выхода и пути артефактов.
Не логаруйте дампы промы пасс по уолчани, сыре данные о кентах, токены, полные содержания файлов или полный вывод команд. Храните чутвительные трассы под более строгим контролем доступа и полриками хранения.
Некоторые действия MCP должны оставаться под контролем человека даже внутри песочницы:
- Публикация или развёртывание в продакшн.
- Отправка электронной почты, чата, тикетов, счетов или сообщений для клиентов.
- Изменение контроля доступа, биллинга, данных пользователей или конфигурации инфраструктуры.
- Экспорт больших файлов, частных репозиториев, дампов баз данных или строк, похожих на учётные данные.
- Выполнение команд вне политики рабочего пространства.
- Вызов внутренних API с правами на запись.
Песочница должна уменьшать радиус взрыва. Она не должна стать причиной удаления проверки из конфиденциальных бизнес-действий.
Как вписывается Novita Agent Sandbox
Novita Agent Sandbox предназначена для рабочих нагрузок агентов, которым требуется изолированная среда выполнения для кода, файлов, процессов, рабочих процессов, подобных браузеру, и длительных сеансов. Она может вписаться в архитектуры MCP, где инструментальному серверу требуется одноразовое рабочее пространство вместо прямого доступа к ноутбуку разработчика, производственному хосту или общей CI-машине.
Используйте её как границу времени выполнения для серверов, которым необходимо:
- Выполнять сгенерированный код или команды.
- Работать с временными файлами и сгенерированными артефактами.
- Поддерживать состояние рабочего пространства для каждого агента в многошаговых задачах.
- Выполнять фоновую работу, которую агент может проверить позже.
- Отделять эксперименты агента от хост-приложения.
Чётко разграничивайте продукт: MCP-сервер по-прежнему является кодом вашего приложения. Вы по-прежнему разрабатываете разрешения инструментов, области учётных данных, сетевую политику, процесс одобрения, схему логирования и поведение очистки. Песочница предоставляет изолированную среду, в которой эти решения выполняются.
Для настройки, специфичной для продукта, используйте текущую документацию Novita, а не копируйте устаревшие фрагменты из старых руководств. Концептуально схема выглядит так:
for each agent task:
create sandbox from approved template
mount only the task workspace
inject only tool-specific secrets
start the MCP server inside the sandbox or connect to a sandbox-backed tool API
route tool calls through approval and policy checks
collect logs and approved artifacts
stop, reset, or pause the sandbox according to the task lifecycle
Это сохраняет стабиьность руководства на уровне статьи, оставляя точные вызвы SDK последней документации и вашему платформенному коду.
Контрольный список внедрения
Использейте этот контрольный список пеерд подключением MCP-сервера к автономому или полуавтономному агенту:
| Убласть | Вопросы, на которые нужно ответить |
|---|---|
| Область инструментов | Какие инструменты предоставляет сервер и какие из них меняют внешнее состояние? |
| Рамещение | Должен ли сервер рабтать в песочнице аента, отдельной песочнице или в не песочницы за уким API? |
| Файловая система | Какие директории примонтированы, они только для чтения или чтения-записи, и как блокируется обход путей? |
| Секреты | Какие ентфикационные дуны вводятся, как аничены и г какие могут появиться в логах или выходах? |
| Сеть | Является ли исходящй трафик запренным по умолчанию, маршрутизированным чере пркси или разренным по доменам, реестрам и внуренним API? |
| Подроцессы | Какие команды, менеджеры паетов, оновые задания и слушатели разрешены? |
| Состояние | Ка обрабатываются раочие пространства на кажого агента, снимки, таймауты бездействия, поведеие приозстановки/вообновления и очистка? |
| Логи | Можете ли вы восстановить вызовы инструментов, изменения файлов, внещние домены и артефакты без хранеия секретов? |
| Прверка человеком | Какие вызовы инструментов требуют одобрения перед выполнением, экспотом, развртыванией или действием, обращенным к клиенту? |
| Тестирование | Провели ли вы тесты на инекцию промптов, обход символических ссылок/путей, большой вывод, неудачную очистку и запрещённые пути исхода? |
MCP упрощает интеграцию инструментов. Изоляция в песочнице предотвращает превращение этой интеграции в незаметное расширение привилегий модели. Правильный дизайн обычно представляет собой смесь: некоторые серверы находятся в том же рабочем пространстве агента, некоторые в отдельных песочницах, а некоторые вне песочницы за API со строгй авторизацией. Выбирайте размещение, которое соответствует потребностям инструмента в данных, секретах, подпроцессах и сети.
Чавые вопросы
Должны ли все MCP-серверы работать в песочнице?
Нет. В первую очередь изолируйте серверы, которые выполняют код, читают или записывают файлы, используют секреты, вызывают частные службы, запускают браузеры, устанавливают пакеты или изменяют внешнее состоние. Read-only серверы с низким риском могут всё же нуждаться в аутентификации, логировании и сетевых ограничениях, но им может не требоваться отдельная песочница на каждый запрос.
Безопаснее ли stdio, чем HTTP, для MCP-серверов?
Не автоматически. Stdio может быть простым для локальных серверов, но сервер может унаследовать локальный доступ к файловой системе, окружению и сети. HTTP-серверы требуют более сильной аутентификации и контроля доступности. Более безопасный выбор зависит от того, где работает процесс и какие разрешения времени выполнения он получает.
Могут ли корни MCP заменить изоляцию файловой системы?
Нет. Корни помогают сообщать предлагаемые расположения рабочего пространства между клиентом и сервером, но они не являются полной границей времени выполнения. Используйте проверку путей и контроль файловой системы на уровне песочницы, чтобы удержать сервер в предполагаемом рабочем пространстве.
Где хранить секреты для инструментов MCP в песочнице?
Внедряйте только те учётные данные, которые нужны инструменту, желательно в виде кратковременных переменных окружения или секретов с ограниченной областью. Не монтируйте широкие папки с учётными данными разработчика и не передавайте секреты через промпты. Редактируйте их из логов и ответов инструментов.
Когда инструмент MCP должен требовать человеческого одобрения?
Требуйте одобрения для развёртывания в продакшн, сообщений для клиентов, изменений биллинга или контроля доступа, крупных экспортов данных, записи в инфраструктуру, а также для любых команд или сетевых действий вне обычной политики рабочего пространства.
