基于属性的访问控制
(attribute-based access control,ABAC)
简单来说,对于 ABAC 我们判断一个用户是否能访问某项资源,是对其很多不同属性的计算而得到的。
访问控制
访问控制是数据安全的一个基本组成部分,它规定了哪些人可以访问和使用公司信息与资源。通过身份验证和授权,访问控制策略可以确保用户的真实身份,并且拥有访问公司数据的相应权限。访问控制还适用于限制对园区、建筑、房间和数据中心的物理访问。工作原理
访问控制通过验证多种登录凭据以识别用户身份,这些凭据包括用户名和密码、PIN、生物识别扫描和安全令牌。许多访问控制系统还包括多因素身份验证,多因素身份验证是一种需要使用多种身份验证方法来验证用户身份的办法。
验证用户身份后,访问控制就会授予其相应级别的访问权限以及与该用户凭据和 IP 地址相关的允许的操作。
访问控制主要有四种类型。组织通常会根据其独特的安全和合规要求,选择行之有效的方法。这四种访问控制模型分别是:
- **自主访问控制 (DAC) **
采用这种方法时,受保护系统、数据或资源的所有者或管理员可以设置相关策略,规定谁可以访问。 - **强制访问控制 (MAC) **
这种非自主模型则会根据信息放行来授予访问权限。中央机构根据不同的安全级别来管理访问权限,这在政府和军事环境中非常常见。 - **基于角色的访问控制 (RBAC) **
RBAC 根据定义的业务功能而非个人用户的身份来授予访问权限。这种方法的目标是为用户提供适当的访问权限,使其只能够访问对其在组织内的角色而言有必要的数据。这种方法是基于角色分配、授权和权限的复杂组合,使用非常广泛。 - 基于属性的访问控制 (ABAC)
采用这种动态方法时,访问则是基于分配给用户和资源的一系列属性和环境条件,例如时间和位置。
相关术语
- Attribute:属性,用于表示 subject、object 或者 environment conditions 的特点,attribute 使用 key-value 的形式来存储这些信息,比如我在公司的 role 是 developer,role 是 key,developer 是 value,而我的小组昵称袋熊,key 是 team,value 是 wombat。
- Subject:常常指代使用系统的人或者其他使用者(non-person entity,NPE),比如说客户端程序,访问 API 的 client 或者移动设备等等。当然一个 subject 可以有多个的 attributes,就像用户属性这些我们曾经用过的名词一样。
- Object:指代我们这个 ACM 需要管理的资源,比如文件,比如某项记录,比如某台机器或者某个网站,任何你需要进行访问控制的资源都可以称为 object,同样 object 也可以有多项属性,比如袋熊组的桌子,或者洛克组的线上实例,我们也常常使用 resource 来描述这些资源,但是在 ABAC 的环境下,我们称为 object。
- Operation:有了 object 有了 subject,自然就有了 subject 需要做的事情,比如查看某条记录,登录某台服务器,使用某个 SaaS 服务进行报销或者查看候选人的作业。往往包括我们常说的读、写、修改、拷贝等等,一般 operation 是会表达在 request 中的,比如 HTTP method。
- Policy:通过 subject、object 的 attribute 与 environment conditions 一起来判断 subject 的请求是否能够允许的关系表示,比如说:policy 可以用人类语言这样表达,只有袋熊组的人才能访问这几台服务器,或者只有在办公室才能访问这些资源,但对于机器来说,无非就是一个判断语句罢了。当然了,policy 可以是一堆这样 boolean 逻辑判断的组合,比如只有公司的正式员工、并且在公司的六楼区域的网络中,才能访问某个服务。你可以使用 Specification Pattern 来实现 policy,其实没那么复杂。
- Environment Conditions:表示目前进行的访问请求发生时,的操作或情境的上下文。Environment conditions 常常用来描述环境特征,是独立于 subject 与 object 的,常用来描述系统的情况:比如时间,当前的安全等级,生产环境还是测试环境等等。
ABAC授权的步骤
用户在携带自身的属性值包括主题属性,资源属性,环境属性,然后向资源发送请求,授权引擎 会根据subject所携带的属性进行判断,然后会给出拒绝或者同意的结果给用户,然后就可以访问资源。
- 用户访问资源,发送原始请求。
- 请求发送到策略实施点(PEP),PEP构建xacml格式请求。
- PEP将xacml请求发送到策略决策点(PDP)。
- PDP根据xacml请求,查找策略管理点(PAP)中的策略文件。
- PDP从策略信息点(PIP)查找策略文件中需要的属性值(主体、资源、环境属性)。
- PDP将决策结果(permit、deny、不确定、不适用)返回给PEP。
- PEP发送请求到资源,并把资源返回给用户。
技术优势
-
无需改造用户端和服务端
炼石CipherGateway无需修改原有应用的用户端和服务端,通过短时间部署即可“透明”实现和补充业务应用系统的ABAC能力,不需额外培训用户,即使发生问题,也可在分钟级别时间内恢复应用使用,不会影响现有业务的正常运营,使上线切换风险降到最低。
-
能够适应数据实时动态变化
面对数据频繁变化,炼石CipherGateway从整体角度考虑,使ABAC功能能够根据数据在不同阶段的属性配置相应的访问控制策略,通过实时获取请求者、环境和被访问数据三要素的属性信息,触发相应的访问控制策略,从而实现访问控制的动态管理,降低企业的管理和运营成本。
-
能够适应跨应用的数据访问控制
在企业应用大集成下,数据会在异构系统间流转,而对于数据的访问仍然由相应的应用各自进行管理。炼石CipherGateway的ABAC功能可以与数据的全生命周期相结合,将数据在流转和使用过程中的各种状态、所在应用环境等因素作为属性进行管理,并进一步作为访问控制策略的依据。
-
能够适应数据保密性的要求
为保证服务端数据安全,除了需加强数据安全访问控制外,还需考虑进行加密保护。炼石CipherGateway的ABAC功能可以根据企业敏感数据的属性特征值,使用专利加密技术,对数据进行有选择的加密,而不是“一刀切”加密,在不影响性能和正常工作效率的情况下,增强企业数据的安全性。