用最小权限原则设计权限模型:RBAC 与 ABAC 怎么选

技术实践笔记 · 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 一张表对比

维度RBACABAC
授权依据角色(静态归属)属性 + 策略(动态判定)
粒度模块 / 功能级可到字段 / 数据行级
灵活性新增场景要建角色改策略即可,动态适配
管理成本低,直观高,需专人维护策略
性能开销低(查表即可)中(需策略引擎计算)
排查审计看角色即可定位需要还原策略判定过程
适用规模中小团队、岗位稳定大组织、数据跨区域、规则复杂

五、实践里怎么选

我的经验是:多数系统应该从 RBAC 起步,把 ABAC 留给真正需要它的场景。具体判断看三点:

  • 看粒度需求:权限只到"能不能进这个菜单",RBAC 足够;要管到"某条数据谁能看",考虑 ABAC 或 RBAC+数据范围补充。
  • 看组织规模:几十人、几百人的团队,角色数量可控,RBAC 简单可靠;几千人、多区域、跨组织的复杂结构,纯 RBAC 的角色爆炸会压垮管理。
  • 看变化频率:权限规则常年稳定,RBAC 够用;规则随业务频繁调整、或同一角色内权限差异大,ABAC 的策略化才有优势。

还有一种常见的折中:RBAC 管"能不能用这个功能",再用"数据范围/属性条件"做第二层过滤。比如角色决定能不能看客户模块,再看"数据.所属部门 = 当前用户部门"决定具体能看哪些客户。很多系统这样混搭,既保住 RBAC 的直观,又拿到细粒度。

六、落地时容易忽略的几个点

  • 默认拒绝:新权限、新数据默认不可见,只有显式授权才开放,而不是默认全开再一个个关。
  • 权限变更要留痕:谁在什么时候给谁加了什么权限,本身就要记审计日志,和业务日志一样重要。
  • 离职即回收:账号禁用与权限回收要联动,别让离职账号带着权限继续躺在系统里。
  • 别绕过应用直连数据库:权限逻辑写在应用层才有意义,绕过应用直连数据库,再好的模型也形同虚设。
  • 先评审后上线:权限模型上线前做一轮"最小权限评审",用真实场景逐条验证,比上线后补救省事得多。

权限模型没有银弹,RBAC 和 ABAC 也谈不上谁取代谁。把最小权限原则当底座,按粒度、规模、变化频率去选,再用"默认拒绝 + 全程留痕 + 离职回收"把漏洞堵住,后台系统的权限地基就能站得住。

小结:
· 最小权限原则是权限设计的底座:默认收敛,按需授权
· RBAC 简单直观,适合岗位稳定、权限到功能级的中小团队
· ABAC 灵活细粒度,适合大组织、跨区域、规则复杂的场景,但成本高
· 多数系统推荐 RBAC 起步 + 数据范围做第二层过滤
· 落地四件事:默认拒绝、变更留痕、离职回收、别绕过应用直连数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值