Configuration du Bac à sable Windows

Le bac à sable Windows prend en charge les fichiers de configuration simples, qui fournissent un ensemble minimal de paramètres de personnalisation pour le bac à sable. Cette fonctionnalité peut être utilisée avec Windows 10 build 18342 ou Windows 11. Les fichiers de configuration du bac à sable Windows sont formatés au format XML et associés au bac à sable via l’extension de fichier .wsb.

Un fichier de configuration permet à l’utilisateur de contrôler les aspects suivants du bac à sable Windows :

  • vGPU (GPU virtualisé): activez ou désactivez le GPU virtualisé. Si le processeur virtuel est désactivé, le bac à sable utilise la plateforme WARP (Windows Advanced Rasterization Platform).
  • Mise en réseau: activez ou désactivez l’accès réseau dans le bac à sable.
  • Dossiers mappés: partagez les dossiers depuis l’hôte avec des autorisations de lecture ou d’écriture. L’exposition des répertoires hôtes peut permettre à des logiciels malveillants d’affecter le système ou de voler des données.
  • Commande d’ouverture de session: commande exécutée au démarrage du bac à sable Windows.
  • Entrée audio : partage l’entrée du microphone de l’hôte dans le bac à sable.
  • Entrée vidéo : partage l’entrée de la webcam de l’hôte dans le bac à sable.
  • Client protégé : Places des paramètres de sécurité accrus sur la session RDP (Remote Desktop Protocol) vers le bac à sable.
  • Redirection d’imprimante: partage les imprimantes de l’hôte dans le bac à sable.
  • Redirection du presse-papiers : partage le presse-papiers hôte avec le bac à sable afin que le texte et les fichiers puissent être collés dans les deux sens.
  • Mémoire en Mo: quantité de mémoire, en mégaoctets, à affecter au bac à sable.

Remarque

La taille de la fenêtre du bac à sable n’est actuellement pas configurable.

Création d’un fichier de configuration

Création d’un fichier de configuration :

  1. Ouvrez un éditeur de texte brut ou un éditeur de code source (par exemple, bloc-notes, Visual Studio Code, etc.)

  2. Insérez les lignes suivantes :

    <Configuration>
    </Configuration>
    
  3. Ajoutez le texte de configuration approprié entre les deux lignes. Pour plus d’informations, consultez les exemples.

  4. Enregistrez le fichier avec le nom souhaité, mais assurez-vous que son extension de nom de fichier est .wsb. Dans Bloc-notes, vous devez placer le nom de fichier et l’extension entre les guillemets doubles, par exemple. "My config file.wsb"

Utilisation d’un fichier de configuration

Pour utiliser un fichier de configuration, double-cliquez dessus pour démarrer le bac à sable Windows en fonction de ses paramètres. Vous pouvez également l’appeler via la ligne de commande comme indiqué ici :

C:\Temp> MyConfigFile.wsb

Mots clés, valeurs et limites

vGPU

Active ou désactive le partage GPU.

<vGPU>value</vGPU>

Valeurs prises en charge :

  • Activer: active la prise en charge vGPU dans le bac à sable.
  • Désactiver: désactive la prise en charge vGPU dans le bac à sable. Si cette valeur est définie, le bac à sable utilise le rendu logiciel, qui peut être plus lent que le GPU virtualisé.
  • Valeur par défaut Cette valeur est la valeur par défaut pour la prise en charge vGPU. Actuellement, cette valeur par défaut indique que vGPU est désactivé.

Remarque

L’activation du GPU virtualisé peut potentiellement augmenter la surface d’attaque du bac à sable.

Mise en réseau

Active ou désactive la mise en réseau dans le bac à sable. Vous pouvez désactiver l’accès réseau pour réduire la surface d’attaque exposée par le bac à sable.

<Networking>value</Networking>

Valeurs prises en charge :

  • Activer: active la mise en réseau dans le bac à sable.
  • Désactiver: désactive la mise en réseau dans le bac à sable.
  • Valeur par défaut: cette valeur est la valeur par défaut pour la prise en charge réseau. Cette valeur active la mise en réseau en créant un commutateur virtuel sur l’hôte et y connecte le bac à sable via une carte réseau virtuelle.

