Windows 10 1903 принесла нам песочницу Windows Sandbox. Это очередная технология Microsoft, использующая возможности Hyper-V без установки последнего. Ранее я писал уже про подобный подход в Application Guard защитника Windows. Она стала первой технологией, использующей функции Hyper-V для запуска браузера в изолированном окружении, доступная владельцу Windows 10 Pro и старше без танцев с бубном. Песочница позволяет быстро создать временную изолированную среду для запуска потенциально опасных приложений и документов. Все изменения, внесенные в песочницу не сохраняются и при её закрытии будут утеряны.

Системные требования:

  • Windows 10 Pro или Enterprise 1903 (билд 18305 и выше)
  • Архитектура AMD64 (64-х разрядная система и процессор)
  • 4 Гб RAM (8 рекомендуется)
  • 1 Гб дискового пространства ( рекомендуется использовать SSD)
  • Включенная поддержка аппаратной виртуализации в UEFI/BIOS
  • 2-х ядерный процессор ( рекомендуется 4-х ядерный с Hyper-Threading)

Преимущества перед виртуальной машиной

  • Высокая готовность. Первоначально нужно лишь включить компонент. Не нужно ничего скачивать или устанавливать. Песочница запускается менее минуты.
  • Оперативное восстановление. Подобно восстановлению ВМ из снимка, песочница оживает при её перезапуске. Не нужно ничего восстанавливать, если песочница повредилась. Закрыли и открыли — всё уже работает.
  • Безопасность. Песочница использует аппаратную виртуализацию. Hyper-V изолирует ядро песочницы от ядра основной системы.
  • Отсутствие следов. После закрытия песочницы её данные удаляются, а дисковое пространство, занятое файлом виртуального жесткого диска мгновенно возвращается системе.
  • Производительность. Используется аппаратное ускорение GPU, умное управлениепамятью и интегрированный планировщик задач.
  • Операционную систему песочницы не нужно отдельно лицензировать в отличии от системы на том-же VirtualBox.

Включение Windows Sandbox

Для включения песочницы нам следует ввести команду в PowerShell:

Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" –Online

Или в командной строке:

Dism /online /Enable-Feature /FeatureName:"Containers-DisposableClientVM" -All

Или найти апплет включения компонентов в панели управления. После установки компьютер следует перезагрузить.

Alt text

Использование

Воспользовавшись поиском Windows мы легко найдем песочницу. Ярлык так-же есть в главном меню.

Alt text

На запуск песочницы уходит около минуты, при этом формируется контейнер со своим виртуальным диском.

Alt text

В списке процессов её так-же никто не прятал. В моём случае, это процессы 5816 и 17976:

Alt text

Как видно, используется Hyper-V, хоть в его оснастке и пусто. Но давайте взглянем на саму песочницу. Это такая же Windows, как у нас. Характеристиками система не обделена: ядер процессора как у хоста, 4 гигабайта памяти и 40 гб жесткий диск. Достаточно для большинства задач подобного рода. Стоит отметить, что виртуальный диск увеличивается динамически по мере использования. память так-же в системе используется динамическая, но в отличие от виртуального диска, возвращает системе неиспользованное пространство.

Работать с песочницей предельно просто. Окно, что мы видим — это подключение по RDP, его можно развернуть в полный экран — система масштабируется. Принтеры проброшены в момент подключения. Интернет будет из коробки. В зависимости от настроек виртуального коммутатора, будет видна локальная сеть (по умолчанию видна). Файлы можно передать в песочницу через копировать — вставить, буфер обмена работает.

Что любопытно, в песочнице пользователь по умолчанию называется: WDAGUtilityAccount. Первые четыре буквы — это сокращение от Windows Defender Application Guard, что намекает на развитие технологии Application Guard.

Подробности от команды разработчиков Windows Sandbox

Песочница Windows построена на технологии, которая называется Windows Containers. Контейнеры разрабатывались (и давно используются) для работы в облаке. Microsoft взял уже достаточно зрелую и протестированную технологию и доработал её для пользователей десктопной Windows.

Ссылка на статью в блоге разработчиков Ссылка на перевод статьи на Хабре

Динамически генерируемый образ

Песочница является хотя и легковесной, но всё же виртуальной машиной. И, как любой виртуальной машине, ей требуется образ, с которого она может загрузится. Важнейшей особенностью Песочницы является то, что Вам не нужно откуда-то качать или создавать этот образ. Он создастся на лету, из файлов вашей текущей ОС Windows.

