Microsoft eXecution Container (MXC) is een framework ontworpen om niet-vertrouwde code, zoals model-outputs, plugins en tools, veilig te isoleren en uit te voeren. Het systeem is cross-platform en biedt ondersteuning voor Windows, Linux en macOS door gebruik te maken van diverse insluitings-backends, variërend van OS-native proces-sandboxes tot volledige virtuele machines (VM's).
De belangrijkste technische kenmerken zijn:
- Beleidsgestuurde sandboxing: Gebruikers kunnen gedetailleerde regels definiëren voor toegang tot het bestandssysteem (read-only/read-write), netwerkverkeer (proxy en filtering) en de gebruikersinterface (klembord en display).
- Integratie via SDK's: MXC kan eenvoudig worden ingebouwd in applicaties via getypeerde SDK's voor Rust, .NET en Node.js.
- Platformspecifieke backends: Afhankelijk van het OS worden verschillende backends gebruikt, zoals
bubblewrap voor Linux, seatbelt voor macOS en processcontainer of Windows Sandbox voor Windows.
- Diagnostiek en Audit: Het systeem bevat tools voor probleemoplossing, waaronder een audit-modus die helpt bij het reconstrueren van het benodigde beveiligingsbeleid door waargenomen toegangen te registreren.
Het project is modulair opgebouwd: een applicatie start een verzoek via de SDK, waarna MXC de juiste backend selecteert om de workload in een gecontroleerde omgeving uit te voeren.
Microsoft eXecution Container (MXC)
Kenmerken
- Cross-platform: Ondersteuning voor Windows, Linux en macOS met platform-specifieke insluitings-backends.
- JSON-gebaseerde configuratie: Geversioneerde aanvragen voor het maken van containers en beveiligingsbeleid.
- Meerdere insluitings-backends: Ondersteuning voor
ProcessContainer, Windows Sandbox, LXC, Bubblewrap, Seatbelt, MicroVM (Nanvix), Hyperlight, IsolationSession en WSLC.
- Beleidsgestuurde sandboxing:
- Bestandssysteembeleid: Lijsten voor alleen-lezen, lezen-schrijven en geweigerde paden.
- Netwerkbeleid: Proxy-ondersteuning, controles op uitgaand verkeer en backend-afhankelijke host-filtering.
- UI-beleid: Controles voor het klembord, het display en GUI-toegang.
- Toestandsbewuste levenscyclus: Mogelijkheid om persistente containers te voorzien (
provision), starten, uitvoeren, stoppen en te verwijderen (deprovision).
- Rust, .NET en Node SDK's: Geversioneerde API's voor zowel eenmalige als toestandsbewuste uitvoering.
- Diagnostiek: Tools om "toegang geweigerd"-fouten binnen een container te begrijpen.
Wat is MXC?
MXC is een SDK-afhankelijkheid die in uw applicatie wordt ingebouwd. De workflow ziet er als volgt uit:
Uw applicatie (Launch API) → MXC SDK (Rust / .NET / Node, in-process) → Geselecteerde backend (in-process) → Geïsoleerde workload (ProcessContainer / WSLC / Bubblewrap / ...)
Laden
Uw applicatie specificeert:
- Het containertype.
- De insluitingsregels.
- Het workload-commando.
MXC valideert de aanvraag, selecteert de backend en start de workload in de resulterende container.
Ondersteunde containertypen
MXC voert workloads uit via platform-specifieke container-backends op Windows, Linux en macOS.
| Runtime platform | Standaard backend | Andere backends | Minimaal host-besturingssysteem |
| Windows 11 x64 / ARM64 | processcontainer | windowssandbox, wslc, microvm, hyperlight*, isolationsession | Windows OS-versie ondersteuning |
| Linux x64 / ARM64 | bubblewrap | lxc, microvm, hyperlight | - |
| macOS ARM64 / x64 | seatbelt | - | - |
\ Deze backends zijn experimenteel.*
Hoe gebruik ik MXC?
Installeer een SDK via uw pakketbeheerder. Het is niet nodig om deze repository te klonen.
De Node- en .NET-pakketten bevatten de native runtime-assets. De Rust crate bouwt de MXC SDK, engine en de geselecteerde backends direct in de consumerende applicatie.
Consumptie zonder SDK: Platformspecifieke executor-binaries, zoals wxc-exec.exe, accepteren JSON-aanvragen voor het maken van containers die zijn gedefinieerd door het stabiele schema. Gebruik dit voor testen of wanneer de SDK niet in uw app kan worden ingebed.
Een contained workload uitvoeren
Voor volledige SDK-voorbeelden kunt u kijken naar de Rust, .NET en Node samples.
Voorbeeld Node-snippet
import { spawn, type ContainerRequest } from '@microsoft/mxc-sdk/v1';
const request: ContainerRequest = {
command: 'node -e "console.log(\'hello from container\')"',
network: { egress: { default: 'deny' } },
timeoutMs: 30_000,
};
const child = await spawn(request);
Zie ook het uitvoerbare streaming standard-I/O voorbeeld en de SDK API-referentie.
Probleemoplossing
Wanneer een applicatie in een sandbox wordt uitgevoerd, kunnen er toegangsinstellingen tegenvallen totdat de insluitingsregels zijn afgestemd.
Debug-consolestatus
Native executors reserveren normaal gesproken de standaard input, output en error voor de workload. Gebruik --debug voor MXC-diagnostische output:
wxc-exec.exe --debug config.json
Zie de MXC-diagnostiek voor de volledige referentie voor ontwikkelaars.
Audit-modus
Waarschuwing: --audit schakelt alle sandbox-beveiliging uit voor de workload die wordt geanalyseerd. Gebruik dit nooit om niet-vertrouwde code uit te voeren.
De audit-modus helpt een beleidsauteur om "toegang geweigerd"-fouten te vinden en een ProcessContainer-beleid te reconstrueren dat de bestanden en mogelijkheden verleent die een vertrouwde tool daadwerkelijk nodig heeft. Op ondersteunde Windows-versies kunt u dit uitvoeren via:
wxc-exec.exe --audit policy.json
MXC registreert de waargenomen toegangen en produceert artefacten voor het opstellen van het beleid. Zie "logging access denied" voor veilige deny-and-record diagnostiek, audit-outputs en ondersteunde workflows.
Telemetrie
Officiële Microsoft-builds kunnen optionele diagnostische telemetrie naar Microsoft verzenden. Telemetrie is uitgeschakeld, tenzij:
- De individuele run hiervoor kiest.
- De Windows-gebruiker expliciet toestemming heeft gegeven.
- Het administratieve beleid verzameling toestaat.
- Uw applicatie de telemetrie-optie inschakelt in een aanvraag voor een contained workload.
Een beheerder kan telemetrie blokkeren, maar kan geen toestemming verlenen namens de gebruiker. Lokale open-source builds zijn niet geconfigureerd om telemetrie naar Microsoft te routeren, en telemetrie is een no-op op niet-Windows platformen. Zie het telemetriebeleid en de toestemming voor details over privacy en controles.
Bouwen vanuit broncode
Bouw vanuit broncode wanneer u MXC ontwikkelt, de native runtime wijzigt of de standalone executor-binaries gebruikt in plaats van een gepackaged SDK. Repository-builds produceren de platform-native runtime en executors en bereiden de native assets voor die door de Node SDK worden gebruikt.
Vereisten voor build
- Rust, vastgezet op versie 1.93 via
src/rust-toolchain.toml.
- Node.js 24 of later en npm.
- De platform-toolchain en vereisten zoals beschreven door de geselecteerde backend.
Build-commando's
- Windows:
build.bat --all (Release build voor huidige architectuur)
- Linux:
./build.sh --all (Release build)
- macOS:
./build-mac.sh --all (Release build voor native architectuur)
Documentatie
Consumentendocumentatie
| Document | Locatie in repository | Doel |
| SDK samples | samples/ | Uitvoerbare Rust, .NET en Node scenario's |
| SDK API reference | docs/api-reference/ | Ondersteunde V1 operaties en typen |
| Container lifecycle | docs/container-lifecycle.md | Overzicht van de persistente container-levenscyclus |
| Logging access denied | docs/logging-access-denied.md | Diagnose van geblokkeerde toegangen en beleidsvorming |
| Telemetry | docs/telemetry.md | Toestemming en administratieve controles |
| Backend guides | docs/backends/ | Platform- en backend-vereisten en gedrag |
Bijdragers aan de repository kunnen beginnen met de MXC-ontwikkelingsdocumentatie.
Bijdragen en Licentie
- Voor richtlijnen over het bijdragen, zie
CONTRIBUTING.md.
- Voor details over de licentie, zie
LICENSE.md.
Microsoft eXecution Container (MXC)
Kenmerken
- Cross-platform: Ondersteuning voor Windows, Linux en macOS met platform-specifieke insluitings-backends.
- JSON-gebaseerde configuratie: Geversioneerde aanvragen voor het maken van containers en beveiligingsbeleid.
- Meerdere insluitings-backends: Ondersteuning voor
ProcessContainer, Windows Sandbox, LXC, Bubblewrap, Seatbelt, MicroVM (Nanvix), Hyperlight, IsolationSession en WSLC.
- Beleidsgestuurde sandboxing:
- Bestandssysteembeleid: Lijsten voor alleen-lezen, lezen-schrijven en geweigerde paden.
- Netwerkbeleid: Proxy-ondersteuning, controles op uitgaand verkeer en backend-afhankelijke host-filtering.
- UI-beleid: Controles voor het klembord, het display en GUI-toegang.
- Toestandsbewuste levenscyclus: Mogelijkheid om persistente containers te voorzien (
provision), starten, uitvoeren, stoppen en te verwijderen (deprovision).
- Rust, .NET en Node SDK's: Geversioneerde API's voor zowel eenmalige als toestandsbewuste uitvoering.
- Diagnostiek: Tools om "toegang geweigerd"-fouten binnen een container te begrijpen.
Wat is MXC?
MXC is een SDK-afhankelijkheid die in uw applicatie wordt ingebouwd. De workflow ziet er als volgt uit:
Uw applicatie (Launch API) → MXC SDK (Rust / .NET / Node, in-process) → Geselecteerde backend (in-process) → Geïsoleerde workload (ProcessContainer / WSLC / Bubblewrap / ...)
Laden
Uw applicatie specificeert:
- Het containertype.
- De insluitingsregels.
- Het workload-commando.
MXC valideert de aanvraag, selecteert de backend en start de workload in de resulterende container.
Ondersteunde containertypen
MXC voert workloads uit via platform-specifieke container-backends op Windows, Linux en macOS.
| Runtime platform | Standaard backend | Andere backends | Minimaal host-besturingssysteem |
| Windows 11 x64 / ARM64 | processcontainer | windowssandbox, wslc, microvm, hyperlight*, isolationsession | Windows OS-versie ondersteuning |
| Linux x64 / ARM64 | bubblewrap | lxc, microvm, hyperlight | - |
| macOS ARM64 / x64 | seatbelt | - | - |
\ Deze backends zijn experimenteel.*
Hoe gebruik ik MXC?
Installeer een SDK via uw pakketbeheerder. Het is niet nodig om deze repository te klonen.
De Node- en .NET-pakketten bevatten de native runtime-assets. De Rust crate bouwt de MXC SDK, engine en de geselecteerde backends direct in de consumerende applicatie.
Consumptie zonder SDK: Platformspecifieke executor-binaries, zoals wxc-exec.exe, accepteren JSON-aanvragen voor het maken van containers die zijn gedefinieerd door het stabiele schema. Gebruik dit voor testen of wanneer de SDK niet in uw app kan worden ingebed.
Een contained workload uitvoeren
Voor volledige SDK-voorbeelden kunt u kijken naar de Rust, .NET en Node samples.
Voorbeeld Node-snippet
import { spawn, type ContainerRequest } from '@microsoft/mxc-sdk/v1';
const request: ContainerRequest = {
command: 'node -e "console.log(\'hello from container\')"',
network: { egress: { default: 'deny' } },
timeoutMs: 30_000,
};
const child = await spawn(request);
Zie ook het uitvoerbare streaming standard-I/O voorbeeld en de SDK API-referentie.
Probleemoplossing
Wanneer een applicatie in een sandbox wordt uitgevoerd, kunnen er toegangsinstellingen tegenvallen totdat de insluitingsregels zijn afgestemd.
Debug-consolestatus
Native executors reserveren normaal gesproken de standaard input, output en error voor de workload. Gebruik --debug voor MXC-diagnostische output:
wxc-exec.exe --debug config.json
Zie de MXC-diagnostiek voor de volledige referentie voor ontwikkelaars.
Audit-modus
Waarschuwing: --audit schakelt alle sandbox-beveiliging uit voor de workload die wordt geanalyseerd. Gebruik dit nooit om niet-vertrouwde code uit te voeren.
De audit-modus helpt een beleidsauteur om "toegang geweigerd"-fouten te vinden en een ProcessContainer-beleid te reconstrueren dat de bestanden en mogelijkheden verleent die een vertrouwde tool daadwerkelijk nodig heeft. Op ondersteunde Windows-versies kunt u dit uitvoeren via:
wxc-exec.exe --audit policy.json
MXC registreert de waargenomen toegangen en produceert artefacten voor het opstellen van het beleid. Zie "logging access denied" voor veilige deny-and-record diagnostiek, audit-outputs en ondersteunde workflows.
Telemetrie
Officiële Microsoft-builds kunnen optionele diagnostische telemetrie naar Microsoft verzenden. Telemetrie is uitgeschakeld, tenzij:
- De individuele run hiervoor kiest.
- De Windows-gebruiker expliciet toestemming heeft gegeven.
- Het administratieve beleid verzameling toestaat.
- Uw applicatie de telemetrie-optie inschakelt in een aanvraag voor een contained workload.
Een beheerder kan telemetrie blokkeren, maar kan geen toestemming verlenen namens de gebruiker. Lokale open-source builds zijn niet geconfigureerd om telemetrie naar Microsoft te routeren, en telemetrie is een no-op op niet-Windows platformen. Zie het telemetriebeleid en de toestemming voor details over privacy en controles.
Bouwen vanuit broncode
Bouw vanuit broncode wanneer u MXC ontwikkelt, de native runtime wijzigt of de standalone executor-binaries gebruikt in plaats van een gepackaged SDK. Repository-builds produceren de platform-native runtime en executors en bereiden de native assets voor die door de Node SDK worden gebruikt.
Vereisten voor build
- Rust, vastgezet op versie 1.93 via
src/rust-toolchain.toml.
- Node.js 24 of later en npm.
- De platform-toolchain en vereisten zoals beschreven door de geselecteerde backend.
Build-commando's
- Windows:
build.bat --all (Release build voor huidige architectuur)
- Linux:
./build.sh --all (Release build)
- macOS:
./build-mac.sh --all (Release build voor native architectuur)
Documentatie
Consumentendocumentatie
| Document | Locatie in repository | Doel |
| SDK samples | samples/ | Uitvoerbare Rust, .NET en Node scenario's |
| SDK API reference | docs/api-reference/ | Ondersteunde V1 operaties en typen |
| Container lifecycle | docs/container-lifecycle.md | Overzicht van de persistente container-levenscyclus |
| Logging access denied | docs/logging-access-denied.md | Diagnose van geblokkeerde toegangen en beleidsvorming |
| Telemetry | docs/telemetry.md | Toestemming en administratieve controles |
| Backend guides | docs/backends/ | Platform- en backend-vereisten en gedrag |
Bijdragers aan de repository kunnen beginnen met de MXC-ontwikkelingsdocumentatie.
Bijdragen en Licentie
- Voor richtlijnen over het bijdragen, zie
CONTRIBUTING.md.
- Voor details over de licentie, zie
LICENSE.md.