Hypervisor安全
什么是Hypervisor
Hypervisor能实现同一物理机上不同虚拟机之间的资源隔离,避免虚拟机之间的数据窃取或恶意攻击,保证虚拟机的资源使用不受周边虚拟机的影响。用户使用虚拟机时,仅能访问属于自己的虚拟机的资源(如硬件、软件和数据),不能访问其他虚拟机的资源,保证虚拟机隔离安全。
CPU隔离
x86架构为了保护指令的运行,提供了指令的4个不同特权级别,术语称为Ring,优先级从高到低依次为:
- Ring 0:被用于运行操作系统内核。
- Ring 1:用于操作系统服务。
- Ring 2:用于特权代码(具有I/O访问权限的用户程序)。
- Ring 3:用于应用程序。
各个级别对可以运行的指令进行限制:
- Hypervisor运行在Ring0。
- 虚拟机操作系统运行在Ring 1,有效地防止了虚拟机Guest OS直接执行所有特权指令。
- 应用程序运行在Ring 3上,保证了操作系统与应用程序之间的隔离。
CPU硬件辅助虚拟化的引入进一步实现了Hypervisor和虚拟机操作系统运行模式的深度隔离。
内存隔离
Hypervisor通过内存虚拟化技术来实现不同虚拟机之间的内存隔离。内存虚拟化技术在传统OS两层地址映射(“虚拟地址”到“机器地址”)的基础上,引入三层地址映射:虚拟机负责将“Guest虚拟地址”映射为“Guest物理地址”,然后Hypervisor负责将“虚拟机物理地址”映射成“机器地址”,再交由物理处理器来执行,保证了虚拟机无法直接接触实际的机器地址,只能访问Hypervisor分配给它的物理内存。
I/O隔离
Hypervisor采用分离设备模型实现I/O的虚拟化。前端负责将虚拟机的I/O请求传递到Hypervisor中的后端,后端解析I/O请求并提交给相应的设备完成I/O操作。Hypervisor保证虚拟机只能访问分配给它的I/O资源。