Možnosti izolace MXC a podpora platforem

MXC vám pomůže se správou složitosti používání kontejnerů: pomocí MXC popíšete zásady a spravujete životní cyklus kontejneru, ale vybraný backend izolace provede skutečné vynucení. Každý back-end je založený na jiném mechanismu operačního systému. V důsledku toho se back-endy liší v tom, jak izolují úlohu a jak zpracovávají soubory, sítě, uživatelské rozhraní a životní cyklus.

Začněte tím, co vaše pracovní zátěž potřebuje, a pak ověřte, že back-end ji dokáže zajistit na hostitelích, na které cílíte. Samotný název nebo verze operačního systému vám neřekne, jestli je back-end podporovaný.

Porozumění hostitelským prostředím a prostředím úloh

V požadavku můžete požádat o druh prostředí, kterému se říká containment intent, nebo můžete pojmenovat konkrétní back-end. Intent process odpovídá nativnímu backendu izolace procesů na hostiteli, na kterém běží. Vzhledem k tomu, že se back-end liší podle operačního systému, stejný záměr vám může poskytnout různé možnosti na Windows, Linuxu a macOS.

Host Výchozí procesní backend Ostatní prostředí
Windows ProcessContainer Samostatná relace Windows, virtuální počítač s Windows nebo linuxové úlohy prostřednictvím WSLc, tam, kde jsou podporovány
Linux Bublinková fólie LXC a specializované back-endy virtualizace, jsou-li podporovány
macOS Bezpečnostní pás Zkontrolujte vydání, které nainstalujete, ohledně dalších podporovaných možností.

Zatížení nemusí běžet ve stejném operačním systému jako hostitel. WSLc například spouští linuxovou úlohu na hostiteli Windows. Má vlastní předpoklady a sdílí prostředky s hostitelem jinak než sandbox procesu Windows.

Zkontrolujte stav vydání a pokrytí sady SDK

Podpora back-endu se mění z verze na verzi, proto zkontrolujte informace o podpoře pro verzi balíčku, kterou instalujete.

V MXC v1.0.0 můžou sady SDK V1 vytvářet kontejnery s těmito back-endy:

  • Windows: ProcessContainer, IsolationSession a WSLc
  • Linux: Bubblewrap a LXC
  • macOS: Seatbelt

Windows Sandbox, MicroVM a Hyperlight jsou experimentální. Vyžadují explicitní experimentální autorizaci a nemůžete je vytvářet prostřednictvím rozhraní API sady SDK V1. Pokud uvažujete o některém z těchto nebo jiných specializovaných prostředí, nejprve si projděte poznámky k verzi vaší verze.

Back-end, který je k dispozici na hostiteli, stále nemusí podporovat operaci sady SDK, kterou plánujete volat. V sadách SDK V1:

  • Rozhraní API životního cyklu pracují pouze s IsolationSession a WSLc.
  • Provádění PTY typu One-shot funguje s IsolationSession, Bubblewrap, LXC a Seatbelt.
  • Provádění PTY v existujícím kontejneru funguje pouze s IsolationSession.

Podrobnosti najdete v referenčních informacích k sadě SDK:

Pokud používáte Rust, podpora back-endu také závisí na funkcích crate, které povolíte. Chcete-li použít IsolationSession nebo WSLc, povolte funkci isolation_session nebo wslc cratu mxc-sdk. Další informace najdete v průvodci sadou Rust SDK.

Začínáme se zjišťováním za běhu

Každá sada SDK vám může sdělit, co aktuální hostitel podporuje, než něco spustíte. Nejprve tyto kontroly spusťte, ale nadále ošetřujte chyby při spuštění, protože konfigurace hostitele se může mezi kontrolou a spuštěním změnit.

Pomocí podpory platformy zjistěte, zda můžete kontejnery vůbec spustit, které back-endy jsou k dispozici pro širší přehled o hostiteli, a pomocí sondy otestujte konkrétní požadavek v systému Windows předtím, než ho spustíte.

