同一句"他能不能看",凭什么有三种答法?一次讲清 RBAC / ABAC / ReBAC 怎么选
设权限不是“勾一下谁能看”。同一句“他能不能看”,其实有三种问法:按岗位、按条件、按关系。问法不同,管权限的办法就得跟着换。
一、三种问法,三套办法
- RBAC(按岗位):你戴哪张工牌?一类人一个角色,改一次全组跟着变;
- ABAC(按条件):当场条件满不满足?部门 / 时间 / 环境,逐条比对;
- ReBAC(按关系):你和这条数据连着线吗?线能层层传,“这条归谁”由关系说了算。
对应标准/实践:NIST RBAC(INCITS 359)、NIST SP 800-162(ABAC)、Google Zanzibar(ReBAC)。
二、每套都有代价
- 按岗位:牌会越做越多;
- 按条件:规则绕、难一眼看懂、算得慢;
- 按关系:线能层层传、牵一发动全身(某大厂这套存着两万亿条以上“关系”、每秒数百万次请求)。
三、怎么选:看你要管什么
- 管“一类人” → 按岗位(RBAC);
- 管“一堆条件” → 按条件(ABAC);
- 管“这条归谁” → 按关系(ReBAC)。
现实里多半混着用,不是三选一。底线:默认给得少(最小权限,NIST SP 800-53 AC-6)。
以上实践来自我们构建开源身份层 Autional 的经验,官网:https://www.autional.com
参考:ANSI/INCITS 359、NIST SP 800-162、Google Zanzibar(USENIX ATC 2019)、NIST SP 800-53 AC-6。
浙公网安备 33010602011771号