
# 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资源。
