ABAC 即基于属性的访问控制(Attribute-Based Access Control)。在这种模型中,访问决策是基于主体(如用户、进程等)、客体(如数据、资源等)、环境(如时间、地点等)以及操作(如读取、写入、删除等)的属性来确定的。
例如,一个用户能否访问特定的数据,不仅取决于其身份(主体属性),还可能取决于当前的时间(环境属性)、数据的敏感性(客体属性)以及所需执行的操作类型(操作属性)。
假设在一个企业系统中,员工 A 在工作日的工作时间(环境属性)可以访问敏感项目的文档(客体属性)进行读取和编辑(操作属性),但在周末或非工作时间则无法访问,这就是 ABAC 数据访问控制的一种应用场景。
再比如,对于一个在线教育平台,只有注册超过一定时间(主体属性)的学生,在课程结束后的特定时间段内(环境属性),能够下载课程资料(操作属性和客体属性)。
ABAC 相比传统的访问控制模型,如基于角色的访问控制(RBAC),能够提供更精细、更灵活和更动态的访问控制策略,适应复杂多变的业务需求和安全要求。
一、数据权限
效果要求:在同一个数据请求方法中,根据访问用户的不同返回不同的数据集,且不能由编码控制。
业务诉求:
总公司可以看到系统中所有的数据,分公司只能够看到本公司数据和所辖部门的数据,部门只看自己的数据。
机构领导需要看到所有下属员工的客户数据,员工只能看自己的客户数据;
会计和审计部门可以查看机构内部所有的业务数据;
经理A能看到所有企业客户,经理B只能看到年销售额小于1000万的企业客户;
经办A能看到全国的订单数据,经办B只能看到面向X省销售的订单数据;
一个部门副职分管多个小组时,需要配置管理相关小组的数据;
一个用户同时属于多个部门和角色时,需计算权限并集。
常用的数据权限通过组织隔离和从属的关系控制数据可见性,上级机构可见下级机构的数据,同级之间数据相互隔离。上级组织默认拥有所有下级组织的数据权限。下级组织的权限仅为上级组织权限的子集。同级之间的权限可以有差异。
二、选用ABAC的考量因素
ABAC 数据访问控制具有以下主要特点:
1. 灵活性
- 能够根据各种不同的属性组合来制定访问策略,适应复杂多样的业务场景和需求变化。
- 例如,对于医疗数据,可以根据患者的病情严重程度、医生的专业领域、访问时间等多个属性来确定访问权限。
2. 细粒度控制
- 实现对数据访问的精细管理,精确到具体的操作和上下文环境。
- 比如,允许用户在特定时间段内读取特定类型的数据,但禁止在其他时间进行写入操作。
3. 动态性
- 访问策略可以根据实时的属性变化进行动态调整。
- 假设员工的职位发生变动,其访问权限能够立即根据新的职位属性进行更新。
4. 上下文感知
- 充分考虑访问发生时的环境和上下文信息。
- 像在网络不稳定的情况下,限制对关键数据的大规模下载操作。
5. 可扩展性
- 易于添加新的属性和策略,以适应不断发展的业务和安全需求。
- 当企业新增业务部门或业务流程时,可以方便地定义与之相关的访问属性和控制策略。
6. 降低管理成本
- 通过统一的属性管理和策略定义,减少了角色和权限管理的复杂性。
- 不必为每个细微的权限差异创建大量的角色,而是基于属性灵活组合来确定权限。
三、ABAC的核心要素
1. 属性(Attributes)
- 主体属性:如用户的身份、职位、部门、权限级别等。例如,用户是管理员还是普通员工。
- 客体属性:数据或资源的特征,如数据的敏感性、数据的类型、数据的所有者等。比如,数据是机密级还是公开级。
- 环境属性:访问发生时的上下文信息,包括时间、地点、网络状况等。例如,在工作时间内还是非工作时间内进行访问,访问是来自公司内部网络还是外部网络。
- 操作属性:对数据执行的具体动作,如读取、写入、删除、修改等。
2. 策略(Policies)
- 定义了在何种属性组合的情况下允许或拒绝访问。策略通常以规则的形式存在,例如“当主体属性为管理员且环境属性为工作时间内,允许对机密级数据进行读取和修改操作”。
3. 策略执行点(Policy Enforcement Point,PEP)
- 负责在访问请求发生时,获取相关的属性信息,并根据策略进行决策,决定是否允许访问。比如,当用户尝试访问数据库中的某条记录时,PEP 会检查用户、数据和环境等相关属性,并根据策略决定是否放行。
4. 策略决策点(Policy Decision Point,PDP)
- 存储和评估策略,为 PEP 提供决策依据。PDP 会根据传入的属性信息和已定义的策略,计算出访问决策结果并返回给 PEP。
5. 属性权威(Attribute Authority)
- 负责管理和提供属性的准确信息。例如,人力资源系统可以作为员工职位等主体属性的权威来源,而数据管理系统可以作为数据敏感性等客体属性的权威来源。
这些核心要素相互协作,共同实现 ABAC 数据访问控制的有效管理和保障数据的安全访问。