py网站开发视频教程,做电影网站,做门户网站需要什么,wordpress上传主题413ACL 模型#xff1a;访问控制列表 DAC 模型#xff1a;自主访问控制 MAC 模型#xff1a;强制访问控制 ABAC 模型#xff1a;基于属性的访问控制 RBAC 模型#xff1a;基于角色的权限访问控制
一、简介前三种模型#xff1a;
1.1 ACL#xff08;Access Control L… ACL 模型访问控制列表 DAC 模型自主访问控制 MAC 模型强制访问控制 ABAC 模型基于属性的访问控制 RBAC 模型基于角色的权限访问控制
一、简介前三种模型
1.1 ACLAccess Control List):每一个客体都有一个列表列表中记录的是哪些主体可以对哪些客体做什么。缺点当主体的数量较多时配置和维护成本大易出错。
1.2 DACDiscretionary Access control):是ACL的扩展在其基础上允许主体可以将自己拥有的 权限自主地授予其他主体权限可以随意传递。缺点权限控制比较分散主体权限太大有泄露信息的危险。
1.3 MACMandatory Access Control):双向验证机制常用于机密机构或者其他等级观念强的行列主体和客体都有权限标识主体能否对客体进行操作取决于双方的权限标识信息。缺点控制严格、实现工作量大缺乏灵活性。
二、RBAC详解
2.1 RBAC的概念
RBACRole-Based Access Control): 指的是通过用户的角色Role授权其相关权限角色代表了权限。实现了灵活的访问控制相比直接授予用户权限要更加简单、高效、可扩展。 RBAC三要素
用户系统中的所有账户
角色一系列权限的集合
权限菜单、按钮、数据的增删改查
2.2 RBAC的深度拓展
基于角色的访问控制RBAC 模型可以分为RBAC0、RBAC1、RBAC2、RBAC3 四个阶段一般公司使用 RBAC0 的模型就可以。另外RBAC0 相当于底层逻辑后三者都是在 RBAC0 模型上的拓展。【迄今为止最为普及的权限设计模型】
RBAC0:用户和角色、角色和权限多对多的关系。
RBAC1:增加了角色的分级逻辑类似树结构下一节点继承于上一节点的权限。
RBAC2:增加更多限制条件角色互斥、角色数量限制为了权责明确、系统安全
RBAC3:综合了RBAC1和RBAC2的所有特点。 RBAC0 RBAC1 RBAC2 三、ABAC详解
3.1 ABAC的概念
基于属性的访问控制Attribute-Based Access Control简称 ABAC 是一种比 RBAC更加灵活的授权模型它的原理是通过各种属性来动态判断一个操作是否可以被允许。这个模型在云系统中使用的比较多比如 AWS阿里云等
ABAC的四大要素 对象对象是当前请求访问资源的用户。用户的属性包括 ID个人资源角色部门和组织成员身份等 资源资源是当前用户要访问的资产或对象例如文件数据服务器甚至 API 操作操作是用户试图对资源进行的操作。常见的操作包括“读取”“写入”“编辑”“复制”和“删除” 环境环境是每个访问请求的上下文。环境属性包含访问的时间和位置对象的设备通信协议和加密强度等。 在 ABAC模型 的决策语句的执行过程中决策引擎会根据定义好的决策语句结合对象、资源、操作、环境等因素动态计算出决策结果。每当发生访问请求时ABAC模型决策系统都会分析属性值是否与已建立的策略匹配。如果有匹配的策略访问请求就会被通过。缺点规则复杂不易看出主体与客体之间的关系实现非常难现在应用的很少。
3.2 ABAC的使用
有一些ABAC语言如xacml和alpha。使用ALFA我可以编写以下策略: 允许用户在部门A中添加新的团队成员 在部门B他只能查看团队列表 在其他部门他没有任何权限。 角色还必须是可继承的存储在模型中并可通过接口进行管理
policyset appAccess{apply firstApplicablepolicy members{target clause object memberapply firstApplicable/*** A user can add a member to a department if they are a manager and if they are assigned to that department.*/rule addMember{target clause role manager and action addpermitcondition user.department target.department}}
}
ABAC的主要优点之一是可以开发任意多的策略对它们进行审计和共享而不必触及应用程序代码因为最终将授权外部化。
【此处参考于authorization - Django role based permissions - Stack Overflow】
3.3 两种模型对比 【图片来源ABAC权限模型个人记录 - 知乎】
四、新权限系统的设计思想
新权限系统的权限模型用户最终权限 用户拥有的角色带来的权限 用户独立配置的权限两者取并集。 对于权限系统自身的用户会分为三类 超级管理员拥有权限系统的全部操作权限可以进行系统自身的任何操作也可以管理接入权限的应用系统的管理操作。 权限操作用户拥有至少一个已接入的应用系统的超级管理员角色的用户。该用户能进行的操作限定在所拥有的应用系统权限范围内。权限操作用户是一种身份无需分配而是根据规则自动获得的。 普通用户普通用户也可以认为是一种身份除去上述 2 类人其余的都为普通用户。他们只能申请接入系统以及访问权限申请页面。
新权限系统中把权限分为两大类分别是 菜单功能权限包括系统的目录导航、菜单的访问权限以及按钮和 API 操作的权限 数据权限包括定义数据的查询范围权限在不同系统中通常叫做 “组织”、”站点“等在新权限系统中统一称作 ”组织“ 来管理数据权限
每个系统中设计了三个默认角色用来满足基本的权限管理需求分别如下 超级管理员该角色拥有该系统的全部权限可以修改系统的角色权限等配置可以给其他用户授权。 系统管理员该角色拥有给其他用户授权以及修改系统的角色权限等配置能力但角色本身不具有任何权限。 授权管理员该角色拥有给其他用户授权的能力。但是授权的范围不超出自己所拥有的权限