0004 — CBotBuilder работает на веб-хосте в контейнере sandbox
Контекст
Построение cBot пользователя означает запуск untrusted MSBuild — произвольный код на время построения (targets, source generators, restore scripts). Это требует Docker socket для запуска SDK контейнера. Узлы запускают trading контейнеры и не должны также держать привилегии построения.
Решение
CBotBuilder работает на веб-хосте (который уже имеет Docker socket), внутри контейнера throwaway SDK с:
- bind-mounted директорией
/work(только inputs/outputs построения, не host filesystem); - общий том
app-nuget-cacheдля производительности restore; - нет host сетевого доступа кроме того, что restore требует.
Так untrusted MSBuild не может доступить host filesystem или сеть. Контейнеры запуска/бэктеста, в отличие, запускаются на узлах выбранных NodeScheduler.
Последствия
- Привилегия построения (Docker socket) ограничена веб-хостом; узлы только запускают разрешенные trading образы.
- Каждое построение изолировано в disposable контейнере — malicious построение не может persist или escape.
- Веб-хост должен иметь Docker socket доступный; это требование развертывания, не опциональное.