CH6 访问控制机制与技术
鉴别解决"你是谁",访问控制解决"你能干什么" · 按「概念 → 机制 → 模型」讲透 · 配套作业2(含 ACL/能力表、BLP/Biba、RBAC 等重点)
🎯学习目标
读完这一章,你应该能回答:
- 什么是标识、鉴别、授权?访问控制的三元组 (S, A, O) 是什么?
- 访问控制有哪些实现机制?ACL 和能力表有什么区别?(必考)
- 三大类访问控制模型 DAC / MAC / RBAC 各是什么、各有何特点?
- BLP 和 Biba 模型分别保护什么、规则是"上读下写"还是"下读上写"?(必考)
- RBAC 的用户→角色→权限思想,以及 TCSEC/CC 评估标准。
1访问控制的基本概念
鉴别(CH5)解决的是"你是谁";访问控制解决的是"你能干什么"。它是针对越权使用资源的防御措施。
🎯 目标
🛡️ 防的是两种"非法"
非法用户用资源
没有权限的人/程序,根本不该进来用系统资源。
合法用户非法使用
越权:合法用户做了不该做的事(如出纳员偷改别人余额)。
未授权访问包括:未经授权的使用、泄露、修改、销毁信息以及颁发指令等。访问控制对 机密性、完整性、可用性(CIA) 都有支撑作用。
🔺 访问三元组 (S, A, O)
| 元素 | 名称 | 说明 | 例子 |
|---|---|---|---|
| S | 主体 Subject(发起者) | 主动实体,操作被动实体的信息/数据 | 用户、程序、进程 |
| O | 客体 Object(目标) | 被动实体,被操作对象、需保护的资源 | 文件、目录、数据库、外设、进程 |
| A | 访问 Access | 对资源的使用操作 | 读、写、修改、删除、执行 |
2标识、授权、两个过程与 AAA
🪪 标识(Identification)
标识是实体身份的一种计算机表达,每个实体与计算机内部的一个身份表达绑定。
| 类型 | 实例 |
|---|---|
| 主体标识 | UNIX 中用户身份号 UID(0~65535 的整数);用户名、卡、令牌;指纹、虹膜等生物特征 |
| 客体标识 | 文件名、文件描述符/句柄、文件分配表条目;UNIX 四种文件标识:inode、文件描述符、绝对路径名、相对路径名 |
🔑 授权(Authorization)
规定主体可以对客体执行的操作:读写执行拒绝访问
📶 访问控制的两个重要过程(顺序很重要)
⬇️ 最小特权原则(Least Privilege)
🔗 AAA 与其他安全机制的关系
Authentication 鉴别
身份鉴别是访问控制的前提Authorization 授权
决定主体能对客体做什么Audit 审计
记录追踪,常与入侵检测联系- 机密性:限制读取 → 实现数据机密。
- 完整性:限制修改 → 实现数据完整性保护。
- 可用性:限制资源使用量 → 保证系统可用。
3访问控制的实现机制 ⭐
访问控制信息(ACI)包括:主体属性、客体属性、政策规则。常见实现方法有:访问控制矩阵、ACL、能力表、授权关系表、安全标签、锁与钥匙等。
两类一般实现机制:① 基于访问控制属性(访问控制表/矩阵);② 基于用户和资源分级("安全标签",多级访问控制)。
📊 访问控制矩阵
用三元组表示:主体集合 S、客体集合 O、操作集合 A,矩阵 M = S × O → 2^A。行=主体,列=客体,元素=权限。
| 客体 x | 客体 y | 客体 z | |
|---|---|---|---|
| 主体 a | R、W、Own | R、W | |
| 主体 b | R | R、W、Own | |
| 主体 c | R | ||
| 主体 d | R、W | R、W |
✂️ 矩阵的两种拆分方式
🏷️ 其他实现
- 授权关系表:把矩阵中非空的 (主体, 权限, 客体) 三元组逐条列出。
- 访问控制安全标签:给主体和客体分别打安全级别标签(绝密/机密/秘密/未分类),用于多级访问控制。
- 锁与钥匙:客体用密钥加密(锁),主体拥有解密钥匙(钥匙)。同时具有 ACL 与能力表特征,并具有动态性。
4ACL vs 能力表(核心对比 · 必考)⭐
这是作业2的高频考点。一句话记忆:
访问控制表 ACL
Access Control List · 与客体关联每个客体附加一个"能访问它的主体明细表"。
例:oj: s0.r | s1.e | s2.rw
能力表 Capability List
Capability List · 与主体关联每个主体附加一个"它能访问的客体明细表"。
表示形式:用户 Profile、授权/属性证书。
| 对比项 | 访问控制表 ACL | 能力表 CL |
|---|---|---|
| 拆分方式 | 按列(客体) | 按行(主体) |
| 关联 / 保存位置 | 客体 | 主体 |
| 记录内容 | 谁能访问这个客体 | 这个主体能访问什么 |
| 得到某客体所有权限 | 容易 | 困难 |
| 得到某主体所有权限(浏览) | 困难 | 容易 |
| 访问权限传递 | 困难 | 容易 |
| 访问权限回收 | 容易 | 困难 |
| 适用系统 | 集中式系统 | 分布式系统 |
解决:引入用户组(用户可属于多个组),主体标识=主体.组名。如
Fang.INFO.rw(INFO 组的 Fang 有读写),*.INFO.e(INFO 组所有用户可执行),*.*.r(所有用户可读)。
🎮 小练习:把"特征"和"它属于谁"连起来
先点左边一个特征,再点右边对应的机制。连对会变绿。
5访问控制模型分类总览
访问控制模型 = 对一系列访问控制规则集合的描述(可形式化或非形式化)。三大类:
模型
6自主访问控制 DAC
✅ 特点
| 优点 | 缺点 |
|---|---|
| 灵活、易用、可扩展;根据主体身份与权限决策;具备某种能力的主体可自主把权限子集授予其他主体;被大量采用,常用于商业系统 | 安全性不高;信息传递过程中访问权限关系会被改变 |
⚠️ 两大安全隐患(必考)
无法控制信息流动
用户 A 可把对客体 O 的访问权传递给用户 B,使本来无权的 B 也能访问 O——信息流不可控。
特洛伊木马威胁
木马附在合法程序中,以你的权限偷偷做坏事而不被发现(如把 /etc/passwd 邮件发给黑客)。
/tmp/ls 里写:先把 /etc/passwd 邮件发给黑客,再调用真正的 /bin/ls。如果用户的 PATH 不安全(把 ./ 放最前),在 /tmp 下敲 ls 就会运行木马,而用户毫无察觉。DAC 管不住这种"借合法用户之手"的攻击。
🧩 访问许可 vs 访问模式
| 概念 | 含义 |
|---|---|
| 访问许可 | 主体对客体的控制权——改变访问模式、或把这种能力传给别人。类型:等级型 / 有主型(Owner,属主唯一有权改 ACL)/ 自由型 |
| 访问模式 | 主体对客体的访问权——读-拷贝 / 写-删除更改 / 运行 / 无效 |
🐧 实例
例:
drwxr-x--x 2 Fang work 1024 ... text——后 9 位 rwxr-x--x 规定所有者/所属组/其他用户各 3 位权限。用 chmod(改权限)、chown(改属主)修改。权限也可用 8 进制表示:
rwx=111=7。
7强制访问控制 MAC
🏷️ 安全级别
未分类 Unclassified < 秘密 Confidential < 机密 Secret < 绝密 Top Secret
(中文军用对照:普密 < 秘密 < 机密 < 绝密)。只有主客体安全级别满足规则时才允许访问。
🔀 四种访问方式(关键)
把主体、客体分级,"写"代表信息流动方向,通过梯度安全标签实现单向信息流:
| 方式 | 定义(主体 vs 客体级别) |
|---|---|
| 下读 Read Down | 主体级别 高于 客体,允许读(低级别用户不能读高敏感信息) |
| 上读 Read Up | 主体级别 低于 客体,允许读 |
| 下写 Write Down | 主体级别 高于 客体,允许写 |
| 上写 Write Up | 主体级别 低于 客体,允许写(不允许高敏感信息写入低敏感区) |
② 上读 / 下写 → 实现完整性(Biba)。
8BLP 模型 vs Biba 模型(核心 · 必考)⭐
这两个模型在数学上是对偶关系,箭头方向正好相反。务必记牢规则和应用。
BLP 模型
Bell-LaPadula · 1973规则:下读 / 上写
(不上读、不下写)
应用:防火墙
Biba 模型
Biba · 1977规则:上读 / 下写
(不下读、不上写)
应用:Web 服务器
🔒 BLP 模型(保密性)—— 下读 / 上写
✅ Biba 模型(完整性)—— 上读 / 下写
| 模型 | 时间 | 保护目标 | 规则 | 典型应用 |
|---|---|---|---|---|
| Bell-LaPadula (BLP) | 1973 | 机密性 | 下读 / 上写(不上读、不下写) | 防火墙 |
| Biba | 1977 | 完整性 | 上读 / 下写(不下读、不上写) | Web 服务器 |
🧩 其他强制模型
| 模型 | 时间 | 说明 |
|---|---|---|
| Clark-Wilson | 1987 | 以事务处理为基本操作的完整性模型,应用于多种商业系统 |
| Chinese Wall(Brewer-Nash) | 1989 | 同等考虑保密性与完整性,主要解决商业利益冲突 |
| Lattice(格)模型 | — | 主体安全级别高于客体才能访问(下读、下写) |
⚖️ DAC vs MAC 对比
| 自主访问控制 DAC | 强制访问控制 MAC | |
|---|---|---|
| 控制粒度 | 细 | 大 |
| 灵活性 | 高 | 不高 |
| 配置效率 | 低 | — |
| 安全性 | 低 | 强 |
| 谁控制权限 | 客体属主 | 系统管理员(强制) |
9基于角色的访问控制 RBAC(重点 · 必考)⭐
由 NIST 的 Ferraiolo 等人于上世纪 90 年代提出,1996 年提出较完善的参考模型 RBAC96。
💡 核心思想
🔗 用户-角色-权限三层连线图
🧱 核心元素
| 元素 | 说明 |
|---|---|
| 用户 User | 访问计算机资源的主体,集合 U |
| 角色 Role | 一种岗位,代表资格、权利和责任,集合 R |
| 权限 Permission | 对客体的操作权力(权限 = 操作 + 客体),集合 P |
| 会话 Session | 用户访问时必须先建立的会话;一次会话仅对应一个用户,但可激活多个角色 |
权限分配 PA(Permission Assignment):角色 ↔ 权限(权限 p 与 r 关联后 r 拥有 p)。
激活角色:角色只有通过会话激活才起作用。
🔀 多对多关系
- 用户↔角色:一个用户可有多个角色,一个角色可给多个用户。
- 角色↔权限:一个角色可有多个权限,一个权限可给多个角色。
- 权限内部:每个操作可施加于多个客体,每个客体也可接受多个操作。
🏦 银行实例
| 角色 | 核心权限 |
|---|---|
| 出纳员 | 允许修改顾客账号记录 |
| 分行管理者 | 修改记录 + 创建/终止账号 |
| 顾客 | 只允许查询自己的账号 |
| 系统管理者 | 开关系统,但不能读/改用户账号信息 |
| 审计员 | 读系统中任何数据,但不能修改任何事 |
⚙️ 高级特性
角色继承
子角色继承父角色许可,避免重复设置(类似面向对象的类)角色互斥
某些操作一个用户不能同时做(静态/动态互斥)→ 实现职责分离角色基数限制
某角色在某时段只能由一定人数的用户占用📦 RBAC96 系列模型
🎮 小练习:把模型与规则连起来
先点左边一个模型,再点右边对应的描述。
👍 RBAC 的优点
- 便于授权管理(人员变动只改角色分配,甚至要几个角色到场才能改系统设置,增强安全)。
- 便于处理工作分级(资源分级管理)。
- 容易实现各种安全策略,如最小特权、职责分离。
- 便于任务分担(不同角色完成不同任务)。
10操作系统中的访问控制 & 评估标准
📕 TCSEC 橘皮书
🌈 彩虹系列 & CC 通用准则
🌐 集中式 vs 非集中式访问控制
集中式
RADIUS、TACACS、TACACS+、Diameter 等协议,由中心统一鉴别授权。
非集中式
域(Domain):一个信任范围/共享安全策略的主客体集合。各域独立,跨域访问需建立信任关系(可单向或双向)。
11本章小结
- 访问控制解决"你能干什么",三元组 (S, A, O),先鉴别后授权,遵循最小特权原则;防"非法用户用资源"和"合法用户非法使用"。
- 标识作用:访问控制 + 审计;AAA = 鉴别 / 授权 / 审计。
- 实现机制:访问矩阵 → 按列拆=ACL(贴客体)、按行拆=能力表(贴主体);还有安全标签、锁与钥匙。
- 三大模型:
- DAC:属主自定,灵活但安全性低,怕信息流不可控和木马。
- MAC:管理员强制定,安全性强。BLP 保密性(下读上写,应用防火墙)、Biba 完整性(上读下写,应用 Web 服务器)。
- RBAC:用户→角色→权限,UA/PA 多对多,支持继承/互斥/职责分离。
- 评估标准:TCSEC 橘皮书(A/B/C/D 四类八级,通用 OS 为 C2 级)→ 彩虹系列 → CC 通用准则。
📄 配套作业2 📘 关联 CH5 鉴别技术 📗 关联 CH4 技术体系
⭐重点例题(作业2 本章相关 · 详解)
下面把作业2中与访问控制相关的题目(含选择/填空/判断/简答/案例)逐题讲透。
(1) 为何用 RBAC:医院角色固定、人员多且流动大,用角色管理权限便于授权、便于人员换岗。至少五类角色:医生(读写本科室病历、开处方)、护士(读病历、录入护理记录,不能开处方)、收费人员(读费用相关、不能看完整病历)、系统管理员(管系统配置,不能读病历内容)、审计员(只读全部操作日志、不能改)。
(2) 最小特权 & 职责分离:每个角色只给职责所需权限(如收费看不到诊断细节);用角色互斥实现职责分离(如审计员与医生角色互斥,开方与审计不能同人)。
(3) 高敏感病历是否结合 MAC:需要。对特别敏感的病历(如传染病/名人病历)打安全标签,用强制访问控制保证即使属主也不能私自放权,按 BLP 的"不上读/不下写"防止泄密,RBAC+MAC 结合兼顾灵活与强安全。
🎯自测(点击展开参考要点)
访问控制的三元组是什么?先做什么后做什么?
ACL 和能力表分别贴在谁身上?浏览/传递/回收哪个容易?
DAC 的两大安全隐患是什么?
BLP 和 Biba 各保护什么?规则和应用分别是什么?
某 Web 服务器希望"公网用户只能读、不能改"内容,应选哪个模型?
RBAC 的四个核心元素?两个关联叫什么?
大多数通用操作系统(Windows/Linux)的 TCSEC 安全级别是?用什么访问控制?
CH6-访问控制.md。
📝强化题库(35 选择 + 35 填空 = 70 题)
覆盖本章全部知识点,含 【作业举一反三】 变体题(给场景判断用 BLP 还是 Biba、判断上读下写等)。选择题点选即时判分;填空题输入后点"检查"或"显示答案"。