第6章 保护、安全与虚拟化¶
保护机制回答“主体可以对客体做什么”,安全则进一步关心系统在漏洞、恶意输入和错误配置下能否维持机密性、完整性与可用性。虚拟机和容器利用这些机制,在一台物理机上创建多个相互隔离的运行环境。
从最小权限出发¶
如果一个文本解析器只需要读取一个输入文件,它就不应同时拥有修改系统配置、监听任意端口和读取所有用户密钥的能力。最小权限原则不是一句口号,而是要把权限边界落实到用户身份、进程凭据、文件权限、能力、系统调用过滤和隔离环境中。
保护与虚拟化可以从两类边界理解:
| 边界 | 主要问题 | 代表机制 |
|---|---|---|
| 访问边界 | 当前主体能否对目标执行某操作? | 特权级、页表权限、ACL、capability |
| 资源视图边界 | 当前环境能看见和使用哪些资源? | namespace、cgroup、虚拟硬件 |
边界越多并不自动越安全。如果不同层策略互相矛盾、默认权限过宽或共享内核存在漏洞,攻击路径仍可能贯穿多个层次。设计时要先建立威胁模型,再选择足以覆盖它的最小机制集合。
小结目录¶
- 保护机制与系统安全:从访问控制矩阵出发,连接用户/组、ACL、capability、认证、审计、漏洞缓解和威胁建模。
- 虚拟机与容器:比较硬件虚拟化、半虚拟化、namespace、cgroup、镜像和容器逃逸边界。
学完应能回答¶
- 用户态/内核态边界与文件权限分别保护什么?
- ACL 与 capability 的授权方向有何不同?
- 为什么认证成功不等于获得所有操作授权?
- 虚拟机和容器分别共享什么、隔离什么?
- 容器为什么不是“轻量虚拟机”的完全同义词?
与前面章节的联系¶
页表权限隔离地址空间,调度器和 cgroup 控制 CPU 份额,文件系统权限保护持久化对象,系统调用入口实施参数检查,namespace 改变进程看到的资源视图。虚拟化不是独立附加层,而是对前面机制的重新组合。
阅读时可以持续追问三件事:谁在实施检查、检查所依据的身份和策略存在哪里、检查通过后获得的是一次操作还是可继续传递的对象引用。这样能把零散的权限位、文件描述符和容器配置放进同一模型。