博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微软推出Windows Sandbox:可安全运行任何应用的一次性VM\n
阅读量:5834 次
发布时间:2019-06-18

本文共 3587 字,大约阅读时间需要 11 分钟。

几个月前,微软在即将推出Windows 10时,曾透露过一个功能,当时称为InPrivate Desktop:一种轻量级虚拟机,用于在隔离环境中运行不受信任的应用程序。昨天,微软正式推出这个功能,名为Windows Sandbox。

Windows Sandbox是一种新的轻量级桌面环境,专为安全运行应用程序而量身定制。

有多少次,你下载了一个可执行文件,却不敢运行它?你是否曾经遇到过需要一个干净的Windows但又不想安装虚拟机的情况?

在微软,我们经常会遇到这些情况,因此我们开发了Windows Sandbox:一个独立的临时桌面环境,你可以在其中运行不受信任的软件,而不必担心会对你的PC产生任何影响。Windows Sandbox中安装的软件仅停留在Sandbox中,不会影响到宿主。关闭Windows Sandbox后,将永久删除所有安装的软件,包括软件相关的所有文件和状态。

Windows Sandbox具有以下特点:

  • 它是Windows的一部分——Sandbox所需的一切都随Windows 10 Pro和Enterprise一起提供。无需下载VHD!
  • 干净如初——每次运行Windows Sandbox时,它都像刚安装的Windows一样干净。
  • 一次性——不会在设备上留下任何东西,关闭之后一切都将被丢弃。
  • 安全——使用基于硬件的虚拟化进行内核隔离,依靠微软的Hypervisor运行单独的内核,将Windows Sandbox与宿主隔离开来。
  • 高效——使用集成的内核调度程序、智能内存管理和虚拟GPU。

使用Sandbox的先决条件:

  • Windows 10专业版或企业版build 18305或更高版本;
  • AMD64架构;
  • 在BIOS中启用虚拟化功能;
  • 至少4GB的RAM(推荐8GB);
  • 至少1GB的可用磁盘空间(建议使用SSD);
  • 至少2个CPU核心(建议使用4个超线程核心)。

Windows Sandbox内部

Windows Sandbox使用了与Windows Containers相同的技术。Containers被设计为在云端运行,我们在Sandbox中采用了相同的技术,将其集成到Windows 10中,并添加了一些功能,使其更适合在设备和笔记本电脑上运行,而不需要Windows Server的全部功能。

我们所做的一些重要改进包括:

动态生成镜像

Windows Sandbox是一种轻量级虚拟机,所以需要一个操作系统镜像才能启动。我们为Windows Sandbox提供的一项重要增强功能是能够使用计算机上已经安装的Windows 10副本,而不是像普通虚拟机那样下载新的VHD镜像。

我们希望提供一个干净的环境,不过挑战在于有些操作系统文件可能会发生变化。我们的解决方案是构建“动态基础镜像”:也就是一种操作系统镜像,它包含了可以被修改的文件的干净副本,同时链接宿主主机上已存在的Windows镜像中的不可修改文件。因为大多数文件(不可变文件)是链接,所以整个操作系统镜像很小(~100MB)。我们把它叫作Windows Sandbox的“基础镜像”。

如果未安装Windows Sandbox,我们会将动态基础镜像保存在压缩包中,大小只有25MB,展开后占用大约100MB的磁盘空间。

\"\"

智能内存管理

我们同时将内存管理集成到Windows内核中。微软的Hypervisor可以将单个物理机分为多个共享相同物理硬件的虚拟机。这种方法适用于传统的服务器,但不适合资源有限的设备。我们设计了Windows Sandbox,宿主主机可以根据实际情况回收Sandbox的内存。

此外,Windows Sandbox基本上运行与宿主相同的操作系统镜像,因此我们通过“直接映射”技术让Sandbox使用与宿主操作系统一样的物理内存页。换句话说,宿主主机的ntdll可执行页被映射到Sandbox中。

\"\"

集成内核调度程序

微软的Hypervisor可以控制普通虚拟机中的虚拟处理器调度。但在Windows Sandbox中,我们使用了一种叫作“集成调度程序”的新技术,宿主主机可以决定何时运行Sandbox。

我们为Sandbox虚拟处理器使用了一种独特的调度策略,这种策略与调度线程的方式是一样的。宿主主机上的高优先级任务可以抢占Sandbox中不太重要的任务。使用集成调度程序的好处是宿主主机可以将Windows Sandbox作为一个进程而不是虚拟机来管理,让宿主主机的响应速度更快,类似于Linux KVM。

我们的整体目标是将Sandbox视为一个应用程序,同时具备虚拟机那样的安全性。

快照和克隆

如上所述,Windows Sandbox使用了微软的Hypervisor。我们基本上是在运行另一个Windows副本,所以可能需要一些启动时间。为了不在每次启动Windows Sandbox时都要花很多时间启动整个操作系统,我们使用了其他两项技术,即“快照”和“克隆”。

