权限
权限的本质是分类,不同权限模型的分类纬度不同
DAC
discretionary access control 自主访问控制
DAC规定资源可以被哪些主体进行哪些操作,只存在操作权限。
同时,主体可以将资源、操作的权限,授予其他主体。允许拥有权限的用户,可以自主地、直接或间接地将访问权限赋予其他主体,自主性强
应用:文件系统的权限设计
MAC
Mandatory Access Control 强制访问控制,亦称为非自主访问控制
MAC规定了操作权限和资源权限。与MAC对比,DAC的数据存取权限由用户控制,系统无法控制,因为DAC实际上只存在操作权限,而这些操作权限是可传递的,因此说DAC的数据存取权限由用户控制;MAC安全等级更高,用户不能直接【完全控制】。
自主访问控制是指一类可以在主体之间相互转让权限的访问控制,而强制访问控制则指的是另一类强制限制权限的访问控制。
MAC要求:既要拥有操作权限,又要拥有资源权限,才能通过鉴权。例如,运维拥有关机权限(操作权限),同时拥有机器权限(资源权限),才能最终完成关机操作。因此,MAC的特点是实现资源与操作的双重验证,提高安全性
例如:om2的权限模型就是RBAC+MAC
RBAC
role based access control 基于角色的权限控制
注意角色和组的区别。虽然它们都是分治内聚的思路,但是它们内聚的对象并不同:
- 角色是权限的集合
- 组是用户的集合
基于角色的权限控制,把若干权限集合起来,称为role。实现逻辑是:权限→角色→用户。比如用户A拥有100个权限,新加入的用户B想拥有同样的权限,就不需要一个一个添加权限,直接赋予角色即可
不同role的权限集合不一样,可以进行的操作也不一样
注意,RBAC不适合权限高度个性化的系统,比如每个人都有与他人不同的权限,这样的情况很难内聚出【角色】
例如:golang casbin
ABAC
attribute based access control
比如IP鉴权、年龄段鉴权(18岁以下限制游戏时间)
ABAC对用户本身的属性进行标识,通过标识来判断用户权限。使得ABAC非常灵活,可扩展性也很高
网友评论