【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

微软推出 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:193095
用户头像

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

关注

评论 1 条评论

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

数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年3月刊

墨天轮

MySQL 数据库 oracle postgresql 国产数据库

第二届“鼎新杯”数字化转型应用大赛申报通道正式开启

信通院IOMM数字化转型团队

数字化转型 鼎新杯

技术分享 | 如何迅速将分布式政企应用转型为云原生微服务架构

IT科技苏辞

华为云智能编程助手助力哈尔滨工业大学(深圳)学子,引领软件研发新趋势

爱尚科技

搭建数据驱动的技术底座,助力企业数智化变革

用友BIP

技术大会 用友iuap 用友技术大会 升级企业数智化底座

2023 寻找企业出海“新势力”

Jessie

企业出海 出海

ReentrantLock和Synchronized使用与区别,多线程安全问题

共饮一杯无

synchronized ReentrantLock 三周年连更

解决流水线瓶颈、提升编码效率的五个方法(上篇)

龙智—DevSecOps解决方案

ci cicd 持续集成 流水线

低代码平台概念及实操

这我可不懂

低代码 应用开发 JNPF

全面拥抱Serverless,腾讯云大数据Elasticsearch开启云原生新范式

科技热闻

打造安全无忧软件应用的十大最佳实践

龙智—DevSecOps解决方案

软件开发 软件开发安全

研究思考丨关于软件复杂度的困局

阿里巴巴云原生

阿里云 云原生 复杂度

华为云智能编程助手助力哈尔滨工业大学(深圳)培养新时代软件研发人才

爱尚科技

【Meetup回顾第1期】竟是这样的国产数据库,YashanDB技术内幕曝光

YashanDB

selenium源码通读·6 |webdriver/common/alert.py-Alert类分析

Python 源码 自动化测试 selenium

云服务是什么意思?有什么用?

行云管家

云计算 云服务

分布式政企应用如何快速实现云原生的微服务架构改造

IT科技苏辞

爆肝一月!527页文档详解SpringCloud微服务和分布式系统实践

Java你猿哥

数据库 分布式 SSM框架 微服务设计

SOA/ESB架构升级之路:从微服务到ServiceMesh,再到Sermant

IT科技苏辞

涅槃重生!字节大牛力荐大型分布式手册,凤凰架构让你浴火成神

Java你猿哥

架构 分布式架构 凤凰架构

关于自托管环境,您了解多少?

龙智—DevSecOps解决方案

Atlassian Data Center

600+ 道 Java面试题及答案整理(建议收藏)

会踢球的程序源

Java 面试 java面试 应届生 Java八股文

2023最新整理上千道Java面试攻略,近500页PDF文档

会踢球的程序源

Java 面试 找工作 java面试 应届生

总结年初到 10 月底 Java 基础、架构面试题,共计 1327 道!涵盖蚂蚁金服、腾讯、字节跳动、美团、拼多多等等一线大厂!

三十而立

崖山科技通过CMMI3级认证,研发管理能力获国际权威认可!

YashanDB

白嫖!字节跳动 Java岗顶级面试解析(2023版),GitHub巅峰神作!

三十而立

分布式文件系统FastDFS

会踢球的程序源

Java fastdfs 分布系统

运维审计录像的作用是什么?用什么软件好?

行云管家

堡垒机 运维审计 审计录像

华为云智能编程助手赋能高校,揭示行业发展新动向

爱尚科技

阿里,快手,拼多多等 7 家大厂 Java 面试真题,Java 笔试题及答案详解

三十而立

仅凭这份 Java 大纲笔记,我如愿拿到了阿里 offer。

三十而立

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