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

Изоляция — это не поверхность управления: чтение OpenShell от Nvidia против течения

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

Close-up of a green circuit with intricate patterns on a vibrant red background, ideal for technology themes.

Удобство быстрого выключателя

Платформы изоляции среды выполнения, такие как OpenShell от Nvidia, представляются как слой безопасности для автономных агентов. Идея проста: процесс агента наблюдается, и если он выходит за границы — записывает в запрещённый путь, открывает неожиданный сокет, порождает процесс, который не должен — платформа перехватывает и завершает его. Заявленная задержка — в районе миллисекунд. Это настоящее инженерное достижение, и это также неверное число для построения аргумента о безопасности.

Изоляция отвечает на один вопрос: этот запуск всё ещё внутри своей коробки? Она не отвечает на вопрос, который фактически определяет серьёзность инцидента: должен ли был этот запуск вообще иметь возможность попытаться это сделать? Различие не философское. Это разница между агентом, который попытался достичь внутренней конечной точки метаданных и был убит, и агентом, который никогда не имел учётных данных, способных до неё добраться. Оба создают строку в логе. Только один создаёт нарушение.

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

Что на самом деле даёт изоляция

Платформа изоляции механически является супервизором. Она присоединяется к дереву процессов, наблюдает за системными вызовами или событиями, подобными системным вызовам, через интерфейс ядра, сопоставляет их с политикой и убивает при нарушении. Цель дизайна — время до завершения. Уменьшите его, и вы уменьшите окно, в котором может действовать неправильно ведущий себя агент.

Это окно реально. Оно также ограничено скоростью самого действия. Запись в файловую систему завершается за микросекунды; сетевой запрос покидает хост до того, как движок политики супервизора закончит оценку правила, которое должно было его остановить. Изоляция сужает экспозицию, но не удаляет возможность. Агент всё ещё держал дескриптор, токен, сокет, путь. Он использовал их. Вклад платформы заключался в том, чтобы заметить это после, быстро.

Отсутствующий слой: полномочия до возможностей

Detailed view of a computer hard disk circuit board with colorful reflections.

Каждый вызов инструмента агентом — это предоставление возможности. Когда оркестратор передаёт модели инструмент read_file, он предоставляет доступ на чтение ко всему, до чего может добраться реализация инструмента. Когда он передаёт HTTP-клиент, он предоставляет исходящий доступ ко всему, что разрешают учётные данные клиента и сетевая политика. Когда он передаёт оболочку, он предоставляет объединение всего, что может делать оболочка.

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

Полномочия принадлежат политике, выше песочницы. Конкретно, это означает определение бюджетов полномочий для каждого запуска:

  • Поверхность инструментов: точный набор инструментов, которые запуск может вызывать, а не набор, который случайно предоставляет фреймворк.
  • Область конечных точек: к каким хостам или сервисам может обращаться каждый инструмент, выраженная в виде списков разрешений, а не запретов.
  • Область учётных данных: краткосрочные, узко ограниченные токены, выдаваемые для каждого запуска, так что утёкший токен бесполезен вне времени жизни запуска.
  • Потолки расходов и скорости: жёсткие ограничения на то, сколько внешних ресурсов может потребить запуск, независимо от того, что разрешают инструменты.
  • Временная граница: срок истечения, после которого полномочия отзываются независимо от состояния запуска.

Ничто из этого не требует, чтобы песочница была быстрее. Это требует, чтобы оркестратор был тем, кто решает, чем является агент, до запуска агента. Отделение полномочий от изоляции также позволяет рассуждать о радиусе поражения независимо от вероятности побега. Запуск без сетевых полномочий имеет радиус поражения ноль для сетевых инцидентов, независимо от того, насколько агент умён в побеге из границы процесса. Это более сильное утверждение, чем «мы убили бы его менее чем за десять миллисекунд».

Эталонная декомпозиция

Три слоя, каждый с отдельной задачей.

Песочница. Изоляция файловой системы, изоляция сетевого пространства имён, изоляция процессов, ограничения ресурсов. Задача песочницы — сделать побег дорогим и наблюдаемым. Это последняя линия, а не первая.