Remarque

L’activation de la mise en réseau peut exposer des applications non approuvées au réseau interne.

Dossiers mappés

Tableau de dossiers, chacun représentant un emplacement sur l’ordinateur hôte partagé avec le bac à sable au niveau du chemin spécifié. Pour l’instant, les chemins relatifs ne sont pas pris en charge. Si aucun chemin d’accès n’est spécifié, le dossier est mappé au bureau de l’utilisateur du conteneur.

<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: spécifie le dossier sur l’ordinateur hôte à partager dans le bac à sable. Le dossier doit déjà exister sur l’hôte, sinon le conteneur ne parvient pas à démarrer.
  • SandboxFolder: spécifie la destination dans le bac à sable à mapper au dossier. Si le dossier n’existe pas, il est créé. Si aucun dossier de bac à sable n’est spécifié, le dossier est mappé au bureau du conteneur.
  • ReadOnly : si la valeur est true, applique l’accès en lecture seule au dossier partagé à partir du conteneur. Valeurs prises en charge : true/false. Par défaut est false.

Remarque

Les fichiers et dossiers mappés à partir de l’hôte peuvent être compromis par les applications du bac à sable ou potentiellement affecter l’hôte.

Commande d’ouverture de session

Spécifie une seule commande qui sera appelée automatiquement après l’ouverture de session du bac à sable. Les applications du bac à sable sont exécutées sous le compte d’utilisateur du conteneur. Le compte d’utilisateur du conteneur doit être un compte d’administrateur.

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

Commande: chemin d’accès à un exécutable ou à un script à l’intérieur du conteneur qui sera exécuté après la connexion.

Remarque

Bien que les commandes très simples fonctionnent (comme le lancement d’un exécutable ou d’un script), des scénarios plus complexes impliquant plusieurs étapes doivent être placés dans un fichier de script. Ce fichier de script peut être mappé dans le conteneur via un dossier partagé, puis exécuté via la directive LogonCommand.

Entrée audio

Active ou désactive l’entrée audio dans le bac à sable.

<AudioInput>value</AudioInput>

Valeurs prises en charge :

  • Activer: active l’entrée audio dans le bac à sable. Si cette valeur est définie, le bac à sable peut recevoir une entrée audio de l’utilisateur. Les applications qui utilisent un microphone peuvent nécessiter cette fonctionnalité.
  • Désactiver: désactive l’entrée audio dans le bac à sable. Si cette valeur est définie, le bac à sable ne peut pas recevoir d’entrée audio de la part de l’utilisateur. Les applications qui utilisent un microphone peuvent ne pas fonctionner correctement avec ce paramètre.
  • Par défaut: cette valeur est la valeur par défaut pour la prise en charge des entrées audio. Actuellement, cette valeur par défaut indique que l’entrée audio est activée.

Remarque

L’exposition de l’entrée audio de l’hôte au conteneur peut avoir des conséquences sur la sécurité.

Entrée vidéo

Active ou désactive l’entrée vidéo dans le bac à sable.

<VideoInput>value</VideoInput>

Valeurs prises en charge :

  • Activer: active l’entrée vidéo dans le bac à sable.
  • Désactiver: désactive l’entrée vidéo dans le bac à sable. Les applications qui utilisent l’entrée vidéo peuvent ne pas fonctionner correctement dans le bac à sable.
  • Par défaut: cette valeur est la valeur par défaut pour la prise en charge des entrées vidéo. Actuellement, cette valeur par défaut indique que l’entrée vidéo est désactivée. Les applications qui utilisent l’entrée vidéo peuvent ne pas fonctionner correctement dans le bac à sable.

Remarque

L’exposition de l’entrée vidéo de l’hôte au conteneur peut avoir des conséquences sur la sécurité.

Client protégé

Lorsque le mode client protégé est activé, le bac à sable ajoute une nouvelle couche de limite de sécurité en s’exécutant à l’intérieur d’un environnement d’exécution d’isolation AppContainer.

L’isolation AppContainer fournit l’isolation des informations d’identification, de l’appareil, du fichier, du réseau, du processus et de la fenêtre.

