《访问控制模型与权限管理》
第2章 主体、客体与操作
2、主体、客体与操作:定义主体(用户/进程)、客体(资源/数据)与访问操作(读、写、执行、删除)
在访问控制模型中,主体(Subject)、客体(Object)与操作(Operation)构成了权限管理的三大核心要素。理解这三者的定义与关系,是构建安全系统的基石。
2.1 主体(Subject)—— 访问的发起者
主体是能够发起访问请求的活跃实体。在计算机系统中,主体通常分为两类:
| 主体类型 | 定义 | 典型示例 | 安全特征 |
|---|---|---|---|
| 用户(User) | 代表真实的人或系统管理员账户 | admin、zhangsan、root | 通过密码、生物特征或证书认证 |
| 进程(Process) | 代表正在运行的程序或服务 | nginx worker、MySQL daemon、cron job | 通常继承启动用户的权限,或拥有独立服务账户 |
2.2 客体(Object)—— 被访问的资源
客体是系统中受保护的被动实体,即需要被保护的信息或资源。客体可以是数据、文件、设备或服务。
| 客体类型 | 定义 | 典型示例 | 保护重点 |
|---|---|---|---|
| 资源(Resource) | 硬件或软件实体 | 打印机、数据库连接池、API接口 | 防止资源耗尽或未授权使用 |
| 数据(Data) | 存储的信息内容 | 文件、数据库记录、内存缓冲区 | 机密性、完整性、可用性 |
2.3 访问操作(Operation)—— 允许的行为
操作定义了主体可以对客体执行的具体动作。不同的系统可能定义不同的操作集,但以下四种是最基础、最通用的访问操作:
读(Read)
查看、读取数据内容,但不允许修改。例如:查看文件内容、查询数据库记录。
权限标记: r
写(Write)
修改、创建或更新数据内容。例如:编辑文档、插入数据库记录。
权限标记: w
执行(Execute)
运行程序或脚本,将文件作为可执行代码加载。例如:运行 .exe 文件、调用 API。
权限标记: x
删除(Delete)
移除或销毁客体。例如:删除文件、清空数据库表。
权限标记: d
2.4 主体-客体-操作关系模型
访问控制的核心是建立主体 → 客体 → 操作的三元组关系。以下SVG图展示了这一经典模型:
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)
# - 其他用户: 无权限
2.6 关键要点总结
- 主体是主动方,客体是被动方,操作是连接两者的桥梁。
- 一个主体可以对多个客体拥有不同操作权限,一个客体也可以被多个主体以不同操作访问。
- 最小权限原则:主体只应获得完成其任务所必需的最小操作集合。
- 操作必须明确、可审计,避免模糊的“完全控制”权限泛滥。