通过使用快照,在启动一次Sandbox环境之后,将内存、CPU和设备状态保存到磁盘上。然后,当我们需要一个新的Windows Sandbox实例时,可以直接从磁盘恢复Sandbox环境,并将其放入内存,而不是重新启动它。这显著改善了Windows Sandbox的启动时间。

图形虚拟化

硬件加速渲染是带来良好用户体验的关键,特别是对于图形密集型或媒体密集型的场景来说。虚拟机与宿主是相隔离的,无法访问GPU等高级设备。因此,图形虚拟化技术(例如微软的RemoteFX)是弥合这一差距的关键,并在虚拟化环境中提供硬件加速。

最近,微软与图形生态系统合作伙伴合作,将现代图形虚拟化功能直接集成到DirectX和WDDM中,它们是Windows显示驱动程序使用的驱动程序模型。

这种图形虚拟化大致工作原理如下:

  • 在Hyper-V虚拟机中运行的应用程序使用图形API。
  • 虚拟机中的图形组件(支持虚拟化)在虚拟机边界与宿主主机协调,以执行图形工作负载。
  • 宿主主机在虚拟机应用程序和本机应用程序之间分配和调度图形资源。从概念上讲,它们就像是一个图形客户端池。

\"\"

Windows Sandbox因此能够受益于硬件加速渲染,Windows可以在宿主主机和Sandbox之间动态分配图形资源,提升了运行在Windows Sandbox中的应用程序的性能和响应能力,同时改进了电池寿命(对于图像密集型的使用场景)。

要获得这些优势,你需要有一个具有兼容GPU和图形驱动程序(WDDM 2.5或更高版本)的系统,否则将使用微软的基于CPU的渲染技术在Windows Sandbox中渲染应用程序。

电池穿透

Windows Sandbox可以知道宿主主机的电池状态,从而进行功耗优化。这对于笔记本电脑来说至关重要,因为用户对笔记本的耗电非常敏感。

快速开始

  1. 安装Windows 10 Pro或企业版build 18305或更高版本;

  2. 启用虚拟化:

  • 如果你使用的是物理机,确保在BIOS中启用了虚拟化功能。
  • 如果你使用的是虚拟机,请使用此PowerShell cmdlet启用嵌套虚拟化:

Set-VMProcessor -VMName -ExposeVirtualizationExtensions $true

  1. 打开Windows Features,然后选择Windows Sandbox。选择“OK”,就可以安装Windows Sandbox了。系统可能会要求你重新启动电脑。

\"\"

  1. 从“开始”菜单中找到Windows Sandbox,运行它。

  2. 从宿主操作系统复制一个可执行文件。

  3. 将可执行文件粘贴到Windows Sandbox的窗口中。

  4. 在Windows Sandbox中运行可执行文件,如果是安装程序,请继续安装。

  5. 运行应用程序并像平常一样使用它。

  6. 完成实验后,你只需关闭Windows Sandbox即可。所有Sandbox中的内容都将被丢弃并永久删除。

  7. 确认宿主操作系统中没有你在Windows Sandbox中做出的任何修改。

\"\"

总体来看,Windows Sandbox结合了虚拟机和容器的元素。Sandbox和主机操作系统之间的安全边界是靠硬件强制分隔,就像虚拟机一样。而且Sandbox和VM一样有虚拟化的硬件,在磁盘上和内存中与主机共享可执行文件。

目前,Sandbox的生命周期很短暂。它会在关闭时被销毁并重置,因此变更不会在不同Sandbox运行之间持续。 Edge浏览器虚拟机的第一个版本Sandbox工作机制类似,在后续版本中,微软对其添加了将文件从虚拟机传输到主机的支持,以便可以持久存储它们。

我们期待Windows Sandbox的类似演变。

英文原文:

转载地址:http://jfycx.baihongyu.com/

你可能感兴趣的文章
国内常用NTP服务器地址及
查看>>
Java annotation 自定义注释@interface的用法
查看>>
Apache Spark 章节1
查看>>
phpcms与discuz的ucenter整合
查看>>
Linux crontab定时执行任务
查看>>
mysql root密码重置
查看>>
33蛇形填数
查看>>
选择排序
查看>>
SQL Server 数据库的数据和日志空间信息
查看>>
前端基础之JavaScript
查看>>
自己动手做个智能小车(6)
查看>>
自己遇到的,曾未知道的知识点
查看>>
P1382 楼房 set用法小结
查看>>
分类器性能度量
查看>>
windows 环境下切换 python2 与 pythone3 以及常用命令
查看>>
docker 基础
查看>>
解决灾难恢复后域共享目录SYSVOL与NELOGON共享丢失
查看>>
eclipse集成weblogic开发环境的搭建
查看>>
写一个bat文件,删除文件名符合特定规则,且更改日期在某
查看>>
我的友情链接
查看>>