Configurazione Sandbox di Windows

Windows Sandbox supporta file di configurazione semplici, che forniscono un set minimo di parametri di personalizzazione per Sandbox. Questa funzionalità può essere usata con Windows 10 build 18342 o Windows 11. I file di configurazione di Windows Sandbox sono formattati come XML e sono associati a Sandbox tramite l'estensione di .wsb file.

Un file di configurazione consente all'utente di controllare gli aspetti seguenti di Windows Sandbox:

  • vGPU (GPU virtualizzata): abilitare o disabilitare la GPU virtualizzata. Se vGPU è disabilitata, la sandbox usa Windows Advanced Rasterization Platform (WARP).
  • Rete: abilitare o disabilitare l'accesso alla rete all'interno della sandbox.
  • Cartelle mappate: condividere cartelle dall'host con autorizzazioni di lettura o scrittura . L'esposizione delle directory host potrebbe consentire al software dannoso di influire sul sistema o di rubare dati.
  • Comando di accesso: comando eseguito all'avvio di Sandbox di Windows.
  • Input audio: condivide l'input del microfono dell'host nella sandbox.
  • Input video: condivide l'input della webcam dell'host nella sandbox.
  • Client protetto: inserisce le impostazioni di sicurezza aumentate nella sessione RDP (Remote Desktop Protocol) nella sandbox.
  • Reindirizzamento stampante: condivide le stampanti dall'host nella sandbox.
  • Reindirizzamento degli Appunti: condivide gli Appunti host con la sandbox in modo che testo e file possano essere incollati avanti e indietro.
  • Memoria in MB: quantità di memoria, in megabyte, da assegnare alla sandbox.

Nota

Le dimensioni della finestra sandbox non sono attualmente configurabili.

Creazione di un file di configurazione

Per creare un file di configurazione:

  1. Aprire un editor di testo normale o un editor di codice sorgente, ad esempio Blocco note, Visual Studio Code e così via.

  2. Inserire le righe seguenti:

    <Configuration>
    </Configuration>
    
  3. Aggiungere il testo di configurazione appropriato tra le due righe. Per informazioni dettagliate, vedere esempi.

  4. Salvare il file con il nome desiderato, ma assicurarsi che l'estensione del nome file sia .wsb. Nel Blocco note è necessario racchiudere il nome file e l'estensione tra virgolette doppie, "My config file.wsb"ad esempio .

Uso di un file di configurazione

Per usare un file di configurazione, fare doppio clic su di esso per avviare Windows Sandbox in base alle impostazioni. È anche possibile richiamarlo tramite la riga di comando, come illustrato di seguito:

C:\Temp> MyConfigFile.wsb

Parole chiave, valori e limiti

vGPU

Abilita o disabilita la condivisione GPU.

<vGPU>value</vGPU>

Valori supportati:

  • Abilita: abilita il supporto vGPU nella sandbox.
  • Disabilita: disabilita il supporto vGPU nella sandbox. Se questo valore è impostato, la sandbox usa il rendering software, che potrebbe essere più lento rispetto alla GPU virtualizzata.
  • Default Questo valore è il valore predefinito per il supporto di vGPU. Attualmente, questo valore predefinito indica che vGPU è abilitato.

Nota

L'abilitazione della GPU virtualizzata può potenzialmente aumentare la superficie di attacco della sandbox.

Rete

Abilita o disabilita la rete nella sandbox. È possibile disabilitare l'accesso alla rete per ridurre la superficie di attacco esposta dalla sandbox.

<Networking>value</Networking>

Valori supportati:

  • Abilita: abilita la rete nella sandbox.
  • Disabilita: disabilita la rete nella sandbox.
  • Impostazione predefinita: questo valore è il valore predefinito per il supporto della rete. Questo valore abilita la rete creando un commutatore virtuale sull'host e connettendo la sandbox tramite una scheda di interfaccia di rete virtuale.

