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?
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.