即刻获取 HarmonyOS应用开发者基础/高级认证 了解详情
写点什么

微软推出 Windows Sandbox:可安全运行任何应用的一次性 VM

  • 2018-12-20
  • 本文字数:3091 字

    阅读完需:约 10 分钟

微软推出Windows Sandbox:可安全运行任何应用的一次性VM

几个月前,微软在即将推出 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 的类似演变。


英文原文:https://techcommunity.microsoft.com/t5/Windows-Kernel-Internals/Windows-Sandbox/ba-p/301849


2018-12-20 14:193238
用户头像

发布了 731 篇内容, 共 443.5 次阅读, 收获喜欢 2000 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

重磅:香港大学经管学院副院长沈海鹏博士出任望繁信科技首席顾问!

望繁信科技

大数据 数字化转型 流程挖掘 流程智能

AI大模型快速生成题库-助力业务人效提升10+倍

京东科技开发者

行云堡垒V7.4新特性

行云管家

Go语言中高效使用Redis的Pipeline

左诗右码

Go

3款让工作效率翻倍的神器!一键轻松搞定PDF转PPT!

职场工具箱

效率工具 职场 PPT 办公软件 AI生成PPT

公链大变局:ETH老态龙钟,SOL势如破竹

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 NFT开发 公链开发

电商搜索革命:大模型如何重塑购物体验?

京东科技开发者

DeFi质押流动性挖矿系统逻辑开发方案

V\TG【ch3nguang】

【YashanDB知识库】共享集群YAC换IP

YashanDB

yashandb 崖山数据库 崖山DB

TapData 信创数据源 | 国产信创数据库 TDengine 数据同步指南,加速国产化进程,推进自主创新建设

tapdata

一文讲清 API 接口的概念、设计和实现

Noah

Coze插件发布!PDF转Markdown功能便捷集成,打造你的专属智能体

合合技术团队

人工智能 PDF

和鲸携手山东大学数字人文实验室,推动新文科与人工智能融合发展

ModelWhale

探索顶级PDF水印API:PDFBlocks(2024年更新)

幂简集成

API PDF水印

第二届海南大数据创新应用大赛 - 算法赛道冠军比赛攻略_海南新境界队

阿里云天池

FinClip助力国产操作系统生态建设

Geek_2305a8

DeFi质押合约DAPP系统开发架构逻辑方案(成熟代码)

V\TG【ch3nguang】

家庭责任增加的挑战:开发的体育直播平台如何维持年轻用户?

软件开发-梦幻运营部

数字货币发行项目开发基本要求及模式创建与海外宣发策略

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 NFT开发 公链开发

【YashanDB知识库】生成迁移报告失败,"报错未知类型错误异常:"

YashanDB

yashandb 崖山数据库 崖山DB

4大要点助你选择室内LED显示屏

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家 户内led显示屏

使用代理IP有风险吗?

IPIDEA全球HTTP

代理IP

行云堡垒-幽影护企业数据安全!

行云管家

数字化 数据安全 企业数据

一汽集团数据专家分享:实时数据技术在汽车行业的应用与实践经验

tapdata

云解析的智能线路是什么意思?有什么实际用途?

国科云

小程序容器加速构建一体化在线政务平台

Geek_2305a8

测试环境治理之MYSQL索引优化篇

京东科技开发者

TIANCHI工业 AI- 第 10 名思路分享

阿里云天池

大航杯智造扬中电力AI大赛RANK6思路总结

阿里云天池

华为云联创营CIO领航班第一期:数字化转型与AI赋能的深度探索

科技热闻

数智重庆.全球产业赋能创新大赛总决赛极客奖队伍比赛攻略_球球君

阿里云天池

微软推出Windows Sandbox:可安全运行任何应用的一次性VM
_容器_Hari Pulapaka_InfoQ精选文章