Nota

L'abilitazione della rete può esporre le applicazioni non attendibili alla rete interna.

Cartelle mappate

Matrice di cartelle, ognuna delle quali rappresenta una posizione nel computer host condivisa con la sandbox nel percorso specificato. Al momento, i percorsi relativi non sono supportati. Se non viene specificato alcun percorso, la cartella viene mappata al desktop dell'utente del contenitore.

<MappedFolders>
  <MappedFolder>
    <HostFolder>absolute or relative path to the host folder</HostFolder>
    <SandboxFolder>absolute path to the sandbox folder</SandboxFolder>
    <ReadOnly>value</ReadOnly>
  </MappedFolder>
  <MappedFolder>
    ...
  </MappedFolder>
</MappedFolders>
  • HostFolder: specifica la cartella nel computer host da condividere nella sandbox. La cartella deve essere già presente nell'host o il contenitore non viene avviato.
  • SandboxFolder: specifica la destinazione nella sandbox a cui eseguire il mapping della cartella. Se la cartella non esiste, viene creata. Se non viene specificata alcuna cartella sandbox, la cartella viene mappata al desktop del contenitore.
  • ReadOnly: se true, impone l'accesso in sola lettura alla cartella condivisa dall'interno del contenitore. Valori supportati: true/false. Il valore predefinito è false.

Nota

I file e le cartelle mappati dall'host possono essere compromessi dalle app nella sandbox o potenzialmente influire sull'host.

Comando Di accesso

Specifica un singolo comando che verrà richiamato automaticamente dopo l'accesso alla sandbox. Le app nella sandbox vengono eseguite con l'account utente del contenitore. L'account utente del contenitore deve essere un account amministratore.

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

Comando: percorso di un eseguibile o di uno script all'interno del contenitore che verrà eseguito dopo l'accesso.

Nota

