Модель не является границей безопасности

System prompt объясняет правила, но не обеспечивает изоляцию. Агент читает внешние документы, страницы и тикеты, где может встретить prompt injection; он также способен ошибиться в команде. Поэтому разрешение должно проверяться исполняющим слоем независимо от текста модели.

Модель угроз

Зафиксируйте активы и каналы: секреты, исходный код, пользовательские файлы, внутренняя сеть, cloud metadata, package registries и внешние API. Рассмотрите чтение чужих данных, изменение файлов, эксфильтрацию через DNS/HTTP, fork bomb, майнинг, загрузку вредоносного пакета и обход approval через другой инструмент.

Одноразовое окружение

Создавайте sandbox на задание или короткую сессию из известного immutable image. После выполнения уничтожайте filesystem и процессы. Не монтируйте Docker socket, домашний каталог хоста и общие credentials. Root внутри контейнера без корректной границы runtime всё ещё может быть опасен.

Файловая система и данные

Корень — read-only, рабочая папка — отдельный volume с лимитом размера. Входные файлы копируются явно, результат выгружается после проверки типа и размера. Пути нормализуются до policy check, symlink и path traversal запрещаются. Чувствительные наборы не смешиваются между tenants.

Сеть deny by default

Отключите исходящую сеть по умолчанию. Если workflow требует доступ, разрешайте конкретные hosts, протоколы и методы через egress proxy; блокируйте private ranges, metadata endpoints и произвольный DNS. Прокси добавляет identity задания, rate limits, журнал и фильтрацию ответа.

Секреты через брокер полномочий

Не показывайте модели постоянный API key. Агент просит capability: «прочитать issue 123» или «создать черновик письма». Брокер проверяет tenant, scope, approval и бюджет, затем выполняет действие сам либо выдаёт короткоживущий token. Секрет не попадает в prompt, stdout и артефакты.

Лимиты и аварийная остановка

Ограничьте wall-clock time, CPU, RAM, число процессов, размер диска, output bytes, сетевые запросы и стоимость внешних вызовов. У каждого задания есть kill switch. Таймаут процесса не заменяет отмену дочерних процессов и отзыв временных credentials.

Проверка и rollout

Создайте adversarial набор: команды чтения соседних каталогов, запрос metadata endpoint, архив с symlink, бесконечный цикл и документ с инструкцией украсть секрет. Запускайте новые images и policies на canary, версионируйте их вместе с workflow и сохраняйте причину каждого deny.

Контейнер, microVM или удалённый runner

Контейнер быстро запускается и подходит низкорисковому коду при жёсткой конфигурации. MicroVM усиливает границу ядра ценой старта и эксплуатации. Удалённый специализированный runner удобен для браузера или сборок. Выбор делайте по последствиям побега, недоверенности кода и требуемым устройствам, а не по одному benchmark.

КонтурПлюсЦена
Containerбыстрый стартобщее ядро
MicroVMсильнее изоляциясложнее pool
Remote runnerспецсредасеть и доверие

Supply chain внутри песочницы

Запрет доступа к хосту не защищает от вредного dependency. Фиксируйте версии и hashes, используйте внутренний proxy registry, сканируйте image и создавайте SBOM. Динамическая установка пакета требует отдельного разрешения; имя пакета от модели нельзя автоматически считать доверенным.

Артефакты на выходе

Файл, созданный агентом, остаётся недоверенным. Перед публикацией проверьте magic bytes, архивы, макросы, активный HTML, размер, число вложенных файлов и malware scan. Отдавайте артефакт с безопасным content disposition и из отдельного домена без пользовательских cookies.

С чего начать внедрение?
Выберите один реальный workflow, опишите его внешние эффекты и отказ в середине выполнения. Затем добавьте минимальные policy, idempotency и наблюдаемость до роста автономности.
Можно ли решить задачу одним system prompt?
Нет. Prompt задаёт поведение модели, но timeout, права, уникальность операций, изоляция и аудит должны обеспечиваться исполняющей инфраструктурой.
Какие ошибки нельзя повторять автоматически?
Ошибки прав и валидации, исчерпанный бюджет, просроченный дедлайн и необратимые действия с неизвестным исходом требуют остановки, сверки состояния или человека.
Что измерять в production?
Успешность и длительность по шагам, число повторов, возраст работы, внешние эффекты, ошибки policy, стоимость, насыщение лимитов и долю ручных вмешательств.
Как безопасно увеличить автономность?
Расширяйте полномочия по одному классу действий: shadow, затем canary с малым лимитом, обязательный аудит и kill switch, после чего анализируйте реальные инциденты.
← Все статьи блога