本稿は2018年最後のレポート記事となるので、今年のWindows 10を振り返ろうと思った矢先、大きな話題が飛び込んできた。Windows 10が標準でサンドボックスをサポートするという。
サンドボックス(=砂箱)をセキュリティの文脈で説明すると、システムに悪影響を与える可能性がある実行ファイルを、実験的に実行して動作を確認する環境として用いられてきた。これまでは仮想マシンを一種のサンドボックスとして使う機会が多かったものの、次のWindows 10 19H1ではこれが不要になるだろう。
Microsoftが米国時間2018年12月18日に公開した記事によれば、「Windows Sandbox」はUEFI上で仮想機能を有効にしたPCで動作するWindows 10 ビルド18305以降のPro/Enterpriseエディションで、「Windowsの機能」から有効にするという。
なお、推奨環境としては4コア以上のCPUに8GB以上のメモリ、1GB以上のSSD空き容量が必要だ。本稿執筆時点のWindows 10 Insider Previewのビルドは18298なので、まだ試すことはできない。今回はMicrosoftが公開した記事の内容をかいつまんで報告する。
興味深いのはロジックだが、Windows Sandboxを利用するPCでHyper-V仮想マシンを使っている場合、Windows PowPowerShellでNested Hyper-Vを有効にしなければならないという。察するにカーネルの上にWindows Sandboxを実行するHyper-Vレイヤーを有効にして、Hyper-V仮想マシンを使う場合は、CPUの仮想化支援命令を仮想マシンに見せる「ExposeVirtualizationExtensions」の実行が必要のようだ。
Windows SandboxはWindowsコンテナ技術を用いて、サンドボックス内のWindows 10を実行している。だが、Windowsコンテナを厳密に語ると、Hyper-V上で動作するHyper-Vコンテナと、軽快ながらも隔離性は乏しいWindows Serverコンテナの2種類がある。Microsoftの説明を踏まえると、後者をベースにWindows 10との統合強化や一部機能を割愛したもののようだ。
サンドボックスである以上、常にクリーンな状態を保たなければならない。Windows OSは以前から、ファイルやレジストリへの変更をストレージに保存しないUnified Write Filter(統合書き込みフィルター)を始めとするロックダウン機能を備えているが、今回はDynamic Base Imageなるものを新たに開発した。
ホスト側に多くのリンクを張り、100MB未満のベースイメージを用いてサンドボックス環境を構築。未使用時は25MB程度の圧縮されたパッケージとなる。このロジックを用いることで、サンドボックス内のWindows 10に変更が加わっても破棄することを可能にしているのだろう。
メモリ管理は仮想マシンで使用するメモリ量を動的に変化させるHyper-V動的メモリと、ホストPCの物理メモリをとサンドボックスで対応づけるダイレクトマップを使用。ただし、ダイレクトマップはアドレスが一意的になるため、その点の改善は加えているという。
また、MicrosoftはWindows Sandboxを軽快に動作させるため、Integrated Scheduler(統合スケジューラ)なるものを実装する。仮想マシンとは異なるWindows Sandboxをプロセスとして管理するため、Linux KVMライクに動作するそうだ。
このほかにもサンドボックスを素早く起動するためのスナップショット&クローン機能や仮想化GPUのサポート、バッテリー消費を軽減する機能などを備える。Windows 10におけるサンドボックスといえば、Windows 10 バージョン1709(Proはバージョン1803)から実装したWindows Defender Application Guard(以下、WDAG)によるMicrosoft Edgeを連想するが、EdgeはChromiumベースとなることが発表されたばかり。これらの関連機能が維持されるのか不明確となった。
2019年以降登場するMicrosoft Edgeの変化を確認しないと軽々に語れないが、仮にWDAGが利用できなくなってもWindows Sandboxで代替できる。この機能はセキュリティ部門で働く法人ユーザーはもちろん、個人ユーザーも大きな恩恵となるだろう。
阿久津良和(Cactus)