关键词:权限管理模型
常见的权限管理模型
-
DAC (Discretionary Access Control): 用户对资源有自主权,资源的所有者可以自由地授予或撤销其他用户的访问权限。
-
MAC (Mandatory Access Control): 系统管理员定义了一组强制性的规则,控制用户对资源的访问。用户不能改变这些规则,这通常应用于一些需要高度安全性的环境。
-
RBAC (Role-Based Access Control): 根据用户的角色分配权限,用户被分组为角色,每个角色被赋予一定的权限。这简化了权限管理,特别适用于大型组织。
-
ABAC (Attribute-Based Access Control): 根据用户的属性来控制访问权限。这可以包括用户的属性、环境信息等,提供更细粒度的控制。
-
PBAC (Policy-Based Access Control): 根据预定义的策略来控制访问权限。策略可以包括多个规则和条件,灵活适应各种访问控制需求。
DAC
Discretionary Access Control(DAC)自主访问控制,是一种权限管理模型,强调资源的所有者对其资源拥有自主权,可以自由决定其他用户对其资源的访问权限。每个用户被赋予特定的权限,这些权限决定了用户能够对资源执行哪些操作,如读取、写入、执行等。资源的所有者通常是创建该资源的用户,而DAC模型提供了一定的灵活性,因为资源的所有者可以根据实际需要灵活地管理对其资源的访问。在 DAC 模型中,文件系统是一个常见的应用场景,其中文件和文件夹具有所有者,所有者决定了其他用户的访问权限。这是一种相对简单而直观的权限管理方式,适用于一些相对简单的场景。
这种设计最常见的应用就是文件系统的权限设计,如微软的 NTFS。
MAC
Mandatory Access Control(MAC,强制访问控制)是一种权限管理模型,其核心特点在于由系统管理员预先定义一组强制性规则,这些规则决定了用户对资源的访问权限。在 MAC 模型中,用户无法自行修改这些规则,这种不可修改性使得 MAC 模型适用于高度安全性的环境。与 Discretionary Access Control(DAC)不同,MAC 强调系统级别上的强制性控制,而不是资源所有者的自主权。此模型通常使用标签或级别来表示用户和资源的安全属性,并支持多级别的安全控制。 MAC 在军事、政府和情报机构等对安全性要求极高的领域中得到广泛应用。在 MAC 模型下,系统管理员的定义对于用户和资源的访问权限至关重要,确保了系统的整体安全性和合规性。
这个权限最大的一个特点就是:权限标签和分级。使用标签或级别来表示用户和资源的安全级别。这些标签反映了用户和资源的安全属性,用于决定是否允许访问。
举例:MAC 模型通常在对安全性要求极高的领域中得到广泛应用,如军事、政府和情报机构。
例如:考虑一个政府机构的文件系统,其中包含了各种敏感信息。在 MAC 模型下:
- 系统管理员定义了访问控制规则,例如只有具有 "Top Secret" 标签的用户才能访问 "Top Secret" 级别的文件。
- 用户无法自行更改其安全级别或绕过系统管理员定义的规则来进行查看。
- 文件的创建者是某个用户,该用户也是一位普通用户, 但是只能查看, 不能篡改文件的访问级别和编辑级别。
RBAC
Role-Based Access Control(RBAC,基于角色的访问控制)是一种权限管理模型,其核心思想是根据用户的角色进行访问控制。在 RBAC 模型中,用户被分配到一个或多个角色,而每个角色都具有特定的权限,用户通过角色来获取相应的访问权限。
目前来说基于角色的访问控制模型是应用较广的一个,特别是 2B 方向 SAAS 领域,应用尤其常见。
其中最重要的两个关键因素就是:权限与角色关联、角色再分配给具体的用户;
ABAC
基于属性的访问控制模型(ABAC: Attribute-Based Access Control),被一些人称为是权限系统设计的未来。
不同于常见的将用户通过某种方式关联到权限的方式,ABAC 则是通过动态计算一个或一组属性是否满足某种条件来进行授权判断(可以编写简单的逻辑)。
用户、资源和环境都有各自的属性。这些属性可以包括用户的身份、角色、部门、资源的类型、敏感级别、时间等。
访问控制策略通过属性的匹配和条件评估来确定是否允许访问。例如,如果用户的角色属性是 "Manager" 且资源的敏感级别属性是 "High",则允许访问。
举例子:考虑一个企业的文档管理系统,使用 Attribute-Based Access Control (ABAC) 模型来控制对文档的访问。在这个例子中,访问控制的决策基于用户的属性、文档的属性以及其他环境因素。
-
用户属性:
- 属性 1:用户角色(Role) - 可能的值包括 "Employee"(员工)和 "Manager"(经理)。
- 属性 2:用户部门(Department) - 包括 "Sales"(销售部门)和 "Engineering"(工程部门)。
-
文档属性:
- 属性 1:文档类型(Document Type) - 包括 "Internal"(内部文档)和 "Confidential"(机密文档)。
- 属性 2:文档部门(Document Department) - 指定文档所属的部门。
-
环境属性:
- 属性 1:访问时间(Access Time) - 确定用户访问文档的时间。
-
策略定义:
- 规则 1:如果用户角色是 "Manager" 且文档类型是 "Confidential",允许访问。
- 规则 2:如果文档部门是 "Sales" 且访问时间是工作时间,允许员工访问。
-
访问请求示例:
- 用户A是 "Manager",想要访问一个 "Confidential" 类型的文档,由于规则 1 的匹配,允许访问。
- 用户B是 "Employee",想要访问一个 "Internal" 类型的文档,在工作时间内,由于规则 2 的匹配,允许访问。
在这个例子中,ABAC 模型通过匹配用户、文档和环境的属性来决定访问权限。管理员可以根据组织的需求定义和更新访问规则,以实现更精细和动态的访问控制。
这种权限设计侧重点, 在于数据属性;
PBAC
Policy-Based Access Control (PBAC) 是一种基于策略的访问控制模型,它的核心思想是通过定义和实施一组策略来管理对系统资源的访问。在 PBAC 中,访问控制是通过规则和条件的集合来决定的,这些规则描述了在特定条件下用户能够执行的操作。
跟 ABAC 是同属于一个级别的权限控制模型, 只是侧重点不同, PBAC 更加侧重于: 重定义和实施访问控制策略。这些策略是由一组规则组成,这些规则描述了在特定条件下用户能够执行的操作。
举例子:
考虑一个企业的文件管理系统,管理员使用 Policy-Based Access Control (PBAC) 来定义访问控制策略,以确保对文件的访问仅限于授权用户和特定条件下的访问。
-
用户和角色定义:
- 角色 1:Employee(普通员工)
- 角色 2:Manager(经理)
- 角色 3:Admin(管理员)
-
资源定义:
- 资源 1:Project Documents(项目文件夹)
- 资源 2:Financial Reports(财务报告文件夹)
-
策略定义:
- 策略 1:如果用户是经理,允许访问项目文件夹。
- 策略 2:如果用户是管理员,允许访问财务报告文件夹。
- 策略 3:如果访问时间在工作时间内,允许访问项目文件夹和财务报告文件夹。
- 策略 4:如果用户是普通员工,仅在工作时间内允许访问项目文件夹。
这些策略和规则的组合允许管理员定义对文件的访问控制。例如,一个经理在工作时间内可以访问项目文件夹,而管理员可以在任何时间访问财务报告文件夹。这个例子展示了 PBAC 模型如何通过灵活的策略定义,实现对资源访问的细粒度控制。管理员可以根据企业需求调整和更新这些策略,以适应不同的访问控制需求。