维基百科
基于属性的访问控制(ABAC),也称为基于策略的访问控制的IAM定义了访问控制范式,其中通过使用将属性组合在一起的策略,将访问权限授予用户。这些策略可以使用任何类型的属性(用户属性,资源属性,对象,环境属性等)。该模型支持布尔逻辑,其中规则包含有关谁在发出请求,资源和操作的“ IF,THEN”语句。例如:如果请求者是管理者,则允许对敏感数据的读/写访问。NIST框架将ABAC的主要概念引入其实体,即PAP(策略管理点),PEP(策略执行点),PDP(策略决策点)和PIP(策略信息点)。
基于角色的访问控制(RBAC)使用预先定义的角色,这些角色带有与之相关联的特定特权集并分配了主题,与基于角色的访问控制(RBAC)不同,ABAC的主要区别在于表示复杂布尔规则集的策略的概念可以评估许多不同的属性。属性值可以设置值或原子值。集值属性包含多个原子值。例如角色和项目。原子值属性仅包含一个原子值。例如间隙和灵敏度。可以将属性与静态值进行比较或相互比较,从而实现基于关系的访问控制。
尽管该概念本身已经存在了很多年,但是ABAC被认为是“下一代”授权模型,因为它为资源提供了动态的,上下文感知的和风险智能的访问控制,从而允许访问控制策略包括来自许多不同信息系统的特定属性。定义为解决授权并实现有效的法规遵从性,从而使企业可以根据现有基础结构灵活地实施。
基于属性的访问控制有时称为基于策略的访问控制(PBAC)或基于声明的访问控制(CBAC),这是Microsoft专有的术语。实现ABAC的关键标准是XACML和ALFA(XACML).
基于属性的访问控制的维度
ABAC可以看作是:
- 外部授权管理
- 动态授权管理
- 基于策略的访问控制
- 细粒度的授权
架构(Architecture)
ABAC带有推荐的体系结构,如下所示:
- PEP或策略执行点:它负责保护您要对其应用ABAC的应用程序和数据。PEP检查该请求并生成一个授权请求,然后将其发送到PDP。
- PDP或策略决策点是体系结构的大脑。这是根据已配置的策略评估传入请求的部分。PDP将返回“允许/拒绝”决定。PDP也可以使用PIP来检索丢失的元数据
- PIP或策略信息点将PDP桥接到外部属性源,例如LDAP或数据库。
属性(Attributes)
属性可以是任何事物,任何人都可以。它们倾向于分为4个不同的类别或功能(如语法功能)
- 主题属性:描述用户尝试访问的属性,例如年龄,权限,部门,职位,职务…
- 动作属性:描述尝试执行的动作的属性,例如读取,删除,查看,批准…
- 对象属性:描述正在访问的对象(或资源)的属性,例如对象类型(病历,银行帐户…),部门,分类或敏感度,位置…
- 上下文(环境)属性:处理访问控制场景的时间,位置或动态方面的属性
策略(Policies)
策略是将属性汇总在一起以表示可能发生和不允许发生的事情的语句。ABAC中的策略可以是授予或拒绝策略。策略也可以是本地策略或全局策略,并且可以以覆盖其他策略的方式编写。示例包括:
- 如果文档与用户位于同一部门,则用户可以查看该文档
- 如果用户是所有者并且文档处于草稿模式,则用户可以编辑文档
- 上午9点之前拒绝访问
借助ABAC,您可以根据需要选择尽可能多的策略来满足许多不同的方案和技术。
其他模式
从历史上看,访问控制模型包括强制性访问控制(MAC),自由访问控制(DAC)和最近基于角色的访问控制(RBAC)。这些访问控制模型以用户为中心,并且不考虑其他参数,例如资源信息,用户(请求实体)与资源之间的关系以及动态信息(例如一天中的时间或用户IP)。ABAC试图通过基于描述请求实体(用户),目标对象或资源,所需动作(查看,编辑,删除…)以及环境或上下文信息的属性定义访问控制来解决此问题。这就是为什么访问控制被称为基于属性的原因。
实现
XACML是可实现基于属性和策略的访问控制的一种标准,它是可扩展的访问控制标记语言。XACML定义了体系结构,策略语言和请求/响应方案。它不处理留给传统IAM工具,数据库和目录的属性管理(用户属性分配,对象属性分配,环境属性分配)。
包括美国军方每个分支在内的公司已经开始使用ABAC。从根本上讲,ABAC使用“ IF / THEN / AND”规则保护数据,而不是将数据分配给用户。美国商务部已将此作为强制性做法,并且采用范围遍及多个政府和军事机构。
应用
ABAC的概念可以应用于技术堆栈和企业基础架构的任何级别。例如,ABAC可用于防火墙,服务器,应用程序,数据库和数据层。属性的使用带来了更多的上下文,可以评估任何访问请求的合法性,并告知授予或拒绝访问的决定。
评估ABAC解决方案时,一个重要的考虑因素是了解其潜在的性能开销及其对用户体验的影响。期望控件越精细,开销就越高。
API和微服务安全性
ABAC可用于将基于属性的细粒度授权应用于API方法或函数。例如,银行业API可能会公开一个approveTransaction(transId)方法。ABAC可用于确保呼叫安全。使用ABAC,策略作者可以编写以下内容:
- 政策:经理可以批准交易,直到他们的批准限制
- 使用的属性:角色,操作ID,对象类型,数量,批准限制。
流程如下:
- 用户Alice调用API方法approveTransaction(123)
- API接收调用并验证用户身份。
- API中的拦截器调出授权引擎(通常称为策略决策点或PDP),并询问:Alice可以批准事务123吗?
- PDP检索ABAC策略和必要的属性。
- PDP做出一个决定,例如“允许”或“拒绝”,并将其返回给API拦截器
- 如果决定是“允许”,则将调用基础API业务逻辑。否则,API返回错误或访问被拒绝。
应用程序安全性
ABAC的主要优势之一是可以以技术中立的方式定义授权策略和属性。这意味着为API或数据库定义的策略可以在应用程序空间中重用。可以从ABAC中受益的常见应用程序有:
- 内容管理系统
- 企业资源计划
- 本地应用
- 网络应用
与API部分中描述的过程和流程相同的过程和流程也适用于此。
数据库安全性
数据库的安全性长期以来一直专门针对数据库供应商:Oracle VPD,IBM FGAC和Microsoft RLS都是实现类似于ABAC的细粒度安全性的手段。
一个例子是:
- 政策:经理可以查看其所在地区的交易
- 以数据为中心的方式重做策略:的用户
role == manager
可以采取行动== SELECT on table == TRANSACTIONS if user.region == transaction.region
数据安全性
数据安全性通常比数据库安全性更进一步,并将控制直接应用于数据元素。这通常称为以数据为中心的安全性。在传统的关系数据库上,ABAC策略可以使用带有过滤条件和基于属性的屏蔽的逻辑控件来控制对表,列,字段,单元格和子单元格中数据的访问。属性可以是数据,用户,会话或工具,以在动态授予/拒绝对特定数据元素的访问时提供最大程度的灵活性。在大数据和分布式文件系统(如Hadoop)上,应用于数据层的ABAC控制对文件夹,子文件夹,文件,子文件和其他粒度的访问。
大数据安全性
基于属性的访问控制也可以应用于Hadoop等大数据系统。从数据湖中检索数据时,可以应用与以前使用的策略相似的策略。
文件服务器安全性
从Windows Server 2012开始,Microsoft已实施ABAC方法来控制对文件和文件夹的访问。这是通过动态访问控制列表(DACL)和安全描述符定义语言(SDDL)实现的。SDDL可以视为一种ABAC语言,因为它使用用户(声明)的元数据和文件/文件夹的元数据来控制访问。