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 会将该请求转换为所选后端的操作。 然后,主机处理输出、退出状态、警告和清理。