Jak stworzyć plik konfiguracyjny dla Windows Sandbox?

Jak stworzyć plik konfiguracyjny dla Windows Sandbox?

Autor: Krzysztof Sulikowski

Opublikowano: 3/14/2019, 12:00 PM

Liczba odsłon: 4856

Windows Sandbox to jedna z najciekawszych nowości w Windows 10 April 2019 Update. W chwili publikacji tego tekstu jest on nadal rozwijany w programie Insider, a przed paroma dniami doczekał się wsparcia dla plików konfiguracyjnych. Taki config jest plikiem tekstowym, w którym możemy z góry ustawić wybrane parametry sandboksa w takich obszarach, jak vGPU, sieci, współdzielone katalogi czy logowanie. Co dokładnie możemy zmienić i jakich poleceń używać? Wreszcie w jakich scenariuszach może nam się przydać Windows Sandbox?

Windows Sandbox Config

Co możemy ustawić w pliku konfiguracyjnym?

Windows Sandbox otrzymał wsparcie dla prostych plików konfiguracyjnych, których można używać, począwszy od kompilacji 18342 (April 2019 Update). Są one formatowane jako XML i powiązane z Sandboxem poprzez rozszerzenie pliku .wsb. Config pozwala użytkownikowi kontrolować następujące aspekty Sandboksa:

  • vGPU (wirtualizowany GPU): Włączanie lub wyłączanie vGPU. Gdy jest wyłączony, Sandbox użyje WARP (rasteryzatora software'owego).
  • Sieci: Włączanie lub wyłączanie dostępu do sieci z sandboksa.
  • Foldery współdzielone: Udostępnianie folderów z hosta z uprawnieniami odczytu i/lub zapisu. Należy mieć na uwadze, że udostępnienie folderu sandboksowi może umożliwić przeniknięcie złośliwego oprogramowania do systemu-gospodarza lub kradzież danych.
  • Skrypt rozruchowy: akcje po zalogowaniu w Sandboksie.

Jak zobaczycie na poniższych przykładach, pliki konfiguracyjne mogą posłużyć do drobiazgowej kontroli nad Windows Sandbox, w tym do zwiększenia jego izolacji. Podwójne kliknięcie pliku .wsb otwiera go w Windows Sandbox. Można też uruchomić go z wiersza polecenia.

Jakich słów kluczowych i wartości używać?

vGPU:

    <VGpu>wartość</VGpu>
    Wspierane wartości:
    • Disable - wyłącza działanie vGPU w Sandboksie. Używane będzie renderowanie oparte na oprogramowaniu, co może działać wolniej niż w przypadku wirtualizowanego GPU.
    • Default - wartość domyślna, czyli włączony vGPU.

Sieci:

    <Networking>wartość</Networking>
    Wspierane wartości:
    • Disable - wyłącza działanie sieci w Sandboksie.
    • Default - wartość domyślna. Umożliwia działanie sieci, tworząc wirtualny switch w hoście i łącząc z nim sandboksa poprzez wirtualny NIC. Opcja ta może potencjalnie wystawić sieć wewnętrzną na działanie niezaufanych aplikacji.

Foldery udostępnione:

    <MappedFolders>
    Lista obiektów MappedFolder
    </MappedFolders>
    MappedFolder to pojedynczy folder na maszynie hosta, który będzie udostępniany na kontenerowanym pulpicie. Aplikacje w Sandboksie uruchamiają się na koncie użytkownika “WDAGUtilityAccount”, zatem wszystkie foldery będą mapowane w katalogu C:\Users\WDAGUtilityAccount\Desktop.
    <MappedFolder>
        <HostFolder>ścieżka do folderu hosta</HostFolder>
        <ReadOnly>wartość</ReadOnly>
    </MappedFolder>
    Wspierane wartości:
    • HostFolder - ścieżka folderu, która ma być współdzielona z sandboksem. Folder musi już istnieć w hoście. W przeciwnym wypadku, jeśli folder nie zostanie znaleziony, Windows Sandbox nie uruchomi się.
    • ReadOnly - jeśli wpiszemy true, dostęp zostanie przyznany z uprawnieniami tylko do odczytu. Wartość false umożliwia zapis.

Skrypt rozruchowy:

    <LogonCommand>
       <Command>polecenie do wywołania</Command>
    </LogonCommand>
    Wspierane wartości:
    • Command - ścieżka do pliku wykonywalnego lub skryptu wewnątrz kontenera, który zostanie wykonany po zalogowaniu. Bardziej skomplikowane scenariusze, zakładające użycie wielu kroków, powinny być umieszczone w pliku skryptu. Plik ten może znajdować się w mapowanym folderze.

Praktyczne przykłady

Przykład pierwszy - bezpieczne testowanie pobranych plików

Ten plik konfiguracyjny może być użyty, by łatwo testować nowo pobrane pliki w sandboksie. Skrypt ten wyłącza sieci i vGPU oraz wymusza tryb tylko do odczytu. Mapowanym folderem (jego ścieżkę możemy oczywiście zmienić) jest folder Pobrane. Dodany jest również skrypt, który otwiera ten folder po zalogowaniu:

Downloads.wsb

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

Przykład drugi - instalacja Visual Studio Code w kontenerze

Przykład ten jest nieco bardziej skomplikowany. W kontenerze zmapowane są dwa foldery: pierwszy (SandboxScripts) zawiera VSCodeInstall.cmd, który zainstaluje i uruchomi VSCode. Drugi folder (CodingProjects) ma zawierać pliki projektów, które deweloper może chcieć zmodyfikować z użyciem VSCode. Mając skrypt instalacyjny zmapowany w kontenerze, LogonCommand może się do niego odnieść:

VSCodeInstall.cmd

REM Download VSCode
curl -L "https://update.code.visualstudio.com/latest/win32-x64-user/stable" --output C:\users\WDAGUtilityAccount\Desktop\vscode.exe
 
REM Install and run VSCode
C:\users\WDAGUtilityAccount\Desktop\vscode.exe /verysilent /suppressmsgboxes

VSCode.wsb

<Configuration>
<MappedFolders>
   <MappedFolder>
     <HostFolder>C:\SandboxScripts</HostFolder>
     <ReadOnly>true</ReadOnly>
   </MappedFolder>
   <MappedFolder>
     <HostFolder>C:\CodingProjects</HostFolder>
     <ReadOnly>false</ReadOnly>
   </MappedFolder>
</MappedFolders>
<LogonCommand>
   <Command>C:\users\wdagutilityaccount\desktop\SandboxScripts\VSCodeInstall.cmd</Command>
</LogonCommand>
</Configuration>

Windows Sandbox szczegółowo opisywaliśmy już tutaj.