Configuración del espacio aislado de Windows

Espacio aislado de Windows admite archivos de configuración simple, lo que proporcionan un conjunto mínimo de parámetros de personalización para el espacio aislado. Esta característica se puede usar con Windows 10 compilación 18342 o con Windows 11. Los archivos de configuración de Espacio aislado de Windows tienen formato XML y se asocian al espacio aislado a través de la extensión de archivo .wsb.

Un archivo de configuración permite al usuario controlar los siguientes aspectos de Espacio aislado de Windows:

  • vGPU (GPU virtualizada): habilitar o deshabilitar la GPU virtualizada. Si la vGPU está deshabilitada, el espacio aislado usará la Plataforma avanzada de rasterización de Windows (WARP).
  • Redes: habilitar o deshabilitar el acceso a la red dentro del espacio aislado.
  • Carpetas asignadas: compartir carpetas del host con permisos de lectura o de escritura. Si se exponen directorios de host, puede que algún software malintencionado afecte al sistema o robe datos.
  • Comando Inicio de sesión: comando que se ejecuta cuando se inicia Espacio aislado de Windows.
  • Entrada de audio: comparte la entrada de micrófono del host en el espacio aislado.
  • Entrada de vídeo: comparte la entrada de cámara web del host en el espacio aislado.
  • Cliente protegido: coloca una configuración de seguridad superior de la sesión RDP en el espacio aislado.
  • Redireccionamiento de impresoras: comparte impresoras del host en el espacio aislado.
  • Redireccionamiento del Portapapeles: comparte el Portapapeles del host con el espacio aislado para que el texto y los archivos se puedan pegar en diferentes ubicaciones.
  • Memoria en MB: la cantidad de memoria, en megabytes, que se asigna al espacio aislado.

Nota

De momento, el tamaño de la ventana del espacio aislado no se puede configurar.

Crear un archivo de configuración

Para crear un archivo de configuración:

  1. Abra un editor de texto sin formato o un editor de código fuente (por ejemplo, Bloc de notas, Visual Studio Code, etc.).

  2. Inserte las líneas siguientes:

    <Configuration>
    </Configuration>
    
  3. Agregue el texto de configuración adecuado entre ambas líneas. Para obtener más información, consulte la sintaxis correcta y los ejemplos siguientes.

  4. Guarde el archivo con el nombre que prefiera, pero asegúrese de que la extensión del nombre de archivo sea .wsb. En el Bloc de notas, debe incluir el nombre de archivo y la extensión entre comillas dobles, por ejemplo, "My config file.wsb".

Usar un archivo de configuración

Para usar un archivo de configuración, haga doble clic en él para iniciar Espacio aislado de Windows según la configuración. También puede invocarlo a través de la línea de comandos, tal como se muestra aquí:

C:\Temp> MyConfigFile.wsb

Palabras clave, valores y límites

vGPU

Habilita o deshabilita el uso compartido de GPU.

<vGPU>value</vGPU>

Valores admitidos:

  • Enable: habilita la compatibilidad con vGPU en el espacio aislado.
  • Disable: deshabilita la compatibilidad con vGPU en el espacio aislado. Si se establece este valor, el espacio aislado usará la representación de software, que puede resultar más lenta que la GPU virtualizada.
  • Default: se trata del valor predeterminado para la compatibilidad con vGPU. Actualmente, este valor predeterminado indica que la vGPU está deshabilitada.

Nota

Si se habilita la GPU virtualizada, es posible que aumente potencialmente la superficie expuesta a ataques del espacio aislado.

Funciones de red

Habilita o deshabilita las redes en el espacio aislado. Puede deshabilitar el acceso a la red para reducir la superficie expuesta a ataques que deja al descubierto el espacio aislado.

<Networking>value</Networking>

Valores admitidos:

  • Enable: habilita las redes en el espacio aislado.
  • Disable: deshabilita las redes en el espacio aislado.
  • Default: se trata del valor predeterminado para la compatibilidad con redes. Este valor habilita las redes mediante la creación de un conmutador virtual en el host y conecta el espacio aislado a través de una NIC virtual.

Nota

Si se habilitan las redes, puede que se expongan aplicaciones que no son de confianza a la red interna.

Carpetas asignadas

Una matriz de carpetas. Cada una representa una ubicación en el equipo host que se compartirá en el espacio aislado en la ruta de acceso especificada. De momento, no se admiten rutas de acceso relativas. Si no se especifica ninguna ruta de acceso, la carpeta se asignará al escritorio del usuario del contenedor.

<MappedFolders>
  <MappedFolder>
    <HostFolder>absolute path to the host folder</HostFolder>
    <SandboxFolder>absolute path to the sandbox folder</SandboxFolder>
    <ReadOnly>value</ReadOnly>
  </MappedFolder>
  <MappedFolder>
    ...
  </MappedFolder>
</MappedFolders>

HostFolder: especifica la carpeta del equipo host que se va a compartir en el espacio aislado. La carpeta ya debe existir en el host. En caso contrario, el contenedor no se iniciará.