sada SDK Discovery API Co zkontrolovat
platforma .NET MxcPlatform.GetPlatformSupport() IsSupported, Reason a AvailableMethods, který uvádí back-endy, jež mohou spustit sadu SDK
platforma .NET MxcPlatform.GetAvailableBackends() Dostupnost hostitele, volitelné možnosti a upozornění Některá rozhraní API pro spouštění nemůžou používat všechny back-endy uvedené tady.
platforma .NET MxcContainer.Probe() Ve Windows úroveň izolace ProcessContainer poskytne požadavku diagnostiku kompatibility specifickou pro daný požadavek, aniž by vytvořila kontejner.
TypeScript getPlatformSupport() isSupported, reason, availableMethods a všechna pole upozornění a funkcí specifická pro hostitele
TypeScript getAvailableBackends() Dostupnost hostitele, volitelné možnosti a upozornění Některá rozhraní API pro spouštění nemůžou používat všechny back-endy uvedené tady.
TypeScript probe() Ve Windows by požadavek získal úroveň izolace ProcessContainer a diagnostiku kompatibility specifickou pro daný požadavek, aniž by se vytvořil kontejner.
Rust v1::platform_support() is_supported, reason, available_methods a v Linuxu síťová podpora Bubblewrap
Rust v1::available_backends() Dostupnost hostitele, volitelné funkce a upozornění. Některá rozhraní API pro spouštění nemůžou používat všechny back-endy uvedené tady.
Rust v1::probe() Ve Windows se určí úroveň izolace ProcessContainer, kterou požadavek obdrží, a diagnostika kompatibility specifická pro daný požadavek, aniž by se vytvořil kontejner.

Ve výsledcích můžou chybět pole, která se nevztahují nebo nelze zjistit. Discovery je užitečné při prvním ověření, ale neověřuje celé zásady. Pro jistotu vytvořte požadavek, který plánujete spustit, a potvrďte, že vybraný back-end může vynutit všechna požadovaná opatření.

Někteří hostitelé potřebují před tím, než back-end funguje, další komponenty nebo nastavení správcem. Výsledky zjišťování a chyby spuštění vám můžou říct, co chybí, ale to vaší aplikaci ani agentovi kódování neuděluje oprávnění ke změně hosta. Požádejte osobu, která spravuje hostitelský server, aby postupovala podle zdokumentovaných kroků nastavení back-endu.

Pro Windows viz Podpora zásad verze operačního systému. Verze systému Windows může být podporována platformou MXC a přesto postrádat určitou funkci zásad, proto zkontrolujte obojí.

Zkontrolujte omezení, která vaše úloha potřebuje

Dva back-endy můžou přijmout stejnou syntaxi zásad a přesto ji vynutit jinak. Než se rozhodnete pro backend, zvažte následující oblasti:

Area Otázky k kladení
Files Může back-end vyjádřit oprávnění ke čtení, zápisu a odepření, která potřebujete, včetně překrývajících se? Sdílí soubory s hostitelem, připojí je jako svazek nebo je zkopíruje?
Network Může vynutit váš síťový model, ať už přímo, nebo prostřednictvím proxy serveru, včetně pravidel privátní sítě a zpětné smyčky hostitele?
uživatelské rozhraní Může uplatnit omezení okna, schránky a vstupu, která potřebujete?
Lifecycle Spouští se každý příkaz nezávisle, nebo může zachovat prostředí mezi příkazy? Co je po zastavení zachováno?
Režim výuky Podporuje hostitel zachytávání odepření ProcessContainer? Pokud ne, jaký pracovní postup diagnostiky poskytuje back-end?

Průvodci MXC na GitHubu uvádějí podporované funkce, sestavení operačního systému a požadavky pro každý back-end.

Vyberte backend podle svých požadavků

Než vyberete backend, napište si:

  • Hostitelské operační systémy a architektury procesorů, které vaše aplikace podporuje.
  • Hostované prostředí nebo prostředí nástroje, které úloha vyžaduje.
  • Úloha vyžaduje přístup k souborům, síti, uživatelskému rozhraní, zařízením a hostitelským nástrojům.
  • Zda každý příkaz běží samostatně, nebo vyžaduje stav z předchozích příkazů.
  • Vaše limity pro čas spuštění, prostředky, nasazení a interakci uživatelů.
  • Jak silnou hranici izolace úloha a její data vyžadují.
  • Zda back-end může vynutit všechny požadované mechanismy řízení zásad.

Pak otestujte každou konfiguraci hostitele, kterou podporujete, s pozitivními i negativními testy. Úspěšné spuštění pouze ukazuje, že MXC akceptoval konfiguraci. Negativní testy, například pokus o zápis mimo udělené cesty, ukazují, zda omezení skutečně platí.