我的理解
NGAC模型就是将一个对象(关联)的某种属性与另一个对象(关联)的某种属性之间建立起一种访问控制策略。对象关联的节点也可以看作是这个对象的属性。
前言
随着“云大物移”的不断兴起,企业IT架构正在从“有边界”向“无边界”转变,传统的安全边界逐渐瓦解。而以5G、工业互联网为代表的新基建的不断推进,更进一步加速了“无边界”的进化过程。与此同时,零信任安全逐渐进入人们的视野,成为解决新时代网络安全的新理念、新架构、新解决方案。
为什么 NGAC 的细粒度授权策略现在至关重要
由于物联网、BYOD、云和 SaaS 等技术的发展和广泛采用,访问控制概念的根本改变变得非常必要。原因很明显。
虽然旧的访问控制方法旨在满足集中管理所有用户的企业的授权需求,但当今的 IT 现实要求公司处理他们不管理身份的用户,并在不断变化和分布的情况下保护数字资产环境。
著名程序员 Alan Perlis 曾经说过:“简单不先于复杂,而是跟随它。” 在访问控制的背景下,他的话是正确的。随着企业采用新技术并将越来越多的资源转移到云端——NGAC,专为基于云的分布式部署而设计——简化了访问控制并应对当今无边界网络的安全挑战。
下一代访问控制(NGAC)是对传统访问控制的重新发明,以适应现代、分布式、互联企业的需求。NGAC的设计是可扩展的,支持广泛的访问控制策略,同时执行不同类型的策略,为不同类型的资源提供访问控制服务,并在面对变化时保持可管理。NGAC遵循一种基于属性的构造,其中特征或属性用于控制对资源的访问,并描述和管理策略。
该标准规定了NGAC框架的体系结构、安全模型和接口,以确保其在不同类型的实现环境中在一系列可伸缩性级别上实现,并获得必要级别的内聚和功能,以在系统级别上正确有效地操作。
什么是NGAC?
NGAC,即下一代访问控制,采用将访问决策数据建模为图形的方法。NGAC 实现了一种系统的、策略一致的访问控制方法,以高粒度授予或拒绝用户管理能力。NGAC 由NIST(美国国家标准与技术研究院)开发,目前用于Tetrate Q和Tetrate Service Bridge。
- COPS协议简介:COPS协议是由IETF资源分配工作组(RAP)制定的维护管理协议。
COPS定义了三个逻辑实体:策略决策点(PDP)、策略执行点(PEP)、本地策略决策点(LPDP),其中LPDP备份PDP的决策,当PDP与PEP的连接中断时,LPDP可代替PDP做出决策,PDP具有最终裁决权。PDP与PEP的关系可以看作是服务器与客户机的关系,PEP向远端的PDP发送配置、更新、删除等请求,PDP收到后,将决策响应回送给PEP,PEP执行相关的操作。
- Policy Class:某些用户、用户属性、对象和对象属性与访问控制策略的从属关系
ua---ars---at:ua是一个用户的属性,ars是一组访问权限,at是一个属性(可能是用户属性或对象属性)
有几种类型的实体;它们代表您要保护的资源、它们之间的关系以及与系统交互的参与者。实体是:
- 用户
- 对象
- 用户属性,例如组织单位
- 对象属性,例如文件夹
- 策略类,例如文件系统访问、位置和时间
NIST 的 David Ferraiolo 和Tetrate的 Ignasi Barrera在旧金山 2019 年服务网格日的下一代访问控制演示中分享了 NGAC 的工作原理。
NGAC 是基于这样的假设:您可以在一个图表中表示您想要保护的系统,该图表代表您想要保护的资源和您的组织结构,以一种对您有意义并且符合您的组织语义的方式。在这种对您的组织非常特殊的模型之上,您可以覆盖策略。在资源模型和用户模型之间,定义了权限。通过这种方式,NGAC 提供了一种优雅的方式来表示您想要保护的资源、系统中的不同参与者,以及这两个世界如何通过权限绑定在一起。
NGAC 示例
以下示例描述了一个简单的 NGAC 图,其中一个用户 DAG 表示组织结构,一个对象 DAG 表示文件系统中的文件和文件夹,文件的分类,以及两个不同的策略 - 文件系统和范围 - 可以组合起来访问决策。两个 DAG 之间的关联边定义了参与者对目标资源的权限。
在此图中,我们可以看到“/hr-docs”文件夹中两个文件的表示,“resume”和“contract”,每个文件都链接到一个类别(“public/confidential”)。还有两个策略类,“文件系统”和“范围”,其中附加了图中的对象——需要满足这些才能访问每个文件。
在示例中,用户 Allice 对这两个文件具有读取和写入权限,因为路径将 Allice 链接到每个文件,并且这些路径授予对两个策略类的读写权限。但是,用户 Bob 只能访问“resume”文件,因为尽管存在从 Bob 到“contract”文件的路径,该路径满足“文件系统”策略类的“读取”权限,但没有授予权限的路径“范围”策略类。因此,拒绝 Bob 访问“contract”文件。
为什么选择NGAC?
在 ABAC 的情况下,需要跟踪所有对象的属性会造成可管理性负担。RBAC 减轻了负担,因为我们提取了角色的所有访问信息,但是这种范式存在角色爆炸问题并且也可能变得难以管理。借助 NGAC,我们可以在图表中——以紧凑、集中的方式,获得所需的一切。
当访问决策复杂时,ABAC 的处理时间会成倍增加。RBAC 变得特别难以大规模管理,而 NGAC 则可以线性扩展。
NGAC 真正闪耀的地方在于其灵活性。不仅可以根据对象属性,还可以根据其他条件(如时间、位置、天气等)将其配置为允许或禁止访问。
NGAC 的其他主要优势包括能够一致地设置策略(以满足合规性要求)和设置临时策略的能力。例如,NGAC 可以在中断期间授予开发人员对资源的一次性访问权限,而不会留下可能导致安全漏洞的不必要权限。NGAC 可以在单个访问决策中评估和组合多个策略,同时保持其线性时间复杂度。
概括
下表从几个方面比较了 ABAC、RBAC 和 NGAC。
综上所述:
权限模型 | 优点 | 缺点 |
---|---|---|
ABAC | 灵活 | 性能和可审计性问题 |
RBAC | 更简单且具有良好的性能 | 角色爆炸、固定的访问权限、合规需求挑战 |
NGAC | 细粒度、利于审计、灵活、组合权限策略 | 复杂 |
NGAC 通过使用一种新颖、优雅的革命性方法来弥补这些差距:在用户提供的现有世界表示之上覆盖访问策略。您也可以对 RBAC 和 ABAC 策略进行建模。
NGAC标准规范
NGAC通过一组标准化的、通用的关系(Relation)和功能(Function)来定义访问控制,这些关系和功能在策略的表达和执行中是可重用的。
1、策略及其属性元素
NGAC的访问控制数据由基本元素、容器(即属性)和可配置关系组成。
2、关系
NGAC不是通过规则来表达策略,而是通过配置4种类型的关系(Relation)来表达策略,这些关系包括:
-
指派(Assignment,用于定义容器的成员关系)
使用元组(x,y)来指代将元素x指派给元素y,指派关系通常意味着包含(x包含在y中)。 -
关联(Association,用于确定特权)
关联是一个三元组,用ua---ars---at表示,含义是,ua中包含的用户可以对at引用的策略元素执行ars中的访问权限。 -
禁止(Prohibition,用于指定特权例外)
u_deny(u,ars,¬pe),ua_deny(ua,ars,¬pe)和p_deny(p,ars,¬pe)是指用户u、被指派给ua的用户和进程p不能对不在pe中的策略元素执行ars中的访问权限。 -
职责(Obligation,用于动态改变访问状态)
职责关系以(ep, r)对的形式表示,其含义为“当ep发生时,执行r”,其中ep是事件模式,r是一系列管理操作(称为响应)。
参考:
1、浅谈零信任之访问控制模型:https://www.freebuf.com/articles/network/279497.html
2、为什么您应该选择 NGAC 作为您的访问控制模型:https://thenewstack.io/why-you-should-choose-ngac-as-your-access-control-model/#:~:text=NGAC%2C%20or%20Next%20Generation%20Access%20Control%2C%20takes%20the,administrative%20capabilities%20with%20a%20high%20level%20of%20granularity.
3、XACML与NGAC的分析比较:https://zhuanlan.zhihu.com/p/412634196
4、What is ABAC (Attribute Based Access Control)?:https://frontegg.com/blog/rbac-vs-abac
5、NIST 零信任标准:SP 800-204 系列:https://www.tetrate.io/blog/nist-standards-for-zero-trust-the-sp-800-204-series/?utm_source=thenewstack&utm_medium=website
6、 PM-Master: https://pm-master.github.io/pm-master/
7、为什么应该选择使用 NGAC 作为权限控制模型: https://jimmysong.io/blog/why-you-should-choose-ngac-as-your-access-control-model/