Полномочия. Ограниченные учётные данные, списки разрешённых исходящих подключений, потолки расходов, сужение поверхности инструментов, истечение срока для запуска. Задача слоя полномочий — сделать несанкционированную возможность недоступной, а не просто обнаруживаемой. Здесь живёт интересная инженерия: брокер учётных данных, который выпускает токены для каждого запуска, движок политики, который определяет поверхность инструментов запуска из его заявленного намерения, прокси исходящих подключений, который обеспечивает списки разрешённых хостов на сетевuit-board-macro-62542d-755b13.jpg)

Detailed view of a Raspberry Pi circuit board with microchips and components.

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

Компромисс реален и заслуживает того, чтобы быть изложенным прямо. Обеспечение полномочий добавляет трение. Узкие поверхности инструментов означают, что агенты чаще терпят неудачу на законных задачах, потому что поверхность по умолчанию во фреймворке была шире, чем нужно задаче, и никто её не обрезал. Краткосрочные учётные данные означают больше обращений к брокеру и новый режим отказа, когда брокер недоступен. Списки разрешённых исходящих подключений означают, что каждая новая интеграция — это изменение политики, а не изменение кода. Команды, которые внедряют слои полномочий, обычно видят краткосрочное увеличение частоты неудач задач агентов, прежде чем поверхность политики стабилизируется. Эта стоимость — цена переноса гарантии безопасности с «мы бы заметили» на «это не могло произойти».

Что измерять

Метрики изоляции и метрики полномочий отвечают на разные вопросы, и их смешение скрывает сигнал, который имеет значение.

  • Заблокированные попытки побега на тысячу запусков — это метрика изоляции. Она измеряет, как часто срабатывал супервизор песочницы. Высокое число может указывать на агрессивного агента, неправильно настроенную политику или и то, и другое. Оно ничего не говорит о том, что агенту было разрешено делать.
  • Попытки несанкционированных возможностей на тысячу запусков — это метрика полномочий. Она считает случаи, когда агент пытался вызвать инструмент, достичь конечной точки или потратить из бюджета, которым он не обладал. Это число предсказывает инциденты, потому что измеряет разрыв между тем, что агент считал, что может делать, и тем, что ему фактически было предоставлено.

Вторую метрику сложнее собирать, потому что она требует, чтобы слой полномочий регистрировал отказы в точке решения, а не в точке эффекта. Именно поэтому она более информативна. Система, которая может сообщать о своих собственных отказах в полномочиях, — это система, чья модель полномочий достаточно явна, чтобы о ней можно было рассуждать.

Поверхность управления находится над песочницей

Платформы изоляции полезны. Они уменьшают окно, в котором может действовать неправильно ведущий себя агент, и обеспечивают жёсткую остановку для случаев, когда все остальные слои отказали. Но жёсткая остановка — это запасной вариант, а не поверхность управления. Поверхность управления — это набор решений, принятых до запуска агента: какие инструменты он держит, какие учётные данные он несёт, к каким конечным точкам он может достичь, сколько он может потратить и когда всё это истекает.

Чтение OpenShell против течения предполагает, что индустрия сходится к превосходной изоляции и недоинвестирует в полномочия. Исправление — не более быстрый выключатель. Это слой политики, который делает выключатель ненужным для инцидентов, которые имеют значение.

ПоделитьсяXLinkedInПостоянная ссылка6 мин чтения

Связанное чтение

На какие вопросы это отвечает

Does containment make an agent safe?

No. Containment limits how long a misbehaving agent can act, but it does not define what the agent was authorised to attempt. Safety requires an authority layer above the sandbox that decides tool surface, credential scope, and spend ceilings before the run starts.

What is the difference between a containment metric and an authority metric?

Escape attempts blocked per thousand runs measures how often the sandbox supervisor fired. Unauthorised capability attempts per thousand runs measures how often an agent tried to use authority it did not hold. The second predicts incidents; the first describes the runtime.

Where should authority be enforced?

In the orchestrator and policy layer, not in the sandbox runtime. Scoped credentials, egress allowlists, tool-surface narrowing, and run-scoped expiry belong above the process boundary, so blast radius can be reasoned about independently of escape probability.