Windows Sandboxを使えるようにする

 Windows10 Version 1903でWindows Sandboxが正式にリリースされました。
 なお、Windows Sandboxが利用可能なのはPro以上のエディションとなっているため、Homeなどでは使えません。
 Windows 10 ProでWindows Sandboxを使えるようにしてみたので、以下にその手順などを記載します。
 

Windows Sandboxとは

 Windows SandboxについてのMicrosoft公式情報は以下から確認できます。
Windows Sandbox - Microsoft Tech Community - 301849
 上記URLには簡潔に、

Windows Sandbox is a new lightweight desktop environment tailored for safely running applications in isolation.

と説明されています。要するに、「Windows Sandboxは安全にアプリケーションを分離して実行するのに適した新たな軽量デスクトップ環境」といった意味になります。
 物理的に別のマシンを用意したり、新規にVMを立ち上げたりせずに、安全に分離環境でアプリを実行できるよ、と訴求しているようです。
 実態はHyper-Vで動作しているVMのようなもののようですが、普通のVMとは異なりSandboxを終了する都度、Sandbox内のデータは全て破棄され、起動するたびにクリーンな状態に戻っています。等々、いろいろ特徴があるのですが詳細は上記公式の英文をご確認ください。
 

導入手順

 これも上記公式に英語で記載されており特に難しい点は無いのですが、以下に要約して日本語で書いておきます。

前提
  • 64bit版Windows 10 Pro/Enterpriseのバージョンを1903以降にアップデート
  • BIOSで仮想化の有効/無効設定があれば有効化
  • 最低4GBの搭載メモリ(8GB以上を推奨)
  • 最低1GBの空きストレージ容量(SSDを推奨)
  • 最低でもデュアルコアのCPU(4コアかつHT有効を推奨)
手順

 上記前提を満たしたうえで、以下の手順を踏みます。

  • Windowsの機能の有効化または無効化から"Windowsサンドボックス"にチェックを入れて[OK]を押下
    Windowsの機能の有効化または無効化-Windowsサンドボックス
  • しばらく待つと変更が完了し、以下の画面に遷移するので[今すぐ再起動]を押下し、再起動する
    今すぐ再起動

 Windows Sandboxの導入自体は以上で完了です。

 再起動後にはスタートメニューにWindows Sandboxが追加されているので、これを選択すると起動します。
Windows Sandbox in Startmenu

 初回起動時は以下のスプラッシュスクリーン表示で1分強待たされました(2回目以降はそこまで待たされません)。
Windows Sandbox Splash Screen

 続いて表示されるWindowsサンドボックスウインドウでも1分以上待たされます(2回目以降は前述のスプラッシュスクリーンと併せて1分未満程度の待ち時間)。
Windows Sandbox window

 しばらく待った後、Windowsサンドボックスウインドウ内にWindowsのデスクトップが表示されます。
Windows Sandbox Desktop

 あとは、このWindowsサンドボックスウインドウ内のWindowsデスクトップで検証対象をテストするだけです。
 

Sandbox内の環境

※WindowsSandboxを動かしているPCについて以降はホストと記載します。

OS等

f:id:kachine:20190619202612p:plain
Windows 10 Enterprise edition Version 1903が入っているようです。ホスト側はWindows 10 Pro 1903ですが、Sandobox内はEnterpriseが導入されています!

f:id:kachine:20190619202630p:plain
が、ライセンス認証はされていない状態となっています。

f:id:kachine:20190619203012p:plain
コントロールパネルから確認しても同様にWindows10 Enterpriseでライセンス認証されていない状態となっています。
なお、表示されているCPUはホストと同じものですが、メモリについてはホストに12GB搭載していますが、Sandboxには4GBが割り当てられているようです。

> systeminfo
ホスト名:               ********-****-*
OS 名:                  Microsoft Windows 10 Enterprise
OS バージョン:          10.0.18362 N/A ビルド 18362
OS 製造元:              Microsoft Corporation
OS 構成:                スタンドアロン ワークステーション
OS ビルドの種類:        Multiprocessor Free
登録されている所有者:   N/A
登録されている組織:     N/A
プロダクト ID:          *****-*****-*****-*****
最初のインストール日付: 6/8/2019, 4:56:18 PM
システム起動時間:       6/17/2019, 11:08:53 PM
システム製造元:         Microsoft Corporation
システム モデル:        Virtual Machine
システムの種類:         x64-based PC
プロセッサ:             1 プロセッサインストール済みです。
                        [01]: Intel64 Family 6 Model 69 Stepping 1 GenuineIntel ~2494 Mhz
BIOS バージョン:        Microsoft Corporation Hyper-V UEFI Release v4.0, 1/30/2019
Windows ディレクトリ:   C:\Windows
システム ディレクトリ:  C:\Windows\system32
起動デバイス:           \Device\HarddiskVolume2
システム ロケール:      ja;日本語
入力ロケール:           en-us;英語 (米国)
タイム ゾーン:          (UTC+09:00) 大阪、札幌、東京
物理メモリの合計:       3,999 MB
利用できる物理メモリ:   2,978 MB
仮想メモリ: 最大サイズ: 5,727 MB
仮想メモリ: 利用可能:   4,643 MB
仮想メモリ: 使用中:     1,084 MB
ページ ファイルの場所:  C:\pagefile.sys
ドメイン:               WORKGROUP
ログオン サーバー:      \\********-****-*
ホットフィックス:       N/A
ネットワーク カード:    1 NIC(s) インストール済みです。
                        [01]: Microsoft Hyper-V Network Adapter
                              接続名:        イーサネット
                              DHCP が有効:    はい
                              DHCP サーバー:    192.168.***.***
                              IP アドレス
                              [01]: 192.168.***.***
                              [02]: ****::****:****:****:****
