Conteneurs d’exécution Microsoft

Microsoft Execution Containers (MXC) est une technologie d’exécution open source basée sur des stratégies pour l’exécution de charges de travail avec des autorisations de ressources définies. Vous pouvez utiliser le sdk .NET, TypeScript ou Rust dans votre application pour sélectionner une charge de travail, décrire à quoi elle peut accéder et l’exécuter dans un environnement de confinement pris en charge.

Les applications, les agents et les outils de développement exécutent souvent du code qu’ils n’ont pas créé ou qu’ils ne contrôlent pas entièrement, comme les commandes générées par l’IA, les outils tiers et les scripts fournis par l’utilisateur. Sans confinement, ce code peut hériter d’un accès étendu aux fichiers, aux informations d’identification, aux services réseau et à d’autres ressources. MXC vous permet de limiter cet accès à ce que la tâche requiert.

MXC prend en charge Windows, Linux et macOS par le biais de back-ends de confinement spécifiques à la plateforme. Un conteneur ne signifie pas nécessairement une machine virtuelle ou une image conteneur : une charge de travail peut s’exécuter dans un bac à sable de processus du système d’exploitation, une session distincte ou un environnement virtualisé. Les fonctionnalités et restrictions disponibles dépendent de la version MXC, du back-end et de l’hôte.

Ces articles Learn expliquent les concepts et le flux de travail d’intégration. La documentation MXC sur GitHub fournit des instructions détaillées sur le SDK, le schéma, le back-end et l’implémentation.

Comprendre les concepts fondamentaux

Concept Signification
Application hôte Votre runtime d’application ou d’agent approuvé, qui appelle le Kit de développement logiciel (SDK), sélectionne les autorisations, fournit des entrées et gère les résultats
Charge de travail Commande, script ou processus qui s’exécute en confinement
Policy Configuration décrivant l’accès aux ressources que vous autorisez, comme les fichiers lisibles, les répertoires de sortie accessibles en écriture, les destinations réseau et l’accès à l’interface utilisateur
Configuration de l’exécution Politique avec la commande, le répertoire de travail, les paramètres d’exécution et la sélection du confinement
back-end Mécanisme de plateforme qui implémente les restrictions prises en charge (par exemple, un bac à sable de processus de système d’exploitation, une session utilisateur distincte ou un environnement virtualisé)

Pourquoi utiliser MXC

Différentes tâches ont besoin de ressources différentes. Une commande d’analyse du référentiel peut avoir besoin d’un accès source en lecture seule et d’un dossier de sortie accessible en écriture. Une compilation peut également avoir besoin de fichiers de toolchain et de téléchargements de paquets. Un flux de travail en cours d’exécution peut avoir besoin de conserver un environnement entre les commandes.

MXC donne à votre application un modèle de stratégie et d’exécution commun au lieu d’exiger une intégration distincte avec chaque mécanisme de confinement du système d’exploitation. Vous pouvez l’utiliser pour :

  • Exécutez les commandes, scripts ou outils externes générés sans accorder à l’application hôte un accès complet.
  • Séparez les entrées lisibles des sorties inscriptibles et conservez les informations d’identification en dehors de la portée de la charge de travail.
  • Refuser l’accès réseau, autoriser les connexions directes sélectionnées ou utiliser un proxy HTTP(S) fourni par l’application sur les back-ends pris en charge.
  • Restreignez l’accès aux fenêtres, au Presse-papiers et à l’entrée de clavier ou de pointeur synthétique.
  • Créez et affinez les autorisations de ressources avec le mode d’apprentissage pour les charges de travail ProcessContainer sous Windows.

Le cloisonnement limite ce qu’une charge de travail peut faire ; il ne rend pas fiables les instructions générées, les sorties ou les actions autorisées. Conservez les décisions de stratégie dans le code hôte approuvé et validez les résultats avant que votre application ne agisse dessus.

Bien démarrer avec MXC

Commencez par exécuter une charge de travail avec le Kit de développement logiciel (SDK) MXC. Il fournit des exemples C#, TypeScript et Rust qui lisent une entrée, écrivent dans un dossier de sortie dédié et illustrent une opération refusée.

SDK Package Conseils détaillés
.NET Microsoft.Mxc.Sdk sur NuGet.org Guide du SDK .NET
Node.js / TypeScript @microsoft/mxc-sdk sur npm Guide du Kit de développement logiciel (SDK) TypeScript
Rust mxc-sdk sur crates.io Guide du Kit de développement logiciel (SDK) Rust

Il peut être difficile de prédire toutes les ressources auxquelles votre charge de travail pourrait devoir accéder. Le mode d’apprentissage peut vous aider à créer une stratégie de privilège minimum sur Windows en enregistrant les ressources auxquelles une charge de travail tente d’accéder.

Vous pouvez également utiliser un agent de codage pour vous aider à adapter les exemples. L’agent de codage peut aider à expliquer les observations, mais vérifiez et approuvez toute modification apportée aux stratégies d’accès aux ressources.

Fonctionnement d’MXC

Votre hôte découvre les conteneurs back-end pris en charge, crée une demande de stratégie et d’exécution, puis démarre la charge de travail via le SDK. MXC traduit cette requête en opérations du back-end sélectionné. Votre hôte gère ensuite la sortie, l’état de sortie, les avertissements et le nettoyage.

Note

Les back-ends peuvent avoir différentes propriétés de sécurité. Vérifiez que l’environnement sélectionné peut appliquer vos contrôles requis et testez les opérations autorisées et refusées. Consultez l’architecture MXC, la prise en charge de la plateforme et les notes de publication.