学习NGAC权限访问控制模型

什么是NGAC?

NGAC,即下一代访问控制,采用将访问决策数据建模为图形的方法。NGAC 实现了一种系统的、策略一致的访问控制方法,以高粒度授予或拒绝用户管理能力。NGAC 由NIST(美国国家标准与技术研究院)开发,目前用于Tetrate QTetrate Service Bridge

NGAC架构图

  • 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是一个属性(可能是用户属性或对象属性)

有几种类型的实体;它们代表您要保护的资源、它们之间的关系以及与系统交互的参与者。实体是:

  1. 用户
  2. 对象
  3. 用户属性,例如组织单位
  4. 对象属性,例如文件夹
  5. 策略类,例如文件系统访问、位置和时间

NIST 的 David Ferraiolo 和Tetrate的 Ignasi Barrera在旧金山 2019 年服务网格日的下一代访问控制演示中分享了 NGAC 的工作原理。

NGAC 是基于这样的假设:您可以在一个图表中表示您想要保护的系统,该图表代表您想要保护的资源和您的组织结构,以一种对您有意义并且符合您的组织语义的方式。在这种对您的组织非常特殊的模型之上,您可以覆盖策略。在资源模型和用户模型之间,定义了权限。通过这种方式,NGAC 提供了一种优雅的方式来表示您想要保护的资源、系统中的不同参与者,以及这两个世界如何通过权限绑定在一起。

NGAC策略权限模型

通过线性时间算法使用多策略访问控制系统限制内部访问的图像

NGAC 示例

以下示例描述了一个简单的 NGAC 图,其中一个用户 DAG 表示组织结构,一个对象 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-Masterhttps://pm-master.github.io/pm-master/
7、为什么应该选择使用 NGAC 作为权限控制模型: https://jimmysong.io/blog/why-you-should-choose-ngac-as-your-access-control-model/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值