技术实践笔记 · 2026-08-23
后台系统的权限模型,是很多团队"能用就行、上线再补"的环节。可真到出了权限事故——普通员工翻到了全量数据、离职账号还能登录——再回头改权限体系,成本就大了。这篇结合我做过的一些后台系统实践,聊清楚两件事:为什么权限设计要以最小权限原则为底座,以及 RBAC 和 ABAC 到底该怎么选。
一、最小权限原则为什么是安全底座
最小权限原则(Principle of Least Privilege)的核心一句话:每个主体只拥有完成本职工作所需的那部分权限,不多给一分。
为什么它是底座?因为大部分权限事故,不是"该有的没有",而是"不该有的给了":
- 全量导出风险:能看全部,往往意味着能导全部;
- 责任无法界定:人人都有查看权,出了事查无可查;
- 攻击面放大:权限越大,被攻破或滥用时波及的范围越大。
权限模型设计得好不好,不是看能配多少角色,而是看默认情况下权限有多收敛。最小权限原则,就是所有模型共同的出发点和验收标准。
二、RBAC:基于角色的访问控制
RBAC(Role-Based Access Control)是目前应用广泛的一类模型,核心是把"权限"和"人"解耦,中间加一层"角色":
- 管理员定义角色(如:运营、财务、审计);
- 每个角色绑定一组权限(能看哪些菜单、能操作哪些资源);
- 用户被分配到角色,继承角色下的权限。
适用场景:组织架构稳定、岗位职责清晰、权限粒度到"模块/功能"就够用的系统。优点是模型直观、管理成本低、审计也方便——直接看用户属于哪个角色就行。
局限:当权限需要"更细的粒度"时,RBAC 会显得笨重。比如"运营角色的 A 员工能看到华东区的数据,B 员工不能"——如果给 B 单独建一个角色,角色数量会爆炸式增长,这是 RBAC 的典型瓶颈。
三、ABAC:基于属性的访问控制
ABAC(Attribute-Based Access Control)不绑定角色,而是基于"属性"和"策略"做动态判定。属性分四类:
- 主体属性:用户 ID、部门、职级、所在地区;
- 资源属性:数据所属部门、敏感级别、创建人;
- 环境属性:时间、IP、设备、是否内网;
- 操作属性:查看、编辑、导出、删除。
判定时用一条策略表达式描述,例如:部门=华东区 AND 操作=查看 AND 数据.敏感级别≤2。满足条件才放行。
优势:粒度可以很细,同一角色的人也能按属性差异得到不同权限;权限可以随数据、环境动态变化,不用频繁建角色。
代价:模型更复杂——策略要设计、要维护、要测试;判定引擎有性能开销;对"谁能拿到什么权限"的可见性变差,排查权限问题时不如 RBAC 直观。
四、RBAC vs ABAC 一张表对比
| 维度 | RBAC | ABAC |
|---|---|---|
| 授权依据 | 角色(静态归属) | 属性 + 策略(动态判定) |
| 粒度 | 模块 / 功能级 | 可到字段 / 数据行级 |
| 灵活性 | 新增场景要建角色 | 改策略即可,动态适配 |
| 管理成本 | 低,直观 | 高,需专人维护策略 |
| 性能开销 | 低(查表即可) | 中(需策略引擎计算) |
| 排查审计 | 看角色即可定位 | 需要还原策略判定过程 |
| 适用规模 | 中小团队、岗位稳定 | 大组织、数据跨区域、规则复杂 |
五、实践里怎么选
我的经验是:多数系统应该从 RBAC 起步,把 ABAC 留给真正需要它的场景。具体判断看三点:
- 看粒度需求:权限只到"能不能进这个菜单",RBAC 足够;要管到"某条数据谁能看",考虑 ABAC 或 RBAC+数据范围补充。
- 看组织规模:几十人、几百人的团队,角色数量可控,RBAC 简单可靠;几千人、多区域、跨组织的复杂结构,纯 RBAC 的角色爆炸会压垮管理。
- 看变化频率:权限规则常年稳定,RBAC 够用;规则随业务频繁调整、或同一角色内权限差异大,ABAC 的策略化才有优势。
还有一种常见的折中:RBAC 管"能不能用这个功能",再用"数据范围/属性条件"做第二层过滤。比如角色决定能不能看客户模块,再看"数据.所属部门 = 当前用户部门"决定具体能看哪些客户。很多系统这样混搭,既保住 RBAC 的直观,又拿到细粒度。
六、落地时容易忽略的几个点
- 默认拒绝:新权限、新数据默认不可见,只有显式授权才开放,而不是默认全开再一个个关。
- 权限变更要留痕:谁在什么时候给谁加了什么权限,本身就要记审计日志,和业务日志一样重要。
- 离职即回收:账号禁用与权限回收要联动,别让离职账号带着权限继续躺在系统里。
- 别绕过应用直连数据库:权限逻辑写在应用层才有意义,绕过应用直连数据库,再好的模型也形同虚设。
- 先评审后上线:权限模型上线前做一轮"最小权限评审",用真实场景逐条验证,比上线后补救省事得多。
权限模型没有银弹,RBAC 和 ABAC 也谈不上谁取代谁。把最小权限原则当底座,按粒度、规模、变化频率去选,再用"默认拒绝 + 全程留痕 + 离职回收"把漏洞堵住,后台系统的权限地基就能站得住。
小结:
· 最小权限原则是权限设计的底座:默认收敛,按需授权
· RBAC 简单直观,适合岗位稳定、权限到功能级的中小团队
· ABAC 灵活细粒度,适合大组织、跨区域、规则复杂的场景,但成本高
· 多数系统推荐 RBAC 起步 + 数据范围做第二层过滤
· 落地四件事:默认拒绝、变更留痕、离职回收、别绕过应用直连数据库

284

被折叠的 条评论
为什么被折叠?



