1. 权限模型概述:定义、目标与核心要素
做系统安全这些年,我越来越觉得权限模型就像一栋大楼的“门禁系统”。
门禁设计得好,里面的人干活顺畅,外面的人进不来。设计得不好,要么一卡就瘫痪,要么形同虚设。说白了,权限模型就是一套规则,告诉系统“谁”能对“什么资源”做“什么操作”。
为什么把这一章放在第一讲?因为你只有理解了权限模型的骨骼,后面讲数据分级、密钥控制时才知道每块螺丝拧在哪。我自己早年吃过亏——在一个金融项目里,没先梳理权限模型就急着写代码,结果重构了三版,真是血泪教训。
1.1 什么是权限模型?
定义很简单:权限模型是一组抽象规则,用来描述与执行对系统资源的访问控制。
但它不只是一张ACL(访问控制列表)表。它包含三个层次:
- 策略层:谁能干什么,在什么条件下能干。
- 机制层:怎么判断、怎么拦截、怎么审计。
- 实施层:代码中的校验逻辑、数据库里的权限表。
我习惯把权限模型比作“交通规则”。红灯停、绿灯行是规则,交警是策略执行者,摄像头是审计。三者缺一不可。你想想,如果只有规则没有执行,那和没设权限有什么区别?
1.2 权限模型的核心目标
任何权限模型都要回答三个问题:
- 正确性:该有的权限不缺失,不该有的权限不越界。
- 可审计性:每次授权、每次访问都能追溯到责任人。
- 可维护性:新增一个角色或修改一条策略时,不会牵一发动全身。
我记得在某个云计算项目里,我们用了最朴素的RBAC(基于角色的访问控制),结果运维团队天天抱怨权限变更要等审批。后来我们在模型里加了“临时角色”和“上下文条件”,问题才解决。所以你看,目标不是静态的,你要根据业务场景动态权衡。
另外还有个容易被忽略的目标——性能。如果一次权限判断要查10张表、做5次递归,那用户点击“读取”可能要等2秒。我在做高并发网关时就踩过这个坑,后来不得不引入缓存和预计算策略。
1.3 核心要素拆解
一个完整的权限模型由六个核心要素组成。下面这张图能帮你快速建立整体认知:
这张图展示了我最常使用的六要素模型。每个要素的解释如下:
| 要素 | 说明 | 例子 |
|---|---|---|
| 主体(Subject) | 主动发起访问的实体 | 用户、服务账号、设备 |
| 客体(Object) | 被访问的资源或数据 | 文件、数据库表、API接口 |
| 操作(Operation) | 主体对客体执行的动作 | 读、写、删除、执行 |
| 策略(Policy) | 将主体、客体、操作以及环境条件组合起来的规则集合 | “管理员可以写任何文件,但在下班后需要二次认证” |
| 环境(Environment) | 独立于主体和客体的外部因素 | 时间、网络IP、设备指纹 |
| 上下文(Context) | 与当前请求相关的动态信息 | 请求来源、会话状态、地理区域 |
1.4 常见权限模型一览
基于上述六要素,业界演化出多种经典模型。我做了一个横向对比表格,方便你快速掌握差异:
| 模型名称 | 核心思想 | 典型场景 | 维护成本 |
|---|---|---|---|
| DAC(自主访问控制) | 资源所有者可自行授权 | 文件共享系统、个人云盘 | 低(但易扩散) |
| MAC(强制访问控制) | 系统根据标签强制判定 | 军事系统、等级保护 | 高(需要严格的分类分级) |
| RBAC(基于角色) | 角色赋予权限,用户分配角色 | 企业ERP、OA系统 | 中(角色爆炸时需要治理) |
| ABAC(基于属性) | 用属性规则动态计算权限 | 金融风控、多云环境 | 高(引擎性能要求高) |
我个人最推崇ABAC的灵活性,但它的复杂性也让我吃过苦头。记得在某个医疗项目中,我们用了ABAC + 属性缓存,结果由于属性规则未收敛,策略引擎在高峰时段CPU飙升到90%。后来我们加了一层RBAC作为“粗粒度拦截”,ABAC只做精细判断,性能才稳定下来。所以没有银弹,你得根据业务规模做组合设计。
1.5 数据分级与密钥控制的初步关联
你可能会问:”这节课是讲权限模型,为什么标题里还有数据分级和密钥控制?”
其实这三者是一体两面。权限模型解决的是“谁能访问”,数据分级解决的是“数据价值有多高”,密钥控制解决的是“如何安全地传递访问凭证”。
举个例子:银行系统里客户信息是“高敏感”数据(数据分级高),那么权限模型必须要求主体具备“客户经理”角色+在“办公时间”+从“内网IP”才能读取。而密钥控制则确保传输过程中数据被加密,即使中间人截获了也无法解密。你看,缺一不可。
我在设计这套课程体系时,先铺权限模型,再讲数据分级,最后讲密钥控制,就是希望你能建立从“规则”到“标签”再到“钥匙”的完整链路。开个好头,后面就不容易走偏。
- 权限模型 = 一套描述与实施访问控制的抽象规则。
- 核心目标:正确性、可审计性、可维护性、性能。
- 六要素:主体、客体、操作、策略、环境、上下文。
- 常见模型:DAC、MAC、RBAC、ABAC,各有取舍。
- 数据分级和密钥控制是权限模型的落地延伸,后续章节会深度绑定。