权限模型

权限控制

自主访问控制(DAC, Discretionary Access Control)

自主访问控制(DAC, Discretionary Access Control)模型是根据自主访问控制策略建立的一种模型,允许合法用户或用户组的身份访问策略规定的客体,同时阻止非授权用户访问客体。拥有客体权限的用户,可以将该客体的权限分配给其他用户,是ACL(Access
Control List)访问控制列表模型的扩展。


强制访问控制(MAC,Mandatory Access Control)

强制访问控制(MAC,Mandatory Access Control)模型是一种基于安全标签的访问控制模型,通常用于军事和政府机构,以确保信息的机密性和完整性。


基于角色访问控制(RBAC, Role-based Access Control)

基于角色访问控制(RBAC, Role-based Access Control)模型通过定义角色的权限,并对用户授予某个角色来控制用户的权限,实现了用户和权限的逻辑分离,这又叫RBAC0。随着系统权限复杂性增加,RBAC也随之扩展出了多个部件模型,主要包括:RBAC1(角色分级模型)、 RBAC2(角色限制模型)、 RBAC3(统一模型)。

RBAC0(基本模型)

RBAC0是RBAC核心思想模型,它定义了完全支持RBAC概念的任何系统的最低需求,包括RBAC三要素(用户(U)、角色(R)和权限(P))。

RBAC1(角色分级模型)

RBAC1(角色分级模型)的思路是上层角色继承下层角色的所有权限,并且可以额外拥有其他权限。简单来说,就是引入角色继承的关系,使得角色具有上下级的区别,这种继承关系可以分为一般继承关系和受限继承关系。

一般继承关系

要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。这意味着一个角色可以继承多个上级角色的权限。

受限继承关系

要求角色继承关系是一个树结构,实现角色间的单继承。这种模型适用于角色之间的层次明确,包含关系清晰的情况

RBAC2(角色限制模型)

RBAC2(角色限制模型)的思路是引入约束的概念,主要引入了静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic
Separation of Duty)。

静态职责分离SSD

发生在用户和角色的指派阶段,主要有如下约束:

  • 互斥角色:同一个用户在两个互斥角色中只能选择一个
  • 基数约束:一个用户拥有的角色是有限的,一个角色拥有的许可也是有限的
  • 先决条件约束:用户想要获得高级角色,首先必须拥有低级角色

动态职责分离DSD

是会话和角色之间的约束,可以动态的约束用户拥有的角色,如一个用户可以拥有两个角色,但是运行时只能激活一个角色。

RBAC3(统一模型)

BAC3(统一模型)同时包含了RBAC1和RBAC2的特性,即继承关系和约束关系


基于属性的访问控制(ABAC, Attribute Based Access Control)

通过动态计算一个或一组属性是否满足某种条件来进行授权判断。属性可以分为四类:主体属性、环境属性、资源属性、操作属性。可以按需实现不同颗粒度的权限控制,但定义权限时不易看出用户和对象间的关系。ABAC设计的目的是为了能够满足控制请求者在某些条件下是否对请求数据具备某个操作(API)
的能力。这个模型在云系统中使用的比较多,比如阿里云,腾讯云,华为云等,它们都是用ABAC来管控云服务资源。ABAC语法设计指引中的一些术语:

  • subject 指的是系统的使用者,可以是用户(user),也可以是其他非服务的个体(non-person entity,NPE)
  • object 泛指被访问的数据
  • operation/action 指操作行为,一般对应系统中的API
  • policy 访问策略,它规定了一个用户在什么条件下可以对哪些数据做什么,是ABAC系统核心实体之一
  • pdp pdp是policy decision point,策略点,其实我理解这玩意就是一个policy的展示出来的形式而已
  • pep pep是policy enforcement point,策略执行点,简单说就是根据policy来鉴权
  • acm acm是access control mechanism,权限管控机制,一般来说就是权限系统本身
  • attribute 它泛指各种属性,可以是subject的,也可以是object的
  • condition 各种额外的限制条件
------------- The End -------------
对您有用的话就赞赏一个吧!
syshlang 微信 微信
syshlang 支付宝 支付宝
  • 本文作者: syshlang
  • 本文链接: https://syshlang.com/c5423dbf/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!