Skip to content

[Sandbox M1] Реализация базового менеджера запусков OS Process Sandbox (bwrap / AppContainer / sandbox-exec) #300

Description

@ZhuchkaTriplesix

Описание задачи

В рамках реализации Блока E (Sandbox Runtime) необходимо создать ядро сервиса SandboxProcessRunner (lib/core/extensions/sandbox/sandbox_process_runner.dart) для безопасного запуска изолированных процессов сторонних расширений (в первую очередь драйверов БД ExtensionType.databaseDriver).

Список задач

  • Нативные обертки запуска для платформ:
    • Linux: запуск через bubblewrap (bwrap --unshare-all --share-net --ro-bind / /).
    • macOS: профиль песочницы sandbox-exec -p SeatbeltProfile.
    • Windows: запуск в AppContainer (Low Integrity Level) + привязка к Job Object для ограничения памяти.
  • Создание изолированной временной директории (scratch directory) /tmp/querya_sandbox/<plugin_id>_<pid>/ с правами чтения и записи (квота 100 МБ).
  • Реализация методов kill() и dispose() для гарантированного завершения дочернего процесса и полного автоудаления временной папки при остановке сессии или сбое.
  • Написание юнит- и интеграционных тестов (sandbox_process_runner_test.dart).

Техническая документация

📄 Подробная архитектура описана в заметке Obsidian: 04 — Расширения/Блок E — Sandbox Runtime.md.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions