7.5 文件保护

L45

学习目标

文件保护通过访问矩阵和访问控制确保文件不被非法访问和修改。

  • 保护域(Protection Domain):定义进程可访问的资源集合,进程在域中执行操作。
  • 访问矩阵:行代表域,列代表对象,矩阵元素为允许的操作(读/写/执行)。
  • 访问矩阵的实现:访问控制表(按列存储,每个对象的访问权限)和访问权限表(按行存储,每个域的权限)。

原理 · 深入理解

7.5 文件保护

本节概览:先建立「文件保护」的框架,再依次展开下列小节。

  1. 保护域(Protection Domain)
  2. 访问矩阵
  3. 访问矩阵的修改
  4. 访问矩阵的实现

7.5.1 保护域(Protection Domain)

为对资源进行保护而引入保护域(简称「域」)的概念:域是进程对一组对象访问权的集合,进程只能在指定域内执行操作。这样,域就规定了进程所能访问的对象和能执行的操作。

进程和域间的动态联系方式:进程在运行过程中可从一个域切换到另一个域,从而按需改变访问权集合,实现最小权限原则。

切换不是任意的,必须作为一种权力加以控制:只有当进程具备切换权时,才允许从当前域切换到目标域。

图7-17 三个保护域 域 D1 域 D2 域 D3 进程在某个域中执行,域规定可访问哪些对象
图7-17 三个保护域

为对系统中的对象加以保护,应由系统控制进程对对象的访问。对象可以是硬件对象(如磁盘驱动器、打印机),也可以是软件对象(如文件、程序);对对象施加的操作也不同,如对文件可读、写或执行。

把一个进程能对某对象执行操作的权力称为访问权(Access right)。

进程和域之间可以一一对应,即一个进程只联系一个域,称为「静态域」。进程运行的全过程都限于同一域,这会使赋予进程的访问权超过实际需要。

进程和域之间也可以是一对多关系:将进程运行分为若干阶段,每个阶段联系一个域,从而可按运行实际需要规定每个阶段所能访问的对象。

7.5.2 访问矩阵

可用一个矩阵描述系统的访问控制,称为访问矩阵(Access Matrix)。行代表域,列代表对象,矩阵中每一项由一组访问权组成。

由于对象已由列显式定义,可只写访问权而不必写出对哪个对象的访问权。每一项 access(i, j) 定义了在域 Di 中执行的进程能对对象 Qj 所施加的操作集。

图7-18 一个访问矩阵 域 \ 对象 F1 F2 D1 rw r D2 w
图7-18 一个访问矩阵

为实现进程和域间的动态联系,应能让进程从一个保护域切换到另一个保护域。切换也作为一种权力加以控制,仅当进程有切换权时才能进行。

为此,在访问矩阵中又增加几个对象,分别把它们作为访问矩阵中的几个域;当且仅当 switch ∈ access(i, j) 时,才允许进程从域 i 切换到域 j。

图7-19 具有切换权的访问控制矩阵 F1 D2 D1 rw switch
图7-19 具有切换权的访问控制矩阵

7.5.3 访问矩阵的修改

拷贝权和所有权都用于改变矩阵内同一列(同一对象在不同域中)的访问权;控制权(Control Right)则用于改变矩阵内同一行(同一域对不同对象)的访问权。

若 access(i, j) 中包含控制权,则在域 Di 中运行的进程可以删除在域 Dj 中运行的进程对各对象的任何访问权。

图7-20 具有拷贝权的访问控制矩阵 F1 F2 D1 rw* r D2 w
图7-20 具有拷贝权的访问控制矩阵

拷贝权(Copy Right):用于将在某个域中所拥有的访问权 access(i, j) 扩展到同一列的其它域中,即给进程在其它域中也赋予对同一对象的访问权 access(k, j)。

图7-21 带所有权的访问矩阵 F1 F2 D1 owner rw D2 r w
图7-21 带所有权的访问矩阵

所有权(Owner Right):不仅要求能将已有访问权有控制地扩散,还要能增加或删除某种访问权。利用所有权 (O) 可实现这些操作——拥有者可自由增删对自己对象的各种访问权。

图7-22 具有控制权的访问矩阵 D1 D2 D1 control D2 control
图7-22 具有控制权的访问矩阵

7.5.4 访问矩阵的实现

访问控制表(Access Control List,ACL):对访问矩阵按列(对象)划分,为每一列建立一张 ACL。表中把矩阵中属于该列的所有空项删除,由有序对(域,权集)组成。

由于大多数情况下矩阵中空项远多于非空项,使用 ACL 可显著减少所占存储空间,并提高查找速度。

访问权限表(Capabilities):把访问矩阵按行(域)划分,每一行构成一张访问权限表,即一个域对每个对象可执行的一组操作所构成的表。

表中每一项即该域对某对象的访问权限。当域为用户(进程)、对象为文件时,访问权限表可描述一个用户对每个文件所能执行的一组操作。

图7-23 访问权限表 进程 权限 P1 read F P2 write F
图7-23 访问权限表

做 · 交互动画

  • 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。

文件保护

用控件单步操作;日志区记下每一步发生了什么。

总结与提升

  • 能举出嵌入式简化保护的一种做法。
  • 能用自己的话复述学习目标,并指出概念与板上实验的对应。

延伸思考

  • 多租户物联网网关为何又要细粒度 ACL?
  • 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?

← 本阶段封面 · 课程列表