Контейнеры исполнения Microsoft

Контейнеры выполнения Microsoft (MXC) — это технология выполнения с открытым исходным кодом, основанная на политиках, для выполнения рабочих нагрузок с определёнными разрешениями ресурсов. Вы можете использовать пакет SDK .NET, TypeScript или Rust в приложении, чтобы выбрать рабочую нагрузку, описать доступ к ней и запустить ее в поддерживаемой среде изоляции.

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

MXC поддерживает Windows, Linux и macOS с помощью платформенно-специфичных бэкендов изоляции. Контейнер не обязательно означает виртуальную машину или образ контейнера: рабочая нагрузка может выполняться в песочнице процесса операционной системы, отдельном сеансе или виртуализированной среде. Доступные функции и ограничения зависят от выпуска MXC, серверной части и узла.

В этих статьях Learn описаны основные понятия и рабочий процесс интеграции. Документация MXC на GitHub содержит подробные рекомендации по пакету SDK, схеме, серверной части и реализации.

Изучите основные понятия

Концепция Meaning
Хост-приложение Надёжное приложение или среда выполнения агента, вызывающие пакет SDK, выбирающие разрешения, предоставляющие входные данные и обрабатывающие результаты.
Рабочая нагрузка Команда, скрипт или процесс, выполняющийся в изоляции
Политика Конфигурация, описывающая разрешенный доступ к ресурсам, например доступные для чтения файлы, доступные для записи выходные каталоги, сетевые назначения и доступ к пользовательскому интерфейсу
Конфигурация выполнения Политика вместе с командой, рабочим каталогом, параметрами среды выполнения и выбором изоляции
Серверная часть Механизм платформы, реализующий поддерживаемые ограничения (например, песочница процесса операционной системы, отдельный сеанс пользователя или виртуализированная среда)

Почему стоит использовать MXC

Для разных задач требуются разные ресурсы. Для команды анализа репозитория может потребоваться доступ только для чтения к исходным данным и одна записываемая выходная папка. Для сборки также могут потребоваться файлы toolchain и скачивание пакетов. Для более длительного рабочего процесса может потребоваться сохранять среду между командами.

MXC предоставляет приложению общую политику и модель выполнения вместо необходимости отдельной интеграции с каждым механизмом изоляции операционной системы. Ее можно использовать в следующих целях:

  • Выполняйте созданные команды, скрипты или внешние средства, не предоставляя приложению-хосту полный доступ.
  • Отделяйте доступные для чтения входные данные от выходных данных, доступных для записи, и сохраняйте учетные данные вне досягаемости рабочей нагрузки.
  • Запретить доступ к сети, разрешить выбранные прямые подключения или использовать предоставляемый приложением прокси-сервер HTTP(S) на поддерживаемых серверных компонентах.
  • Ограничьте доступ к окнам, буферу обмена и искусственному вводу с клавиатуры или указателя.
  • Создание и уточнение разрешений на доступ к ресурсам с помощью режима обучения для рабочих нагрузок Windows ProcessContainer.

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

Начало работы с MXC

Начните с запуска рабочей нагрузки с помощью пакета SDK MXC. Приводятся примеры C#, TypeScript и Rust, которые считывают входные данные, записывают их в выделенную выходную папку и демонстрируют запрещенную операцию.

SDK Package Подробное руководство
.NET Microsoft.Mxc.Sdk на NuGet.org Руководство по .NET SDK
Node.js / TypeScript @microsoft/mxc-sdk в npm Руководство по пакету SDK TypeScript
Rust mxc-sdk на crates.io Руководство по Rust SDK

Может быть трудно предсказать все ресурсы, к которым рабочей нагрузке может потребоваться доступ. Режим обучения поможет вам создать политику наименьших привилегий для Windows, записав ресурсы, к которым рабочая нагрузка пытается получить доступ.

Вы также можете использовать агент для написания кода для адаптации примеров. Агент программирования может помочь объяснить наблюдения, но убедитесь, что вы просматриваете и утверждаете любые изменения политик доступа к ресурсам.

Как работает MXC

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

Note

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