Contenitori di esecuzione Microsoft

Microsoft Execution Containers (MXC) è una tecnologia di esecuzione open source basata su criteri per l'esecuzione di carichi di lavoro con autorizzazioni di risorsa definite. È possibile usare il .NET, TypeScript o Rust SDK nell'app per selezionare un carico di lavoro, descrivere a cosa può accedere ed eseguirlo in un ambiente di contenimento supportato.

Le app, gli agenti e gli strumenti di sviluppo spesso eseguono codice che non hanno creato o controllato completamente, ad esempio comandi generati dall'intelligenza artificiale, strumenti di terze parti e script forniti dall'utente. Senza contenimento, tale codice può ereditare l'accesso ampio a file, credenziali, servizi di rete e altre risorse. MXC consente di limitare l'accesso a quanto necessario per l'attività.

MXC supporta Windows, Linux e macOS tramite back-end di contenimento specifici della piattaforma. Un contenitore non significa necessariamente una macchina virtuale o un'immagine del contenitore: un workload può essere eseguito in una sandbox del processo del sistema operativo, in una sessione separata o in un ambiente virtualizzato. Le funzionalità e le restrizioni disponibili dipendono dalla versione MXC, dal back-end e dall'host.

Questi articoli di Learn illustrano i concetti e il flusso di lavoro di integrazione. La documentazione di MXC in GitHub fornisce istruzioni dettagliate su SDK, schema, back-end e implementazione.

Capire i concetti fondamentali

Concetto Meaning
Applicazione host L'app o il runtime dell'agente attendibile, che richiama l'SDK, seleziona le autorizzazioni, fornisce input e gestisce i risultati
Carico di lavoro Il comando, lo script o il processo eseguito in modalità contenimento
Policy Configurazione che descrive l'accesso alle risorse consentito, ad esempio file leggibili, directory di output scrivibili, destinazioni di rete e accesso all'interfaccia utente
Configurazione dell'esecuzione Il criterio insieme al comando, alla directory di lavoro, alle impostazioni di runtime e alla selezione del contenimento
backend Meccanismo della piattaforma che implementa le restrizioni supportate (ad esempio, una sandbox del processo del sistema operativo, una sessione utente separata o un ambiente virtualizzato)

Perché usare MXC

Diverse attività richiedono risorse diverse. Un comando di analisi del repository potrebbe richiedere l'accesso all'origine di sola lettura e una cartella di output scrivibile. Una compilazione potrebbe anche richiedere file toolchain e download di pacchetti. Un flusso di lavoro con esecuzione più lunga potrebbe dover conservare un ambiente tra i comandi.

MXC offre all'app un modello di esecuzione e criteri comuni invece di richiedere un'integrazione separata con ogni meccanismo di contenimento del sistema operativo. È possibile usarlo per:

  • Eseguire comandi generati, script o strumenti esterni senza concedere all'app host l'accesso completo.
  • Separare gli input leggibili dagli output scrivibili e mantenere le credenziali al di fuori della portata del carico di lavoro.
  • Negare l'accesso alla rete, consentire connessioni dirette selezionate o usare un proxy HTTP(S) fornito dall'applicazione nei back-end supportati.
  • Limita l'accesso alle finestre, agli Appunti e all'input sintetico da tastiera o da puntatore.
  • Creare e perfezionare le autorizzazioni delle risorse con Learning Mode per i carichi di lavoro ProcessContainer Windows.

Il contenimento limita le operazioni che un carico di lavoro può eseguire; non rende attendibili istruzioni, output o azioni consentite generate. Mantenere le decisioni relative ai criteri nel codice host attendibile e convalidare i risultati prima che l'app agisca su di essi.

Inizia con MXC

Per iniziare con eseguire un workload con MXC SDK. Fornisce esempi C#, TypeScript e Rust che leggono un input, scrivono in una cartella di output dedicata e illustrano un'operazione negata.

SDK Package Indicazioni dettagliate
.NET Microsoft.Mxc.Sdk su NuGet.org Guida a .NET SDK
Node.js/TypeScript @microsoft/mxc-sdk in npm Guida all'SDK TypeScript
Rust mxc-sdk su crates.io Guida all'SDK di Rust

Può essere difficile prevedere tutte le risorse a cui il carico di lavoro potrebbe dover accedere. La modalità di apprendimento consente di creare criteri con privilegi minimi su Windows registrando le risorse a cui un carico di lavoro tenta di accedere.

È anche possibile usare un assistente di programmazione per adattare gli esempi. L'agente di codifica può aiutare a spiegare le osservazioni, ma assicurati di esaminare e approvare le modifiche apportate ai criteri di accesso alle risorse.

Funzionamento di MXC

L'host individua i contenitori back-end supportati, crea un criterio e una richiesta di esecuzione e avvia il carico di lavoro tramite l'SDK. MXC traduce tale richiesta nelle operazioni del back-end selezionato. L'host gestisce quindi l'output, lo stato di uscita, gli avvisi e la pulizia.

Note

I back-end possono avere proprietà di sicurezza diverse. Verificare che l'ambiente selezionato possa applicare i controlli necessari e testare le operazioni consentite e non consentite. Vedere l'architettura MXC, il supporto della piattaforma e le note sulla versione.