SandboxFolder: especifica el destino al que se asignará la carpeta en el espacio aislado. Si la carpeta no existe, se creará una. Si no se especifica ninguna carpeta del espacio aislado, la carpeta se asignará al escritorio del contenedor.

ReadOnly: si se establece en true, aplica el acceso de solo lectura a la carpeta compartida desde dentro del contenedor. Valores admitidos: true/false. El valor predeterminado es false.

Nota

Las aplicaciones del espacio aislado pueden poner en peligro los archivos y carpetas asignados desde el host o afectar potencialmente al host.

Comando de inicio de sesión

Especifica un único comando que se invocará automáticamente después de que el espacio aislado inicie sesión. Las aplicaciones del espacio aislado se ejecutan en la cuenta de usuario del contenedor. La cuenta de usuario del contenedor debe ser una cuenta de administrador.

<LogonCommand>
  <Command>command to be invoked</Command>
</LogonCommand>

Comando: ruta de acceso a un archivo ejecutable o script dentro del contenedor que se ejecutará después de iniciar sesión.

Nota

Aunque los comandos muy sencillos funcionarán (por ejemplo, iniciar un archivo ejecutable o un script), los casos más complicados que implican varios pasos deben colocarse en un archivo de script. El archivo de script se puede asignar al contenedor a través de una carpeta compartida y, luego, ejecutarse a través de la directiva LogonCommand.

Entrada de audio

Habilita o deshabilita la entrada de audio en el espacio aislado.

<AudioInput>value</AudioInput>

Valores admitidos:

  • Enable: habilita la entrada de audio en el espacio aislado. Si se establece este valor, el espacio aislado podrá recibir la entrada de audio del usuario. Puede que las aplicaciones que usan un micrófono requieran esta funcionalidad.
  • Disable: deshabilita la entrada de audio en el espacio aislado. Si se establece este valor, el espacio aislado no podrá recibir la entrada de audio del usuario. Es posible que las aplicaciones que usan un micrófono no funcionen correctamente con esta configuración.
  • Default: se trata del valor predeterminado para la compatibilidad con la entrada de audio. Actualmente, este valor predeterminado indica que la entrada de audio está habilitada.

Nota

Puede haber implicaciones de seguridad al exponer la entrada de audio del host en el contenedor.

Entrada de vídeo

Habilita o deshabilita la entrada de vídeo en el espacio aislado.

<VideoInput>value</VideoInput>

Valores admitidos:

  • Enable: habilita la entrada de vídeo en el espacio aislado.
  • Disable: deshabilita la entrada de vídeo en el espacio aislado. Es posible que las aplicaciones que usan la entrada de vídeo no funcionen correctamente en el espacio aislado.
  • Default: se trata del valor predeterminado para la compatibilidad con la entrada de vídeo. Actualmente, este valor predeterminado indica que la entrada de vídeo está deshabilitada. Es posible que las aplicaciones que usan la entrada de vídeo no funcionen correctamente en el espacio aislado.

Nota

Puede haber implicaciones de seguridad al exponer la entrada de vídeo del host en el contenedor.

Cliente protegido

Cuando el modo Cliente protegido está habilitado, el espacio aislado agrega una nueva capa de límites de seguridad ya que se ejecuta dentro de un entorno de ejecución de Aislamiento de AppContainer.

Aislamiento de AppContainer proporciona aislamiento de credenciales, dispositivos, archivos, redes, procesos y ventanas.

<ProtectedClient>value</ProtectedClient>

Valores admitidos:

  • Enable: ejecuta Espacio aislado de Windows en modo Cliente protegido. Si se establece este valor, el espacio aislado se ejecuta en Aislamiento de AppContainer.
  • Disable: ejecuta Espacio aislado en modo estándar sin mitigaciones de seguridad adicionales.
  • Default: se trata del valor predeterminado para el modo Cliente protegido. Actualmente, este valor predeterminado indica que el espacio aislado no se ejecuta en modo Cliente protegido.

Nota

Esta configuración puede restringir la capacidad del usuario para copiar y pegar archivos dentro y fuera del espacio aislado.

Redireccionamiento de impresoras

Habilita o deshabilita el uso compartido de impresoras del host en el espacio aislado.

<PrinterRedirection>value</PrinterRedirection>

Valores admitidos:

  • Enable: habilita el uso compartido de impresoras del host en el espacio aislado.
  • Disable: deshabilita el redireccionamiento de impresoras en el espacio aislado. Si se establece este valor, el espacio aislado no podrá ver las impresoras del host.
  • Default: se trata del valor predeterminado para la compatibilidad con el redireccionamiento de impresoras. Actualmente, este valor predeterminado indica que el redireccionamiento de impresoras está deshabilitado.

Redireccionamiento del Portapapeles

Habilita o deshabilita el uso compartido del Portapapeles del host con el espacio aislado.

<ClipboardRedirection>value</ClipboardRedirection>

