Microsoft 执行容器

Microsoft执行容器(MXC)是一种开源、策略驱动的执行技术,用于运行具有已定义资源权限的工作负荷。 可以在应用中使用 .NET、TypeScript 或 Rust SDK 来选择工作负载、描述其可访问的内容,并在受支持的隔离环境中运行它。

应用、代理和开发人员工具通常运行它们未创建或未完全控制的代码,例如 AI 生成的命令、第三方工具和用户提供的脚本。 如果没有隔离,该代码可以继承对文件、凭据、网络服务和其他资源的广泛访问权限。 MXC 可帮助你将该访问权限限制在任务所需的范围内。

MXC 通过特定于平台的包含后端支持 Windows、Linux 和 macOS。 容器不一定意味着虚拟机或容器映像:工作负荷可以在操作系统进程沙盒、单独的会话或虚拟化环境中运行。 可用的功能和限制取决于 MXC 版本、后端和主机。

这些 Learn 文章介绍了概念和集成工作流。 GitHub 上的 MXC 文档提供了详细的 SDK、架构、后端和实现指南。

了解核心概念

概念 Meaning
宿主应用 受信任的应用或代理运行时,它调用 SDK、选择权限、提供输入并处理结果
工作量 在隔离环境下运行的命令、脚本或进程
Policy 描述允许的资源访问的配置,例如可读文件、可写输出目录、网络目标和 UI 访问
执行配置 策略以及命令、工作目录、运行时设置和包含选择
后端 实现受支持限制的平台机制(例如操作系统进程沙盒、单独的用户会话或虚拟化环境)

为何使用 MXC

不同的任务需要不同的资源。 存储库分析命令可能需要只读源访问权限和一个可写输出文件夹。 构建可能还需要工具链文件和包下载。 长时间运行的工作流可能需要跨命令保留环境。

MXC 为应用提供通用策略和执行模型,而无需与每个操作系统隔离机制单独集成。 你可以用其执行以下操作:

  • 在不授予主机应用的完全访问权限的情况下运行生成的命令、脚本或外部工具。
  • 将可读输入与可写输出分开,并将凭据保留在工作负荷的访问范围之外。
  • 拒绝网络访问、允许选定的直接连接,或在支持的后端上使用应用程序提供的 HTTP(S)代理。
  • 限制窗口、剪贴板访问和合成键盘或指针输入。
  • 使用学习模式为 Windows ProcessContainer 工作负荷创建和优化资源权限。

隔离限制工作负载可以执行的操作;这并不意味着生成的指令、输出或允许的操作是可信的。 将策略决策保留在受信任的主机代码中,并在应用根据这些结果采取行动之前验证结果。

MXC 入门

首先 使用 MXC SDK 运行工作负荷。 它提供 C#、TypeScript 和 Rust 示例,这些示例读取输入、写入专用输出文件夹并演示被拒绝的操作。

SDK Package 详细指南
.NET Microsoft.Mxc.Sdk在 NuGet.org 上 .NET SDK 指南
Node.js/TypeScript @microsoft/mxc-sdk 在 npm 上 TypeScript SDK 指南
Rust mxc-sdk在 crates.io 上 Rust SDK 指南

很难预测工作负荷可能需要访问的所有资源。 学习模式通过记录工作负荷尝试访问的资源,帮助你对Windows创建最低特权策略。

还可以使用编码智能体来协助调整示例。 编码代理可以帮助解释观察,但请确保查看和批准对资源访问策略所做的任何更改。

MXC 的工作原理

主机发现支持的后端容器,创建策略和执行请求,并通过 SDK 启动工作负荷。 MXC 会将该请求转换为所选后端的操作。 然后,主机处理输出、退出状态、警告和清理。

Note

后端可以具有不同的安全属性。 确认所选环境可以强制实施所需的控件,并测试允许和拒绝的操作。 请参阅 MXC 体系结构、 平台支持和 发行说明。