[windows] 윈도우 11 샌드박스(Windows Sandbox) 사용하기 - 2
[win11] 윈도우 샌드박스(Windows Sandbox) 사용하기 - 1
[win11] 윈도우 샌드박스(Windows Sandbox) 사용하기 - 2
지난 포스팅에서는 windows sandbox의 기본적인 활성화 방법과 실행 방법에 관해 알아보았는데, 이번 시간에는 좀더 상세한 설정 방법을 알아보고자 한다.
1. 환경 설정
Windows Sandbox는 vmware나 virtual box 처럼 많은기능은 없지만 간단한 커스터마이징 기능을 제공한다. 다음 XML 구문과 같이 작성하고 .wsb 확장자로 저장한 후 실행하면 된다. (wsb 는 아마 windows sandbox의 줄임말이 아닐까? )
아래 예시는 MSDN에 작성되어 있는 예시다.
<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>
XML 파일에서 사용할 수 있는 각 항목 별 의미는 다음과 같다.
<Configuration>: 최상위 구분
<vGPU> : vGPU 지원 여부
Enable : 샌드박스에서 vGPU 지원을 활성화합니다.
Disable : 샌드박스에서 vGPU 지원을 비활성화합니다. 이 값을 설정하면 샌드박스는 소프트웨어 렌더링을 사용하는데, 이는 가상화된 GPU보다 느릴 수 있습니다.
Default : Enable
<Networking> : 샌드박스 네트워킹 여부, 활성화하면 NAT 환경처럼 동작(추측)
Enable : 샌드박스에서 네트워킹을 활성화합니다.
Disable : 샌드박스에서 네트워킹을 비활성화합니다.
Default : Enable
* 테스트 결과 Enable 시 샌드박스 환경에 가상 NIC가 추가되어 호스트가 NAT 모드로 동작하고, Disable 시 가상 NIC 가 존재하지 않아 통신이 불가능한 환경이 되는것으로 확인됨.
<MappedFolders> : 호스트와 샌드박스 간의 공유폴더 설정
HostFolder : 샌드박스에 공유할 호스트 컴퓨터의 폴더를 지정합니다. 폴더가 호스트에 이미 있어야 합니다. 그렇지 않으면 컨테이너가 시작되지 않습니다.
SandboxFolder : 폴더를 매핑할 샌드박스의 대상을 지정합니다. 폴더가 없으면 생성됩니다. 샌드박스 폴더를 지정하지 않으면 폴더가 컨테이너 데스크톱에 매핑됩니다.
ReadOnly : 해당 경로를 읽기 전용 설정할 것인지. 지원되는 값: true / false . 기본값은 false.
<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>
<LogonCommand> : 로그온 시 실행될 명령. 파일, 스크립트 실행 가능, 파일 공유 기능으로 호스트 파일도 실행 가능
<LogonCommand>
<Command>command to be invoked</Command>
</LogonCommand>
여러 줄의 <Command> 로 복수 명령 실행 가능
<AudioInput> : 샌드박스에 대한 오디오 입력을 활성화하거나 비활성화
Enable: 샌드박스에서 오디오 입력을 사용하도록 설정합니다. 이 값을 설정하면 샌드박스가 사용자로부터 오디오 입력을 받을 수 있습니다. 마이크를 사용하는 애플리케이션에는 이 기능이 필요할 수 있습니다.
Disable: 샌드박스에서 오디오 입력을 사용하지 않도록 설정합니다. 이 값을 설정하면 샌드박스가 사용자로부터 오디오 입력을 받을 수 없습니다. 마이크를 사용하는 애플리케이션이 이 설정으로 제대로 작동하지 않을 수 있습니다.
Default : Enable
<VideoInput> :샌드박스에 대한 비디오 입력을 활성화하거나 비활성화
Enable: 샌드박스에서 비디오 입력을 사용하도록 설정합니다.
Disable: 샌드박스에서 비디오 입력을 사용하지 않도록 설정합니다. 비디오 입력을 사용하는 애플리케이션이 샌드박스에서 제대로 작동하지 않을 수 있습니다.
Default : Disable
<ProtectedClient> : 활성화 시 AppContainer 격리 실행 환경 내에서 실행되어 새로운 보안 경계 계층을 추가해 자격 증명, 장치, 파일, 네트워크, 프로세스 및 창 격리를 제공
Enable : 보호된 클라이언트 모드에서 Windows 샌드박스를 실행합니다. 이 값이 설정되면 샌드박스는 AppContainer 격리에서 실행됩니다.
Disable : 추가적인 보안 완화 조치 없이 표준 모드에서 샌드박스를 실행합니다.
Default : Disable
<PrinterRedirection> : 샌드박스에 대한 프린터 공유를 활성화 하거나 비활성화
Enable : 호스트 프린터를 샌드박스에 공유할 수 있습니다.
Disable : 샌드박스에서 프린터 리디렉션을 사용하지 않도록 설정합니다. 이 값을 설정하면 샌드박스가 호스트에서 프린터를 볼 수 없습니다.
Default : Disable
<ClipboardRedirection> : 호스트와 샌드박스 간 클립보드(복사, 붙여넣기) 기능 공유 사용 여부
Enable : 샌드박스와 호스트 클립보드를 공유할 수 있습니다.
Disable : 샌드박스에서 클립보드 리디렉션을 사용하지 않도록 설정합니다. 이 값을 설정하면 샌드박스에서 복사/붙여넣기 작업이 제한됩니다.
Default : Enable
<MemoryInMB> : 샌드박스가 사용할 수 있는 메모리 양을 MB(메가바이트)단위로 지정
지정된 메모리 값이 샌드박스를 부팅하기에 충분하지 않은 경우 자동으로 필요한 최소 크기로 증가합니다.
2. 예제
다음 MSDN에 있는 공식 예제들을 분석해보겠다.
a. 첫 번째 예제
<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>
#설명
vGPU 사용 x, 네트워킹 사용 x
호스트의 'C:/Users/Public/Downloads' → 샌드박스 'C:/Users/WDAGUtilityAccount/Downloads' 경로로 매핑(공유)
공유폴더 읽기전용
로그온 시 'C:/Users/WDAGUtilityAccount/Downloads/explorer.exe' 실행 ← 공유폴더, 즉 호스트에 존재하는 파일이 되겠다.
b. 두 번째 예제
# 호스트의 'C:/SandboxScripts/VSCodeInstall.cmd' 파일
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
# wsb xml 파일
<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>
# 설명
호스트 'C:/SandboxScripts' → 샌드박스 'C:/Users/WDAGUtilityAccount/Downloads/sandbox' 매핑
호스트 'C:/CodingProjects' → 샌드박스 'C:/Users/WDAGUtilityAccount/Documents/Projectsx' 매핑
공유된 ' C:/Users/WDAGUtilityAccount/Downloads/sandbox/VSCodeInstall.cmd' 파일 실행
c. 세 번째 예제
# 호스트의 'C:/sandbox/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))
# wsb xml 파일
<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>
# 설명
호스트 'C:/sandbox' → 샌드박스 'C:/sandbox' 매핑
매핑된 폴더에서 SwapMouse.ps1 을 -ExcutionPolicy Bypass로 우회 실행
* 윈도우 환경에서 보안을(악성코드실행을 막기) 위해 기본적으로 ps1 파일은 실행이 금지되어 있음.
3. WSB Manager 도구 사용하기
마이크로소프트 스토어에 WSB Manager라는 도구가 있다. 주소는 다음과 같다.
https://apps.microsoft.com/detail/9p09b9dspb95?hl=en-us&gl=US
WSB Manager - Free download and install on Windows | Microsoft Store
To easier customization of Windows Sandbox! WSB Manager can create and edit Windows Sandbox configuration files on the GUI. *** Description of operation *** When you start the application, the main page is displayed. The left half of the page is displayed
apps.microsoft.com
이미지를 보면 알겠지만 일본에서 제작한 프로그램 같고, 위에서 설명한 설정 정보들을 GUI를 사용해서 설정할 수 있도록 해 준다.
실제로 사용해보면 이렇게 사용 환경 설정값들을 저장해놓고 필요할 때 바로바로 사용할 수 있어서 편리하다!
4. Reference
Windows Sandbox configuration
Windows Sandbox configuration Article03/26/2024 6 contributors Applies to: ✅ Windows 11, ✅ Windows 10 Feedback In this article --> Windows Sandbox supports simple configuration files, which provide a minimal set of customization parameters for Sandbox.
learn.microsoft.com
https://apps.microsoft.com/detail/9p09b9dspb95?hl=en-us&gl=US
WSB Manager - Free download and install on Windows | Microsoft Store
To easier customization of Windows Sandbox! WSB Manager can create and edit Windows Sandbox configuration files on the GUI. *** Description of operation *** When you start the application, the main page is displayed. The left half of the page is displayed
apps.microsoft.com