Hyper-V の要件:         ハイパーバイザーが検出されました。Hyper-V に必要な機能は表示されません。

 

S/W

f:id:kachine:20190629190832p:plain
 基本的にWindows標準の最小限のアプリケーションしか入っていません。なお、PowerShellも表示されていますが、実行してみても以下のように.NET Frameworkの欠如により実行できませんでした。

> powershell
Version v4.0.30319 of the .NET Framework is not installed and it is required to run version 3 of Windows PowerShell.

 [Windowsシステムツール]内に[コマンドプロンプト]があるので、CUIはそちらを使うことになると思います。

 なお、Windows10ではスタートメニューから直接検索できますが、Sandbox内のスタートメニューでは検索できないようです。また、タスクバーの"検索するには、ここに入力します"にも入力できないようです。

 また、これが意図的なものなのかは判りませんが、Sandbox内ではWindows Defenderが無効化されているようです。Windows Sandbox起動後しばらくすると通知領域に以下の通知が表示されます。
f:id:kachine:20190619204544p:plain
 何度か試してみましたが、Sandbox内でWindows Updateを実行することもできないようです。
f:id:kachine:20190619204625p:plain
 というわけで、Sandbox環境が最新のセキュアな状態なのか良く判りませんし、いつ断面のパッチが適用されている状態なのかも解りません。

 また、Sandbox内のスタートメニューなどから起動したアプリは全てSandbox内で管理者特権を有した状態で実行されるようです。Powershellが使えれば、管理者特権を外した状態で任意のプロセスを起動できるか簡単に実験できるのですが、前述の通り使えないので…Windows標準機能だけで明示的に管理者特権を外した状態でプログラムを実行する方法ってあるんでしたっけ?というわけで、Sandbox内で管理者特権無しでプログラムを実行する方法は解りません(ちなみにSandbox内のタスクマネージャで各プロセスの管理者特権の有無を見ると、僅か数個のプロセスを除いてほとんどが無駄に管理者特権で動いているのが確認できます)。
 

N/W

 WindowsSandboxを動かしているPC(以降はホスト側と記載)がインターネットに繋がっていれば、何も設定しなくてもSandboxもインターネットに繋がります。検証対象プログラムをインターネットからダウンロードしたりするのには便利ですが、捉え方によっては脅威になるかもしれません。ホスト側には仮想イーサーネットアダプタ(Hyper-V Virtual Ethernet Adapter)が追加されており、Sandboxからの通信はこの仮想イーサーネットアダプタ越しにインターネットとやり取りされるようになっているようです。

>ipconfig /all

Windows IP 構成

   ホスト名. . . . . . . . . . . . . . .: ********-****-****-****-************
   プライマリ DNS サフィックス . . . . .:
   ノード タイプ . . . . . . . . . . . .: 混合
   IP ルーティング有効 . . . . . . . . .: いいえ
   WINS プロキシ有効 . . . . . . . . . .: いいえ
   DNS サフィックス検索一覧. . . . . . .: mshome.net

イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .: mshome.net
   説明. . . . . . . . . . . . . . . . .: Microsoft Hyper-V Network Adapter
   物理アドレス. . . . . . . . . . . . .: **-**-**-**-**-**
   DHCP 有効 . . . . . . . . . . . . . .: はい
   自動構成有効. . . . . . . . . . . . .: はい
   リンクローカル IPv6 アドレス. . . . .: ****::****:****:****:****%6(優先)
   IPv4 アドレス . . . . . . . . . . . .: 192.168.***.***(優先)
   サブネット マスク . . . . . . . . . .: 255.255.255.240
   リース取得. . . . . . . . . . . . . .: Monday, June 17, 2019 11:09:18 PM
   リースの有効期限. . . . . . . . . . .: Tuesday, June 18, 2019 11:14:28 PM
   デフォルト ゲートウェイ . . . . . . .: 192.168.***.***
   DHCP サーバー . . . . . . . . . . . .: 192.168.***.***
   DHCPv6 IAID . . . . . . . . . . . . .: 113780684
   DHCPv6 クライアント DUID. . . . . . .: **-**-**-**-**-**-**-**-**-**-**-**-**-**
   DNS サーバー. . . . . . . . . . . . .: 192.168.***.***
   NetBIOS over TCP/IP . . . . . . . . .: 有効

 

 といった感じで、ちょっとしたすぐに使えるお手軽な検証環境がMicrosoft純正機能として用意されたわけで、それ自体は歓迎できます。が、Windows Sandboxを紹介する大手メディアの記事には「怪しげなプログラムもサンドボックスなら安全に試せる」といった趣旨の記述も散見されますが、それは過大評価だと感じます。Windows Sandboxを使っても危険なパターンはありますし、特にLAN内の他のマシンに対しては危険極まりないと考えられますので、その辺について気づいた範囲で別途記載します。
 



以上。