Contenedores de ejecución de Microsoft

Microsoft Execution Containers (MXC) es una tecnología de ejecución basada en directivas y de código abierto para ejecutar cargas de trabajo con permisos de recursos definidos. Puede usar el SDK de .NET, TypeScript o Rust en su aplicación para seleccionar una carga de trabajo, describir a qué puede acceder y ejecutarla en un entorno de contención admitido.

Las aplicaciones, los agentes y las herramientas de desarrollo suelen ejecutar código que no crearon o controlaron completamente, como comandos generados por ia, herramientas de terceros y scripts proporcionados por el usuario. Sin contención, ese código puede heredar un amplio acceso a archivos, credenciales, servicios de red y otros recursos. MXC le ayuda a limitar ese acceso a lo que requiere la tarea.

MXC es compatible con Windows, Linux y macOS a través de backends de contención específicos de la plataforma. Un contenedor no significa necesariamente una máquina virtual o una imagen de contenedor: una carga de trabajo se puede ejecutar en un espacio aislado de procesos del sistema operativo, una sesión independiente o un entorno virtualizado. Las características y restricciones disponibles dependen de la versión de MXC, el back-end y el host.

En estos artículos de Learn se explican los conceptos y el flujo de trabajo de integración. La documentación de MXC sobre GitHub proporciona instrucciones detalladas sobre el SDK, el esquema, el back-end y la implementación.

Entender los conceptos básicos

Concepto Meaning
Aplicación host El entorno de ejecución de la aplicación o agente de confianza, que invoca el SDK, selecciona permisos, proporciona entradas y controla los resultados.
Carga de trabajo Comando, script o proceso que se ejecuta en contención
Policy Configuración que describe el acceso a los recursos que permite, como archivos legibles, directorios de salida grabables, destinos de red y acceso a la interfaz de usuario.
Configuración de ejecución La directiva junto con el comando, el directorio de trabajo, la configuración en tiempo de ejecución y la selección de contención
backend Mecanismo de plataforma que implementa las restricciones admitidas (por ejemplo, un espacio aislado de procesos del sistema operativo, una sesión de usuario independiente o un entorno virtualizado)

Por qué usar MXC

Las diferentes tareas necesitan recursos diferentes. Es posible que un comando de análisis de repositorio necesite acceso de origen de solo lectura y una carpeta de salida grabable. Es posible que una compilación también necesite archivos de cadena de herramientas y descargas de paquetes. Es posible que un flujo de trabajo de ejecución más largo necesite conservar un entorno entre comandos.

MXC proporciona a tu app una política común y un modelo de ejecución en lugar de requerir una integración independiente con cada mecanismo de contención del sistema operativo. Puede usarlo para:

  • Ejecutar comandos, scripts o herramientas externas generados sin conceder el acceso completo de la aplicación host.
  • Separe las entradas legibles de las salidas escribibles y mantenga las credenciales fuera del alcance de la carga de trabajo.
  • Denegar el acceso a la red, permitir conexiones directas seleccionadas o usar un proxy HTTP(S) proporcionado por la aplicación en los back-end admitidos.
  • Restringir las ventanas, el acceso al portapapeles y la entrada sintética de teclado o puntero.
  • Crear y refinar permisos de recursos con Learning Mode para cargas de trabajo ProcessContainer de Windows.

La contención limita lo que puede hacer una carga de trabajo; no hace que las instrucciones generadas, las salidas o las acciones permitidas sean fiables. Mantener las decisiones de directiva en el código del host de confianza y validar los resultados antes de que la aplicación actúe sobre ellos.

Primeros pasos con MXC

Comience con Ejecutar una carga de trabajo con el SDK de MXC. Proporciona ejemplos de C#, TypeScript y Rust que leen una entrada, escriben en una carpeta de salida dedicada y muestran una operación denegada.

SDK Package Instrucciones detalladas
.NET Microsoft.Mxc.Sdk en NuGet.org Guía del SDK de .NET
Node.js/TypeScript @microsoft/mxc-sdk en npm Guía del SDK de TypeScript
Rust mxc-sdk en crates.io Guía del SDK de Rust

Puede ser difícil predecir todos los recursos a los que puede que necesite acceder la carga de trabajo. El modo de aprendizaje puede ayudarle a crear una directiva con privilegios mínimos en Windows mediante la grabación de los recursos a los que una carga de trabajo intenta acceder.

También puede usar un agente de codificación para ayudar a adaptar los ejemplos. El agente de código puede ayudar a explicar las observaciones, pero asegúrese de revisar y aprobar cualquier cambio en las directivas de acceso a recursos.

Funcionamiento de MXC

El host detecta contenedores back-end compatibles, crea una directiva y una solicitud de ejecución e inicia la carga de trabajo a través del SDK. MXC traduce esa solicitud a las operaciones del back-end seleccionado. El host se encarga a continuación de la salida, el estado de salida, las advertencias y la limpieza.

Note

Los backends pueden tener diferentes propiedades de seguridad. Confirme que el entorno seleccionado puede aplicar los controles requeridos y pruebe las operaciones permitidas y denegadas. Consulte la arquitectura de MXC, la compatibilidad con la plataforma y las notas de la versión.