Valores admitidos:

  • Enable: habilita el uso compartido del Portapapeles del host con el espacio aislado.
  • Disable: deshabilita el redireccionamiento del Portapapeles en el espacio aislado. Si se establece este valor, se restringirá la operación de copiar y pegar dentro y fuera del espacio aislado.
  • Default: se trata del valor predeterminado del redireccionamiento del Portapapeles. Actualmente, Default permite copiar y pegar entre el host y el espacio aislado.

Memoria en MB

Especifica la cantidad de memoria que puede usar el espacio aislado en megabytes (MB).

<MemoryInMB>value</MemoryInMB>

Si el valor de memoria especificado no es suficiente para arrancar un espacio aislado, se aumentará automáticamente a la cantidad mínima necesaria.

Ejemplo 1

El siguiente archivo de configuración se puede usar para probar fácilmente los archivos descargados dentro del espacio aislado. Para realizar esta prueba correctamente, se deshabilitan las redes y las vGPU, y se permite el acceso del espacio aislado a la carpeta de descargas compartidas como solo lectura. Para mayor comodidad, el comando de inicio de sesión abre la carpeta de descargas dentro del espacio aislado cuando se inicia.

Downloads.wsb

<Configuration>
  <VGpu>Disable</VGpu>
  <Networking>Disable</Networking>
  <MappedFolders>
    <MappedFolder>
      <HostFolder>C:\Users\Public\Downloads</HostFolder>
      <SandboxFolder>C:\Users\WDAGUtilityAccount\Downloads</SandboxFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>
  </MappedFolders>
  <LogonCommand>
    <Command>explorer.exe C:\users\WDAGUtilityAccount\Downloads</Command>
  </LogonCommand>
</Configuration>

Ejemplo 2

El siguiente archivo de configuración instala Visual Studio Code en el espacio aislado, lo que requiere una configuración de LogonCommand algo más compleja.

Se asignan dos carpetas al espacio aislado. La primera (SandboxScripts) contiene VSCodeInstall.cmd, que instala y ejecuta Visual Studio Code. La segunda carpeta (CodingProjects) se supone que contiene archivos de proyectos que el desarrollador desea modificar con Visual Studio Code.

Si el script del instalador de Visual Studio Code ya se ha asignado al espacio aislado, LogonCommand puede hacer referencia a él.

VSCodeInstall.cmd

Descargue vscode en la carpeta downloads y ejecútelo desde la carpeta downloads.

REM Download Visual Studio Code
curl -L "https://update.code.visualstudio.com/latest/win32-x64-user/stable" --output C:\users\WDAGUtilityAccount\Downloads\vscode.exe

REM Install and run Visual Studio Code
C:\users\WDAGUtilityAccount\Downloads\vscode.exe /verysilent /suppressmsgboxes

VSCode.wsb

<Configuration>
  <MappedFolders>
    <MappedFolder>
      <HostFolder>C:\SandboxScripts</HostFolder>
      <SandboxFolder>C:\Users\WDAGUtilityAccount\Downloads\sandbox</SandboxFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>
    <MappedFolder>
      <HostFolder>C:\CodingProjects</HostFolder>
      <SandboxFolder>C:\Users\WDAGUtilityAccount\Documents\Projects</SandboxFolder>
      <ReadOnly>false</ReadOnly>
    </MappedFolder>
  </MappedFolders>
  <LogonCommand>
    <Command>C:\Users\WDAGUtilityAccount\Downloads\sandbox\VSCodeInstall.cmd</Command>
  </LogonCommand>
</Configuration>

Ejemplo 3

El siguiente archivo de configuración ejecuta un script de PowerShell como comando de inicio de sesión para cambiar el botón primario del mouse para los usuarios zurdos.

La carpeta C:\sandbox en el host se asigna a la carpeta C:\sandbox del espacio aislado, por lo que se puede hacer referencia al script SwapMouse.ps1 en el archivo de configuración del espacio aislado.

SwapMouse.ps1

Cree un script de PowerShell con el código siguiente y guárdelo en el directorio C:\sandbox como SwapMouse.ps1.

[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null

$SwapButtons = Add-Type -MemberDefinition @'
[DllImport("user32.dll")]
public static extern bool SwapMouseButton(bool swap);
'@ -Name "NativeMethods" -Namespace "PInvoke" -PassThru

$SwapButtons::SwapMouseButton(!([System.Windows.Forms.SystemInformation]::MouseButtonsSwapped))

SwapMouse.wsb

<Configuration>
  <MappedFolders>
    <MappedFolder>
      <HostFolder>C:\sandbox</HostFolder>
      <SandboxFolder>C:\sandbox</SandboxFolder>
      <ReadOnly>True</ReadOnly>
    </MappedFolder>
  </MappedFolders>
  <LogonCommand>
    <Command>powershell.exe -ExecutionPolicy Bypass -File C:\sandbox\SwapMouse.ps1</Command>
  </LogonCommand>
</Configuration>