《访问控制模型与权限管理》
第2章 主体、客体与操作

2、主体、客体与操作:定义主体(用户/进程)、客体(资源/数据)与访问操作(读、写、执行、删除)

在访问控制模型中,主体(Subject)、客体(Object)与操作(Operation)构成了权限管理的三大核心要素。理解这三者的定义与关系,是构建安全系统的基石。

2.1 主体(Subject)—— 访问的发起者

主体是能够发起访问请求的活跃实体。在计算机系统中,主体通常分为两类:

主体类型 定义 典型示例 安全特征
用户(User) 代表真实的人或系统管理员账户 admin、zhangsan、root 通过密码、生物特征或证书认证
进程(Process) 代表正在运行的程序或服务 nginx worker、MySQL daemon、cron job 通常继承启动用户的权限,或拥有独立服务账户
主体(Subject)分类 👤 用户 自然人 / 管理员 认证后获得身份 ⚙️ 进程 程序 / 服务 继承用户权限 或

2.2 客体(Object)—— 被访问的资源

客体是系统中受保护的被动实体,即需要被保护的信息或资源。客体可以是数据、文件、设备或服务。

客体类型 定义 典型示例 保护重点
资源(Resource) 硬件或软件实体 打印机、数据库连接池、API接口 防止资源耗尽或未授权使用
数据(Data) 存储的信息内容 文件、数据库记录、内存缓冲区 机密性、完整性、可用性
客体(Object)分类 📦 资源 硬件 / 服务 / 接口 📄 数据 文件 / 记录 / 缓存 或

2.3 访问操作(Operation)—— 允许的行为

操作定义了主体可以对客体执行的具体动作。不同的系统可能定义不同的操作集,但以下四种是最基础、最通用的访问操作:

📖

读(Read)

查看、读取数据内容,但不允许修改。例如:查看文件内容、查询数据库记录。

权限标记: r
✏️

写(Write)

修改、创建或更新数据内容。例如:编辑文档、插入数据库记录。

权限标记: w
▶️

执行(Execute)

运行程序或脚本,将文件作为可执行代码加载。例如:运行 .exe 文件、调用 API。

权限标记: x
🗑️

删除(Delete)

移除或销毁客体。例如:删除文件、清空数据库表。

权限标记: d

2.4 主体-客体-操作关系模型

访问控制的核心是建立主体 → 客体 → 操作的三元组关系。以下SVG图展示了这一经典模型:

访问控制三元组模型 👤 主体 用户 / 进程 发起访问 ⚡ 操作 读 / 写 / 执行 / 删除 定义行为 📦 客体 资源 / 数据 被保护对象 请求 作用于 访问控制规则示例 主体 "zhangsan" 对 文件 "report.pdf" 拥有 读(r) + 写(w) 权限

2.5 实际应用示例

在Linux文件系统中,主体-客体-操作模型体现得最为直观。以下是一个典型的权限配置示例:

# 查看文件权限
$ ls -l /var/log/syslog
-rw-r----- 1 syslog adm 1024 Jan 15 10:30 /var/log/syslog

# 权限分解说明:
# 主体:syslog(用户)、adm(用户组)
# 客体:/var/log/syslog(文件)
# 操作:
#   - 所有者(syslog): 读(r) + 写(w)
#   - 所属组(adm):    读(r)
#   - 其他用户:       无权限
📋 权限矩阵示例 主体 ↓ 客体 → 操作 说明 admin /etc/passwd r + w 完全控制 nginx /var/www/html r + x 读取和执行

2.6 关键要点总结

  • 主体是主动方,客体是被动方,操作是连接两者的桥梁。
  • 一个主体可以对多个客体拥有不同操作权限,一个客体也可以被多个主体以不同操作访问。
  • 最小权限原则:主体只应获得完成其任务所必需的最小操作集合。
  • 操作必须明确、可审计,避免模糊的“完全控制”权限泛滥。