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:

  1. Het containertype.
  2. De insluitingsregels.
  3. 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 platformStandaard backendAndere backendsMinimaal host-besturingssysteem
Windows 11 x64 / ARM64processcontainerwindowssandbox, wslc, microvm, hyperlight*, isolationsessionWindows OS-versie ondersteuning
Linux x64 / ARM64bubblewraplxc, microvm, hyperlight-
macOS ARM64 / x64seatbelt--

\ Deze backends zijn experimenteel.*

Hoe gebruik ik MXC?

Installeer een SDK via uw pakketbeheerder. Het is niet nodig om deze repository te klonen.

SDKPakket
Rusthttps://crates.io/crates/mxc-sdk
.NEThttps://www.nuget.org/packages/Microsoft.Mxc.Sdk
Nodehttps://www.npmjs.com/package/@microsoft/mxc-sdk

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

DocumentLocatie in repositoryDoel
SDK samplessamples/Uitvoerbare Rust, .NET en Node scenario's
SDK API referencedocs/api-reference/Ondersteunde V1 operaties en typen
Container lifecycledocs/container-lifecycle.mdOverzicht van de persistente container-levenscyclus
Logging access denieddocs/logging-access-denied.mdDiagnose van geblokkeerde toegangen en beleidsvorming
Telemetrydocs/telemetry.mdToestemming en administratieve controles
Backend guidesdocs/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.