权限设计种类【RBAC、ABAC】
-
ACL 模型:访问控制列表
-
DAC 模型:自主访问控制
-
MAC 模型:强制访问控制
-
ABAC 模型:基于属性的访问控制
-
RBAC 模型:基于角色的权限访问控制
一、简介前三种模型:
1.1 ACL(Access Control List): 每一个客体都有一个列表,列表中记录的是哪些主体可以对哪些客体做什么。缺点:当主体的数量较多时,配置和维护成本大,易出错。
1.2 DAC(Discretionary Access control): 是 ACL 的扩展,在其基础上,允许主体可以将自己拥有的 权限自主地授予其他主体,权限可以随意传递。缺点:权限控制比较分散,主体权限太大,有泄露信息的危险。
1.3 MAC(Mandatory Access Control): 双向验证机制,常用于机密机构或者其他等级观念强的行列;主体和客体都有权限标识,主体能否对客体进行操作取决于双方的权限标识信息。缺点:控制严格、实现工作量大,缺乏灵活性。
二、RBAC 详解
2.1 RBAC 的概念
RBAC(Role-Based Access Control): 指的是通过用户的角色(Role)授权其相关权限,角色代表了权限。实现了灵活的访问控制,相比直接授予用户权限,要更加简单、高效、可扩展。
RBAC 三要素:
用户:系统中的所有账户
角色:一系列权限的集合
权限:菜单、按钮、数据的增删改查
2.2 RBAC 的深度拓展
基于角色的访问控制:RBAC 模型可以分为:RBAC0、RBAC1、RBAC2、RBAC3 四个阶段,一般公司使用 RBAC0 的模型就可以。另外,RBAC0 相当于底层逻辑,后三者都是在 RBAC0 模型上的拓展。【迄今为止最为普及的权限设计模型】
RBAC0: 用户和角色、角色和权限多对多的关系。
RBAC1: 增加了角色的分级逻辑,类似树结构,下一节点继承于上一节点的权限。
RBAC2: 增加更多限制条件:角色互斥、角色数量限制,为了权责明确、系统安全
RBAC3: 综合了 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 firstApplicable
policy members{
target clause object = "member"
apply 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 == "add"
permit
condition user.department == target.department
}
}
}
ABAC 的主要优点之一是,可以开发任意多的策略,对它们进行审计和共享,而不必触及应用程序代码,因为最终将授权外部化。
【此处参考于:authorization - Django role based permissions - Stack Overflow】
3.3 两种模型对比
【图片来源:ABAC 权限模型(个人记录) - 知乎】
四、新权限系统的设计思想
新权限系统的权限模型:用户最终权限 = 用户拥有的角色带来的权限 + 用户独立配置的权限,两者取并集。
对于权限系统自身的用户,会分为三类:
-
超级管理员:拥有权限系统的全部操作权限,可以进行系统自身的任何操作,也可以管理接入权限的应用系统的管理操作。
-
权限操作用户:拥有至少一个已接入的应用系统的超级管理员角色的用户。该用户能进行的操作限定在所拥有的应用系统权限范围内。权限操作用户是一种身份,无需分配,而是根据规则自动获得的。
-
普通用户:普通用户也可以认为是一种身份,除去上述 2 类人,其余的都为普通用户。他们只能申请接入系统以及访问权限申请页面。
新权限系统中,把权限分为两大类,分别是:
-
菜单功能权限:包括系统的目录导航、菜单的访问权限,以及按钮和 API 操作的权限
-
数据权限:包括定义数据的查询范围权限,在不同系统中,通常叫做 “组织”、” 站点 “等,在新权限系统中,统一称作 ” 组织 “ 来管理数据权限
每个系统中设计了三个默认角色,用来满足基本的权限管理需求,分别如下:
-
超级管理员:该角色拥有该系统的全部权限,可以修改系统的角色权限等配置,可以给其他用户授权。
-
系统管理员:该角色拥有给其他用户授权以及修改系统的角色权限等配置能力,但角色本身不具有任何权限。
-
授权管理员:该角色拥有给其他用户授权的能力。但是授权的范围不超出自己所拥有的权限
自主(DAC)、强制(MAC)、角色(RBAC)和属性(ABAC)四种系统访问控制模型详解与选择_abac 属性 防问控制 - CSDN 博客
I. 引言
系统访问控制模型是一种用于保护计算机系统和网络资源的机制,它规定了用户或应用程序可以对系统进行哪些操作。该模型通常包括一组规则和策略,这些规则和策略定义了谁可以访问什么资源以及如何访问它们。
需要系统访问控制模型的原因是因为计算机系统和网络资源是高度敏感的,并且可能被恶意用户或攻击者利用来进行未经授权的操作。通过实施访问控制模型,可以确保只有经过授权的用户才能访问系统和资源,从而减少安全风险。
系统访问控制模型的目的和目标是确保系统的安全性、完整性和可用性。通过实施适当的访问控制模型,可以防止未经授权的访问、修改或破坏系统资源,从而保护系统的安全性。此外,访问控制模型还可以确保系统的完整性,避免数据丢失或损坏。最后,访问控制模型还可以提高系统的可用性,确保系统能够持续地运行并提供服务给用户。
II. 常见的系统访问控制模型
常见的系统访问控制模型有:自主访问控制 (DAC)、强制访问控制 (MAC)、基于角色访问控制 (RBAC)、基于属性访问控制 (ABAC)。他们的原理、使用场景、需要创建的表结构和优缺点具体如下表。
常用权限管理模型名称 | 原理 | 应用场景 | 需要创建的表结构 | 优缺点 |
---|---|---|---|---|
自主访问控制 (DAC) | 允许用户自由地选择他们想要访问的资源。 | 适用于对数据安全性要求不高的场景,如个人电脑、家庭网络等。 | 无 | 灵活性高,但安全性较低。 |
强制访问控制 (MAC) | 要求所有用户都必须遵守相同的规则。 | 适用于对数据安全性要求较高的场景,如银行、政府机构等。 | 无 | 安全性高,但灵活性较低。 |
基于角色访问控制 (RBAC) | 将权限分配给一组角色,而不是单个用户。 | 适用于企业内部的权限管理,如员工、部门等。 | 角色表 (role)、用户表 (user)、角色权限表 (role_permission) | 安全性高,灵活性较高。 |
基于属性访问控制 (ABAC) | 根据用户的属性来决定他们是否可以访问某个资源。 | 适用于对数据安全性要求较高且需要个性化权限管理的场景,如医疗保健、金融等。 | 用户属性表 (user_attribute)、资源属性表 (resource_attribute)、用户 - 资源关系表 (user_resource) | 安全性高,灵活性较高。 |
Ⅲ. 如何选择合适的系统访问控制模型
选择合适的系统访问控制模型需要考虑多个因素,例如:
-
安全性:不同的访问控制模型有不同的安全性级别。例如,强制访问控制 (MAC) 是最安全的,因为它要求用户必须经过授权才能访问资源。但是,这种模型不够灵活,因为管理员需要为每个用户分配单独的访问权限。自主访问控制 (DAC) 可以提供更高的灵活性,但是安全性较低,因为管理员需要手动维护所有用户的访问权限。基于角色的访问控制 (RBAC) 和基于属性的访问控制 (ABAC) 可以提供更高的安全性和灵活性。
-
管理效率:不同的访问控制模型对管理员的管理效率有不同的影响。例如,自主访问控制 (DAC) 可以提供更高的灵活性,但是需要管理员手动维护所有用户的访问权限。基于角色的访问控制 (RBAC) 可以简化管理,并减少错误。
-
业务需求:不同的业务需求需要不同类型的访问控制模型。例如,对于一些高度机密的信息,强制访问控制 (MAC) 可能是最好的选择。对于一些非机密信息,自主访问控制 (DAC) 可能更适合。
Ⅳ. 实现系统访问控制模型的方法和技术
-
身份认证技术:用于验证用户的身份,例如密码、数字证书等。
-
授权管理技术:用于确定用户可以访问哪些资源和执行哪些操作,例如基于角色的访问控制 (RBAC)、基于属性的访问控制 (ABAC) 等。
-
访问日志记录技术:用于记录用户的访问行为,以便进行审计和安全分析。
-
安全策略管理技术:用于定义和管理系统的安全策略,例如防火墙、入侵检测系统等。
-
加密技术:用于保护数据的机密性和完整性,例如 SSL/TLS 协议、AES 加密算法等。
-
漏洞扫描和修复技术:用于发现和修复系统中的漏洞,以提高系统的安全性。
Ⅴ. 总结
系统访问控制模型是保护计算机系统和网络资源的机制,它规定了用户或应用程序可以对系统进行哪些操作。选择合适的系统访问控制模型对于确保系统的安全性、完整性和可用性非常重要。
系统访问控制模型可以有效保护计算机系统和网络资源的安全,防止未经授权的访问和攻击,提高系统的可靠性和稳定性,为组织提供更好的业务服务和用户体验。因此,在实际应用中,需要根据具体的需求和技术环境选择合适的系统访问控制模型,并进行合理的配置和管理,以保证系统的安全性和稳定性。
定义及区别:
RBAC(Role-Based Access Control)是一种常见的权限模型,它基于角色进行访问控制。在 RBAC 中,将用户分配给不同的角色,每个角色具有特定的权限,用户通过分配的角色来获取相应的权限。
ABAC(Attribute-Based Access Control)是另一种权限模型,它基于属性进行访问控制。在 ABAC 中,访问决策不仅基于用户角色,还基于其他属性(如用户的属性、环境条件等)。这种模型更加灵活,可以根据更多的属性因素进行访问控制。
PBAC(Policy-Based Access Control)是一种基于策略的权限模型,它通过定义策略来管理访问控制。这些策略可以由管理员根据组织的需求进行定制,以决策具体的访问权限。PBAC 模型允许更细粒度的控制,并支持动态的访问控制策略。
TBAC(Task-Based Access Control)是一种基于任务的权限模型,它根据用户当前的任务或角色来授予相应的权限。用户只能在特定任务或角色下获得特定的权限,以完成特定的任务。
这些权限模型都是为了实现有效的访问控制而发展出来的,并在不同的场景和需求下有不同的应用。具体选用哪种权限模型要根据组织的需求、安全性要求和系统架构来决定。
适合的场景:
RBAC(Role-Based Access Control)模型适用于以下场景:
组织结构明确的系统:适用于拥有明确定义角色和职责的组织,例如企业内部系统或公司网络。
简单的访问控制需求:适用于相对简单的访问控制需求,其中权限只基于用户的角色。
ABAC(Attribute-Based Access Control)模型适用于以下场景:
复杂的访问控制需求:适用于需要基于多种属性、策略和环境条件实现访问控制的复杂系统,例如云计算环境、大型组织或跨组织的系统。
动态访问控制:适用于需要动态调整访问权限的系统,根据用户的属性和环境条件进行访问控制。
PBAC(Policy-Based Access Control)模型适用于以下场景:
灵活的访问控制需求:适用于需要根据特定策略和规则管理访问控制的系统,以满足不同用户和场景下的灵活性和可定制性要求。
高度可管理的访问控制:适用于需要集中管理、审计和控制权限策略的系统,以确保访问权限的一致性和安全性。
TBAC(Task-Based Access Control)模型适用于以下场景:
任务导向的系统:适用于以任务为中心的系统,其中用户的权限是基于其当前执行的任务或角色。
临时权限需求:适用于需要根据特定任务或临时角色授予用户临时权限的系统,以确保权限仅在需要时才可用。
需要根据具体的系统需求、环境和安全性要求来选择合适的权限模型。有时也可以结合多个模型来实现更全面的访问控制策略。