Anche se i comandi molto semplici funzioneranno (ad esempio l'avvio di un eseguibile o di uno script), gli scenari più complessi che coinvolgono più passaggi devono essere inseriti in un file di script. Questo file di script può essere mappato nel contenitore tramite una cartella condivisa e quindi eseguito tramite la direttiva LogonCommand .

Input audio

Abilita o disabilita l'input audio nella sandbox.

<AudioInput>value</AudioInput>

Valori supportati:

  • Abilita: abilita l'input audio nella sandbox. Se questo valore è impostato, la sandbox può ricevere l'input audio dall'utente. Le applicazioni che usano un microfono possono richiedere questa funzionalità.
  • Disabilita: disabilita l'input audio nella sandbox. Se questo valore è impostato, la sandbox non può ricevere l'input audio dall'utente. Le applicazioni che usano un microfono potrebbero non funzionare correttamente con questa impostazione.
  • Impostazione predefinita: questo valore è il valore predefinito per il supporto dell'input audio. Attualmente, questo valore predefinito indica che l'input audio è abilitato.

Nota

L'esposizione dell'input audio dell'host al contenitore può comportare implicazioni per la sicurezza.

Input video

Abilita o disabilita l'input video nella sandbox.

<VideoInput>value</VideoInput>

Valori supportati:

  • Abilita: abilita l'input video nella sandbox.
  • Disabilita: disabilita l'input video nella sandbox. Le applicazioni che usano l'input video potrebbero non funzionare correttamente nella sandbox.
  • Impostazione predefinita: questo valore è il valore predefinito per il supporto dell'input video. Attualmente, questo valore predefinito indica che l'input video è disabilitato. Le applicazioni che usano l'input video potrebbero non funzionare correttamente nella sandbox.

Nota

L'esposizione dell'input video dell'host al contenitore può comportare implicazioni per la sicurezza.

Client protetto

Quando la modalità Client protetto è abilitata, Sandbox aggiunge un nuovo livello di limite di sicurezza eseguendo in un ambiente di esecuzione dell'isolamento AppContainer .

L'isolamento AppContainer fornisce l'isolamento di credenziali, dispositivi, file, reti, processi e finestre.

<ProtectedClient>value</ProtectedClient>

Valori supportati:

  • Abilita: esegue la sandbox di Windows in modalità client protetto. Se questo valore è impostato, la sandbox viene eseguita in Isolamento AppContainer.
  • Disabilita: esegue la sandbox in modalità standard senza mitigazioni di sicurezza aggiuntive.
  • Impostazione predefinita: questo valore è il valore predefinito per la modalità client protetto. Attualmente, questo valore predefinito indica che la sandbox non viene eseguita in modalità client protetto.

Nota

Questa impostazione può limitare la possibilità dell'utente di copiare/incollare file all'interno e all'esterno della sandbox.

Reindirizzamento stampante

Abilita o disabilita la condivisione della stampante dall'host nella sandbox.

<PrinterRedirection>value</PrinterRedirection>

Valori supportati:

  • Abilita: abilita la condivisione delle stampanti host nella sandbox.
  • Disabilita: disabilita il reindirizzamento della stampante nella sandbox. Se questo valore è impostato, la sandbox non può visualizzare le stampanti dall'host.
  • Impostazione predefinita: questo valore è il valore predefinito per il supporto del reindirizzamento della stampante. Attualmente, questo valore predefinito indica che il reindirizzamento della stampante è disabilitato.

Reindirizzamento degli Appunti

Abilita o disabilita la condivisione degli Appunti host con la sandbox.

<ClipboardRedirection>value</ClipboardRedirection>

Valori supportati:

  • Abilita: abilita la condivisione degli Appunti host con la sandbox.
  • Disabilita: disabilita il reindirizzamento degli Appunti nella sandbox. Se questo valore è impostato, la copia/incolla all'interno e all'esterno della sandbox è limitata.
  • Impostazione predefinita: questo valore è il valore predefinito per il reindirizzamento degli Appunti. Attualmente, la copia/incolla tra l'host e la sandbox è consentita in Impostazione predefinita.

Memoria in MB

Specifica la quantità di memoria che la sandbox può usare in megabyte (MB).

<MemoryInMB>value</MemoryInMB>

Se il valore di memoria specificato non è sufficiente per avviare una sandbox, viene automaticamente aumentato alla quantità minima richiesta.

Esempi

Esempio 1

Il file di configurazione seguente può essere usato per testare facilmente i file scaricati all'interno della sandbox. Per eseguire questo test, la rete e la vGPU sono disabilitate e la sandbox può accedere in sola lettura alla cartella download condivisi. Per praticità, il comando di accesso apre la cartella download all'interno della sandbox all'avvio.

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>

Esempio 2

Il file di configurazione seguente installa Visual Studio Code nella sandbox, che richiede un'installazione di LogonCommand leggermente più complessa.

Nella sandbox vengono mappate due cartelle; il primo (SandboxScripts) contiene VSCodeInstall.cmd, che installa ed esegue Visual Studio Code. Si presuppone che la seconda cartella (CodingProjects) contenga i file di progetto che lo sviluppatore vuole modificare usando Visual Studio Code.

Con lo script del programma di installazione di Visual Studio Code già mappato nella sandbox, LogonCommand può farvi riferimento.

VSCodeInstall.cmd

Scarica VS Code nella downloads cartella ed esegue l'installazione dalla downloads cartella.

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>

Esempio 3

Il file di configurazione seguente esegue uno script di PowerShell come comando di accesso per scambiare il pulsante primario del mouse per gli utenti mancini.

C:\sandbox nell'host viene eseguito il mapping alla C:\sandbox cartella nella sandbox, in modo che sia possibile fare riferimento allo SwapMouse.ps1 script nel file di configurazione della sandbox.

SwapMouse.ps1

Creare uno script di PowerShell usando il codice seguente e salvarlo nella C:\sandbox directory come 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>