Мы хотим всегда получить одно и то же «чистое» окружение для Песочницы. Но есть проблема: некоторые системные файлы могут меняться. Решением было создание «динамически генерируемого образа»: для изменённых файлов в него будут включаться их оригинальные версии, но вот неизменные файлы физически в этот образ входить не будут. Вместо них будут использоваться ссылки на реальные файлы на диске. Как показала практика — такими ссылками будут большинство файлов в образе. Лишь малая их часть (около 100 МБ) войдут в образ полностью — это и будет его размер. Более того, когда Вы не используете Песочницу, эти файлы хранятся в сжатом виде и занимают около 25 МБ. При запуске Песочницы они разворачиваются в тот самый «динамический образ» размером около 100 МБ.

Alt text

Умное управление памятью

Управление памятью для Песочницы — ещё одно важное усовершенствование. Гипервизор позволяет запускать на одной физической машине несколько виртуальных и это, в общем, неплохо работает на серверах. Но, в отличии от серверов, ресурсы обычных пользовательских машин значительно более ограничены. Для достижения приемлемого уровня производительности Microsoft разработал специальный режим работы памяти, при котором основная ОС и Песочница могут с некоторых случаях использовать одни и те же страницы памяти.

В самом деле: поскольку основная ОС и Песочница запускают один и тот же образ ОС, то большинство системных файлах в них будут одни и те же, а значит нет смысла дважды загружать в память одинаковые библиотеки. Можно сделать это один раз в основной ОС, а когда тот же файл понадобится в памяти Песочнице — ей можно дать ссылку на ту же страницу. Конечно, требуются некоторые дополнительные меры для обеспечения безопасности подобного подхода, но Microsoft позаботилась об этом.

Alt text

Интегрированный планировщик

В случае использования обычных виртуальных машин гипервизор контролирует работу виртуальных процессоров, работающих в них. Для Песочницы была разработана новая технология, которая называется «интегрированный планировщик», которая позволяет основной ОС решать когда и сколько ресурсов выделить Песочнице. Работает это так: виртуальный процессоры Песочницы работают как потоки внутри процесса Песочницы. В итоге они имеют те же «права», что и остальные потоки в вашей основной ОС. Если, к примеру, у вас работают какие-то высокоприоритетные потоки, то Песочница не будет отнимать у них много времени для выполнения своих задач, которые имеют нормальный приоритет. Это позволит пользоваться Песочницей, не замедляя работу критически важных приложений и сохраняя достаточную отзывчивость UI основной ОС, аналогично тому, как работает Linux KVM.

Главной задачей было сделать Песочницу с одной стороны просто обычным приложением, а с другой — дать гарантию её изоляции на уровне классических виртуальных машин.

Использование «снимков»

Как уже говорилось выше, Песочница использует гипервизор. Мы по сути запускаем одну копию Windows внутри другой. А это означает, что для её загрузки понадобится какое-то время. Мы можем тратить его при каждом запуске Песочницы, либо сделать это лишь раз, сохранив после загрузки всё состояние виртуальной ОС (изменившиеся файлы, память, регистры процессора) на диске. После этого мы сможем запускать Песочницу из данного снимка, экономя при этом время её старта.

Виртуализация графики

Аппаратная виртуализация графики — это ключ к плавному и быстрому пользовательскому интерфейсу, особенно для «тяжелых» в плане графики приложений. Однако, классические виртуальные машины изначально ограничены в возможностях напрямую использовать все ресурсы GPU. И здесь важную роль выполняют средства виртуализации графики, которые позволяют преодолеть данную проблему и в какой-то форме использовать аппаратную акселерацию в виртуальном окружении. Примером такой технологии может быть, например, Microsoft RemoteFX.

Кроме того, Microsoft активно работала с производителями графических систем и драйверов для того, чтобы интегрировать возможности виртуализации графики непосредственно в DirectX и WDDM (модель драйверов в ОС Windows).

В результате графика в Песочнице работает следующим образом:

  • Приложение в Песочнице использует графические функции обычным образом, не зная кто и как будет их выполнять
  • Графическая подсистема Песочницы, получив команды отрисовки графики, передаёт их основной ОС
  • Основная ОС, получив команды отрисовки графики, воспринимает их так, как будто они пришли от локально запущенного приложения и соответствующим образом выполняет их, выделяя и управляя необходимыми ресурсами.

Это процесс можно изобразить так:

Alt text

Это позволяет виртуальному окружению получать полноценный доступ к аппаратно акселерируемой графике, что даёт как прирост производительности, так и экономию некоторых ресурсов (например, заряда батареи для ноутбуков) в следствие того, что для отрисовки графики больше не используются тяжелые расчёты на CPU.