
नीति-संचालित, स्तरित अलगाव और रोकथाम
MXC एक सैंडबॉक्स्ड कोड निष्पादन प्रणाली है जो Windows, Linux और macOS पर अविश्वसनीय कोड (मॉडल आउटपुट, प्लगइन्स, टूल्स) चलाने के लिए है। यह एकीकृत JSON कॉन्फ़िगरेशन स्कीमा और TypeScript SDK के पीछे कई कंटेनमेंट बैकएंड प्रदान करता है — OS-नेटिव प्रोसेस सैंडबॉक्स से लेकर पूर्ण VM तक।
[!WARNING] इस रिपॉजिटरी में Microsoft Execution Containers पर डेवलपर्स से प्रारंभिक एकीकरण और फीडबैक सक्षम करने के लिए प्रकाशित कोड का एक प्रारंभिक पूर्वावलोकन है। इस प्रारंभिक पूर्वावलोकन में अंतर्निहित सैंडबॉक्स बदलने की उम्मीद है क्योंकि वे निरंतर विकास के अधीन हैं, हालांकि हम कार्यक्षमता विकसित होने पर संगतता प्रभाव को कम करने का लक्ष्य रखेंगे। ऐसे ज्ञात मामले हैं जहां इस रिपॉजिटरी में MXC SDK द्वारा उत्पन्न वर्तमान नीतियां अत्यधिक अनुमेय हैं और इसे अधिक सामान्य रूप से उपलब्ध कराने से पहले इन्हें संबोधित किया जाएगा। MXC के परिपक्व होने पर सुरक्षा शोधकर्ता साझेदारी का स्वागत है, हालांकि वर्तमान में किसी भी MXC प्रोफ़ाइल को सुरक्षा सीमा के रूप में नहीं माना जाना चाहिए।
@microsoft/mxc-sdk npm पैकेज वन-शॉट और स्टेट-अवेयर API के साथMXC एक नेटिव कंटेनर रैपर के साथ-साथ एक TypeScript SDK भी शामिल करता है — पूर्ण API दस्तावेज़ीकरण के लिए SDK README देखें।
| प्लेटफ़ॉर्म | डिफ़ॉल्ट बैकएंड | अन्य बैकएंड | न्यूनतम बिल्ड |
|---|---|---|---|
| Windows 11 24H2+ (25H2 पर सत्यापित) | processcontainer | windows_sandbox, wslc, microvm, hyperlight, isolation_session | processcontainer: 26100 (24H2)isolation_session: 26340.9212 (Insider Preview) |
| Linux x64 / ARM64 | bubblewrap | lxc, microvm, hyperlight | — |
macOS ARM64 / x64 (स्कीमा 0.7.0-alpha+) | seatbelt | — | — |
स्थिर वन-शॉट बैकएंड (processcontainer, bubblewrap, lxc और seatbelt) को प्रयोगात्मक मोड की आवश्यकता नहीं है; Linux होस्ट को भी मेल खाता रनटाइम स्थापित करने की आवश्यकता है: डिफ़ॉल्ट बैकएंड के लिए bwrap (Bubblewrap), या lxc बैकएंड के लिए lxc टूलसेट। प्रयोगात्मक बैकएंड (windows_sandbox, wslc, microvm, isolation_session, hyperlight) को SandboxSpawnOptions में { experimental: true } या --experimental CLI फ़्लैग की आवश्यकता होती है।
Windows processcontainer बैकएंड प्रत्येक Windows 11 रिलीज़ (23H2 / 24H2 / 25H2 / 25H2+) पर कौन से फ़ाइलसिस्टम, नेटवर्क और UI-प्रतिबंध नीति पहलुओं को लागू कर सकता है, इसके लिए Windows OS-version policy support देखें।
src/rust-toolchain.toml के माध्यम से संस्करण 1.93 पर पिन किया गया (rustup द्वारा स्वचालित रूप से चयनित)src/ Rust वर्कस्पेस (नेटिव बाइनरी + साझा लाइब्रेरी क्रेट्स)
sdk/ TypeScript SDK (@microsoft/mxc-sdk npm पैकेज)
schemas/ JSON कॉन्फ़िगरेशन स्कीमा (स्थिर + देव)
docs/ दस्तावेज़ीकरण (स्कीमा संदर्भ, बैकएंड गाइड, डिज़ाइन दस्तावेज़)
tests/ परीक्षण सहायक सामग्री (कॉन्फ़िग, उदाहरण, स्क्रिप्ट)
scripts/ बिल्ड और उपयोगिता स्क्रिप्ट
build.bat # वर्तमान आर्किटेक्चर के लिए रिलीज़ बिल्ड
build.bat --debug # डीबग बिल्ड
build.bat --all # x64 और ARM64 दोनों के लिए रिलीज़ बिल्ड
build.bat --with-microvm # NanVix माइक्रो-VM बाइनरी शामिल करें
./build.sh # रिलीज़ बिल्ड
./build.sh --debug # डीबग बिल्ड
./build.sh --rust-only # केवल Rust बाइनरी, SDK/CLI छोड़ें
./build-mac.sh # नेटिव आर्किटेक्चर के लिए रिलीज़ बिल्ड
./build-mac.sh --all # Apple Silicon और Intel दोनों
./build-mac.sh --debug # डीबग बिल्ड
./build-mac.sh --rust-only # केवल Rust बाइनरी, SDK छोड़ें
सभी बिल्ड स्क्रिप्ट:
sdk/node/bin/<arch>/ (उदाहरण के लिए, x64 या arm64) में कॉपी करें# Rust वर्कस्पेस (src/ से)
cargo build --release --target x86_64-pc-windows-msvc # Windows x64
cargo build --release --target aarch64-pc-windows-msvc # Windows ARM64
cargo build --release -p lxc # Linux — lxc-exec (LXC और Bubblewrap दोनों के लिए कार्य करता है)
cargo build --release -p mxc_darwin --target aarch64-apple-darwin # macOS
# SDK (sdk/node/ से)
npm install && npm run build
# Windows Rust (src/ से)
cargo clippy --workspace --all-targets -- -D warnings
# Linux Rust (src/ से; build.sh के प्लेटफ़ॉर्म-संगत क्रेट सेट से मेल खाता है)
cargo clippy -p lxc -p lxc_common -p wxc_common -p bwrap_common -p unix_test_proxy --all-targets -- -D warnings
# macOS Rust (src/ से)
cargo clippy -p mxc_darwin -p seatbelt_common --all-targets -- -D warnings
# Rust यूनिट परीक्षण (src/ से)
cargo test --workspace
cargo test -p wxc_common # एकल क्रेट
cargo test -p wxc_common -- config_parser # परीक्षण नाम से फ़िल्टर करें
# SDK (sdk/node/ से)
npm test # यूनिट परीक्षण
npm run test:integration # एकीकरण परीक्षण
# E2E (src/ से)
cargo test -p wxc_e2e_tests
MXC निष्पादन पैरामीटर परिभाषित करने के लिए JSON कॉन्फ़िगरेशन का उपयोग करता है। पूर्ण संदर्भ के लिए स्कीमा दस्तावेज़ीकरण देखें।
# फ़ाइल पथ
wxc-exec.exe config.json
# Base64-एन्कोडेड कॉन्फ़िग
wxc-exec.exe --config-base64 <base64-encoded-json>
# डीबग आउटपुट
wxc-exec.exe --debug config.json
Linux पर: ./lxc-exec config.json
macOS पर: ./mxc-exec-mac --experimental config.json
npm install @microsoft/mxc-sdk
import {
spawnSandboxFromConfig, createConfigFromPolicy,
getAvailableToolsPolicy, getTemporaryFilesPolicy,
getPlatformSupport,
} from '@microsoft/mxc-sdk';
if (!getPlatformSupport().isSupported) {
throw new Error('MXC not available on this host');
}
const tools = getAvailableToolsPolicy(process.env);
const temp = getTemporaryFilesPolicy();
const config = createConfigFromPolicy({
version: '0.6.0-alpha',
filesystem: {
readonlyPaths: tools.readonlyPaths,
readwritePaths: temp.readwritePaths,
},
network: { allowOutbound: false },
timeoutMs: 30_000,
});
config.process!.commandLine = 'python -c "print(\'hello from sandbox\')"';
const child = spawnSandboxFromConfig(config, { usePty: false });
child.stdout!.on('data', (d) => process.stdout.write(d));
child.on('close', (code) => console.log('exit:', code));
SDK लंबे समय तक चलने वाले सैंडबॉक्स के लिए स्टेट-अवेयर लाइफसाइकिल API भी प्रदान करता है:
import {
provisionSandbox, startSandbox, execInSandboxAsync,
stopSandbox, deprovisionSandbox,
} from '@microsoft/mxc-sdk';
पूर्ण API दस्तावेज़ीकरण के लिए SDK README देखें।
जारी किए गए, अपरिवर्तनीय स्थिर स्कीमा schemas/stable/ में रहते हैं; प्रगति पर देव स्कीमा (प्रयोगात्मक बैकएंड, स्टेट-अवेयर लाइफसाइकिल) schemas/dev/ में रहती है। वर्तमान स्थिर और देव संस्करण schemas/schema-version.json में विहित रूप से ट्रैक किए जाते हैं।
किसी भी समर्थित प्लेटफ़ॉर्म पर नए कोड के लिए नवीनतम स्थिर स्कीमा चुनें। पूर्ण संस्करण डिज़ाइन के लिए docs/versioning.md देखें।
डिफ़ॉल्ट रूप से, नेटिव बाइनरी साइलेंट मोड में चलती हैं — stdin/stdout/stderr सीधे कंटेनर से जुड़ा होता है। वर्बोज़ आउटपुट के लिए --debug का उपयोग करें:
wxc-exec.exe --debug config.json
पूर्ण डायग्नोस्टिक्स संदर्भ के लिए docs/diagnostics.md देखें।
--audit ETL प्रतिधारण के साथ अनुमति मोड में processContainer.captureDenials पर एक संगतता रैपर है। यह permissiveLearningMode इंजेक्ट करता है, इसलिए अस्वीकृत संचालन रिकॉर्ड किए जाते हैं लेकिन आगे बढ़ने की अनुमति दी जाती है। पूर्ण PSEC/V2 लर्निंग मोड API सेट वाले होस्ट पर, चयनित ProcessContainer रनर PLM लॉन्च किए बिना या उन्नयन के लिए संकेत दिए बिना नेटिव कैप्चर का उपयोग करता है। पुराने या नीति-असंगत टियर संरक्षित-WPR फ़ॉलबैक का उपयोग करते हैं: wxc-exec.exe अनएलिवेटेड रहता है और केवल विशेषाधिकार प्राप्त WPR लाइफसाइकिल के लिए एक सत्र-स्कोप्ड UAC-एलिवेटेड PLM गार्जियन शुरू करता है, प्रमाणित स्थानीय नामित पाइप पर संचार करता है। इसे Windows Sandbox, WSLC, IsolationSession और हर अन्य कंटेनमेंट बैकएंड के लिए अस्वीकार कर दिया जाता है।
wxc-exec.exe --audit policy.json
सफल गैर-ड्राई-रन ऑडिट के लिए कैप्चर मेटाडेटा, कार्रवाई योग्य अस्वीकृति JSON और बनाए रखा ETL की आवश्यकता होती है। CLI बैकएंड-चयनित पथों को प्रति-उपयोगकर्ता ऑडिट निर्देशिका में denials.json और trace.etl में स्थानांतरित करता है, फिर ETL को फिर से डिकोड किए बिना कार्रवाई योग्य JSON से स्रोत-कॉन्फ़िग स्नैपशॉट और Adjusted_*.json उत्पन्न करता है। केवल-Base64 इनपुट JSON और ETL रखता है लेकिन स्नैपशॉट या समायोजित करने के लिए कोई स्रोत कॉन्फ़िग नहीं होता है। छोटा विश्लेषण JSON, ETL और स्रोत स्नैपशॉट रखता है लेकिन समायोजित-कॉन्फ़िग निर्माण छोड़ देता है। सीखी गई-नीति विवरण प्रिंट करने के लिए --audit-verbose का उपयोग करें।
चेतावनी:
--auditpermissiveLearningModeइंजेक्ट करता है — AppContainer प्रतिबंध रन की अवधि के लिए लागू नहीं होते हैं। केवल नीति लेखन के लिए उपयोग करें। इसेprocessContainer.captureDenialsके साथ जोड़ा नहीं जा सकता; अनुमेय एप्लिकेशन-संचालित कैप्चर के लिएcaptureDenials.mode: "allow"का उपयोग करें।learningModeLoggingऔरpermissiveLearningModeआरक्षित आंतरिक क्षमता नाम हैं औरprocessContainer.capabilitiesमें अस्वीकार कर दिए जाते हैं। तीन लर्निंग-मोड प्रवाहों के लिए docs/learning-mode/capabilities.md देखें।
MXC निष्पादन अवलोकनीयता के लिए वैकल्पिक TraceLogging ETW टेलीमेट्री का समर्थन करता है। सक्षम होने पर, संरचित इवेंट (MXC.Execution और MXC.Error) Rust tracelogging क्रेट के माध्यम से स्थानीय ETW सबसिस्टम में उत्सर्जित होते हैं। प्रत्येक इवेंट में सामान्य फ़ील्ड (Version, Channel, IsDebugging, UTCReplace_AppSessionGuid) भाग C कस्टम इवेंट डेटा के रूप में शामिल होते हैं।
टेलीमेट्री के लिए आवश्यक है:
"telemetry": { "enabled": true }कॉन्फ़िगरेशन फ़्लैग एक अतिरिक्त प्रति-रन ऑप्ट-इन है; यह सहमति प्रदान नहीं कर सकता या प्रशासनिक अवरोध को बायपास नहीं कर सकता। टेलीमेट्री तब तक बंद रहती है जब तक हर लागू गेट खुला न हो। MXC Windows Diagnostics & feedback सेटिंग का उपयोग एप्लिकेशन सहमति के विकल्प के रूप में नहीं करता है।
गैर-Windows प्लेटफ़ॉर्म पर, सभी टेलीमेट्री फ़ंक्शन नो-ऑप हैं।
सॉफ़्टवेयर आपके और सॉफ़्टवेयर के आपके उपयोग के बारे में जानकारी एकत्र कर सकता है और इसे Microsoft को भेज सकता है। Microsoft इस जानकारी का उपयोग सेवाएं प्रदान करने और हमारे उत्पादों और सेवाओं को बेहतर बनाने के लिए कर सकता है। आप रिपॉजिटरी में वर्णित अनुसार टेलीमेट्री बंद कर सकते हैं। सॉफ़्टवेयर में कुछ ऐसी विशेषताएं भी हैं जो आपको और Microsoft को आपके एप्लिकेशन के उपयोगकर्ताओं से डेटा एकत्र करने में सक्षम बना सकती हैं। यदि आप इन सुविधाओं का उपयोग करते हैं, तो आपको लागू कानून का पालन करना होगा, जिसमें Microsoft की गोपनीयता विवरण की एक प्रति के साथ आपके एप्लिकेशन के उपयोगकर्ताओं को उचित सूचनाएं प्रदान करना शामिल है। हमारा गोपनीयता विवरण https://go.microsoft.com/fwlink/?LinkID=824704 पर स्थित है। आप सहायता दस्तावेज़ीकरण और हमारे गोपनीयता विवरण में डेटा संग्रह और उपयोग के बारे में अधिक जान सकते हैं। सॉफ़्टवेयर का आपका उपयोग इन प्रथाओं के लिए आपकी सहमति के रूप में कार्य करता है।
टेलीमेट्री डिफ़ॉल्ट रूप से बंद है। इसे बंद रखने के लिए, रन के लिए "telemetry": { "enabled": true } सेट न करें।
यदि कॉन्फ़िग में टेलीमेट्री सक्षम है, तब भी संग्रह नहीं होता जब तक Windows उपयोगकर्ता सहमति प्रदान नहीं की जाती और प्रशासनिक नीति संग्रह की अनुमति नहीं देती।
आधिकारिक/शिप किए गए Microsoft बिल्ड बिल्ड समय पर एक TraceLogging प्रदाता समूह GUID सेट करते हैं और टेलीमेट्री सक्षम होने पर UTC पाइपलाइन के माध्यम से MXC.Execution और MXC.Error इवेंट को Microsoft को रूट करते हैं — वही बिल्ड-समय सेटिंग इवेंट के लिए सही Measures कीवर्ड और Product-and-Service-Usage गोपनीयता टैग भी चुनती है, इसलिए टेलीमेट्री रूटिंग और इवेंट वर्गीकरण हमेशा सहमत होते हैं। स्थानीय और ओपन-सोर्स बिल्ड डिफ़ॉल्ट रूप से Microsoft को कुछ भी नहीं भेजते हैं — सार्वजनिक स्रोत प्रदाता समूह GUID के बिना शिप होता है, इसलिए इवेंट केवल स्थानीय ETW सबसिस्टम में उत्सर्जित होते हैं, UTC अर्थ के बिना प्रदाता-स्थानीय कीवर्ड का उपयोग करते हैं, कोई गोपनीयता वर्गीकरण टैग नहीं रखते हैं, और किसी Microsoft संग्रह पाइपलाइन में रूट नहीं होते हैं। बिल्ड समय पर MXC_TELEMETRY_PROVIDER_GROUP_GUID पर्यावरण चर सेट करने वाले आंतरिक बिल्ड Microsoft-रूटेड पथ को सक्षम करते हैं।
कोई PII एकत्र नहीं किया जाता है। इवेंट में केवल निष्पादन मेट्रिक्स (अवधि, बैकएंड प्रकार, निकास कोड) और एक सीमित त्रुटि श्रेणी (error_type) होती है। फ्री-फ़ॉर्म त्रुटि संदेश पाठ कभी उत्सर्जित नहीं होता है, इसलिए पथ, उपयोगकर्ता नाम और क्रेडेंशियल टेलीमेट्री के माध्यम से लीक नहीं हो सकते। यदि आप एप्लिकेशन बनाने के लिए SDK का उपयोग करते हैं, तो आप अपने स्वयं के उपयोगकर्ताओं को उचित टेलीमेट्री सूचनाएं प्रदान करने के लिए जिम्मेदार हैं।
गोपनीयता जानकारी https://privacy.microsoft.com और Microsoft गोपनीयता विवरण में https://go.microsoft.com/fwlink/?LinkID=824704 पर पाई जा सकती है।
| दस्तावेज़ | विवरण |
|---|---|
| docs/schema.md | पूर्ण JSON कॉन्फ़िगरेशन स्कीमा संदर्भ |
| docs/versioning.md | स्कीमा संस्करण और प्रयोगात्मक सुविधा लाइफसाइकिल |
| docs/examples.md | एनोटेटेड कॉन्फ़िगरेशन उदाहरण |
| docs/host-prep.md | Windows होस्ट तैयारी (wxc-host-prep.exe) |
| docs/diagnostics.md | डायग्नोस्टिक लॉगिंग और ETW |
| docs/sandbox-policy/0.7.0/policy.md | सैंडबॉक्स नीति 0.7.0 विनिर्देश |
| docs/process-container/guide.md | Windows AppContainer / BaseContainer गाइड |
| docs/lxc-support/lxc-backend.md | LXC बैकएंड (Linux) |
| docs/bwrap-support/bubblewrap-backend.md | Bubblewrap बैकएंड (Linux) |
| docs/seatbelt/seatbelt-backend.md | Seatbelt बैकएंड (macOS) |
| docs/windows-sandbox/windows-sandbox.md | Windows Sandbox बैकएंड |
| docs/state-aware-lifecycle/mxc-state-aware-sandbox-api.md | स्टेट-अवेयर सैंडबॉक्स लाइफसाइकिल API |
| docs/telemetry/telemetry.md | TraceLogging टेलीमेट्री आर्किटेक्चर |
योगदान दिशानिर्देशों के लिए CONTRIBUTING.md देखें।
विवरण के लिए LICENSE.md देखें।
| docs/telemetry/telemetry-consent-design.md | टेलीमेट्री सहमति अनुबंध |
| docs/telemetry/telemetry-administrative-policy.md | प्रशासनिक टेलीमेट्री नियंत्रण |