<ProtectedClient>value</ProtectedClient>

Valeurs prises en charge :

  • Activer: exécute le bac à sable Windows en mode client protégé. Si cette valeur est définie, le bac à sable s’exécute dans l’isolation AppContainer.
  • Désactiver : exécute le bac à sable en mode standard sans atténuations de sécurité supplémentaires.
  • Valeur par défaut: cette valeur est la valeur par défaut pour le mode client protégé. Actuellement, cette valeur par défaut indique que le bac à sable ne s’exécute pas en mode client protégé.

Remarque

Ce paramètre peut restreindre la capacité de l’utilisateur à copier/coller des fichiers dans et en dehors du bac à sable.

Redirection d’imprimante

Active ou désactive le partage d’imprimantes à partir de l’hôte dans le bac à sable.

<PrinterRedirection>value</PrinterRedirection>

Valeurs prises en charge :

  • Activer: permet le partage des imprimantes hôtes dans le bac à sable.
  • Désactiver: désactive la redirection d’imprimante dans le bac à sable. Si cette valeur est définie, le bac à sable ne peut pas afficher les imprimantes de l’hôte.
  • Par défaut: cette valeur est la valeur par défaut pour la prise en charge de la redirection d’imprimante. Actuellement, cette valeur par défaut indique que la redirection d’imprimante est désactivée.

Redirection du Presse-papiers

Active ou désactive le partage du Presse-papiers hôte avec le bac à sable.

<ClipboardRedirection>value</ClipboardRedirection>

Valeurs prises en charge :

  • Activer: permet le partage du Presse-papiers hôte avec le bac à sable.
  • Désactiver: désactive la redirection du Presse-papiers dans le bac à sable. Si cette valeur est définie, copier/coller dans et hors du bac à sable est limité.
  • Valeur par défaut: cette valeur est la valeur par défaut pour la redirection du Presse-papiers. Actuellement, le copier-coller entre l’hôte et le bac à sable est autorisé sous Valeur par défaut.

Mémoire en Mo

Spécifie la quantité de mémoire que le bac à sable peut utiliser en mégaoctets (Mo).

<MemoryInMB>value</MemoryInMB>

Si la valeur de mémoire spécifiée est insuffisante pour démarrer un bac à sable, elle est automatiquement augmentée à la quantité minimale requise.

Exemples

Exemple 1

Le fichier de configuration suivant peut être utilisé pour tester facilement les fichiers téléchargés à l’intérieur du bac à sable. Pour effectuer ce test, la mise en réseau et vGPU sont désactivées, et le bac à sable est autorisé à accéder en lecture seule au dossier de téléchargements partagés. Pour des raisons pratiques, la commande d’ouverture de session ouvre le dossier téléchargements à l’intérieur du bac à sable au démarrage.

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>

Exemple 2

Le fichier de configuration suivant installe Visual Studio Code dans le bac à sable, ce qui nécessite une configuration LogonCommand légèrement plus complexe.

Deux dossiers sont mappés dans le bac à sable ; Le premier (SandboxScripts) contient VSCodeInstall.cmd, qui installe et exécute Visual Studio Code. Le deuxième dossier (CodingProjects) est supposé contenir des fichiers projet que le développeur souhaite modifier à l’aide de Visual Studio Code.

Avec le script d’installation Visual Studio Code déjà mappé dans le bac à sable, LogonCommand peut le référencer.

VSCodeInstall.cmd

Télécharge VS Code dans le downloads dossier et exécute l’installation à partir du downloads dossier.

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>

Exemple 3

Le fichier de configuration suivant exécute un script PowerShell en tant que commande d’ouverture de session pour échanger le bouton principal de la souris pour les utilisateurs gauchers.

Le dossier C:\sandbox sur l’hôte est mappé au dossier C:\sandbox dans le bac à sable, de sorte que le script SwapMouse.ps1 peut être référencé dans le fichier de configuration du bac à sable.

SwapMouse.ps1

Créez un script PowerShell à l’aide du code suivant et enregistrez-le dans le C:\sandbox répertoire en tant que 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>