目录
一、基于NGAC的低代码模型权限管理方案
二、多策略访问控制系统限制内部访问的线性时间算法
1、概述
2、权限控制图遍历算法
一、基于NGAC的低代码模型权限管理方案
NGAC在低代码平台的权限决策模型:功能权限+数据权限
案例:对于七巧低代码开发平台,主策略组里有两个策略类:功能权限、数据权限。功能权限策略类,定义用户可以按照RBAC操作。数据权限类,定义用户能访问哪些开发平台资源。
推进方案
1、针对七巧应用配置策略。可配置全局应用策略,也可以配置单独应用的策略。
2、开放策略类定义、策略定义给用户。
3、初期,用户能配置的用户属性、资源属性限制在小范围内,避免性能要求太高,影响系统运行。
4、后期,随着对NGAC的理解加深和用户业务场景深入,逐步增加可配置属性。
需要解决的问题(使用场景):
1、用户u1,是否允许在对象o1上执行操作op1
2、用户u1可以访问对象的集合是什么,能对每个对象执行什么操作
3、哪些用户可以访问到对象o1,这些用户能对对象o1执行什么操作
4、审计—访问控制可视化(权限控制图展示)
为解决上述问题,我们学习了ANSI推出的一个权限控制算法。
二、多策略访问控制系统限制内部访问的线性时间算法
1、概述
美国国家标准协会(ANSI)通过标准化一种交流过程控制方法,即下一代访问控制(NGAC)[2,3],已经解决了这一需求。NGAC源于并与策略机器(PM)[11]保持一致,这是美国国家标准与技术研究所(NIST)的一项研究工作,旨在开发一个基于通用属性的访问控制(ABAC)框架[13]。NGAC旨在实现在单个访问控制机制中同时实例化多个访问控制策略,从而实现统一的访问控制决策和用户访问功能的重新视图。关于如何使用NGAC来执行DAC、MAC、RBAC和中国墙政策的例子可以从[10]获得。NGAC规范描述了使用集理论符号构成有效实现,但没有提供实现指导。这种方法为多种相互竞争的方法和实现留下了空间。虽然合适,但这就留下了一个重要的问题,即NGAC是否可伸缩。在这项工作中,我们发现现有的参考实现是低效的(使用三次算法),这表明NGAC可能是不可扩展的。主要的NGAC参考模型版本1.5 [20]只能扩展到一个包含几百个节点的测试模型,此时需要几分钟来可视化只有一个用户可用的对象集。回答NGAC的这个可伸缩性问题是至关重要的,因为NGAC是唯一一种可用的访问控制方法,可以同时为多个访问控制策略的实例化提供有效的决策和审查。
唯一可用的其他多策略访问控制方法是当前的市场领导者,即来自OASIS [22]的可扩展访问控制标记语言(XACML)标准[21]。其他相关的基于逻辑的策略ABAC模型(没有引用实现或不是多策略)包括ABACα [13]、HGABAC [26]和ABAC for Web服务[29]。XACML已经被经验证明缺乏可伸缩性在[27]3不同的XACML实现所有经验每性能问题在访问控制决策的性能下降随着策略数量的增加(XACML中的每个策略包含一组目标对象的访问规则)。此外,所有这些基于逻辑的策略ABAC模型都被证明是np完备的,它们只需确定用户访问特定资源[7]所需的访问属性(映射到可满足性问题)。因此,这些方法不能满足我们所说的对一个同时提供有效决策和审查的多政策系统的需要。因此,在确保限制内部人员访问敏感数据,以避免内部人员泄露信息方面,它们对于大型企业系统来说是不可取的。
在这项工作中,我们通过为访问控制决策和用户访问权限的审查提供线性时间算法,证明了NGAC是可扩展的。为了提供高效的决策能力,我们从图论的观点设计了一种有效的访问控制确定算法。我们首先将NGAC集理论转换为图表示(这很简单,因为规范本身经常使用图来说明示例)。不幸的是,合成的图表上有不寻常的特性和约束(有五种不同类型的节点,每种节点都有自己的语义)。因此,主要的挑战是如何将标准的图算法应用到这种表示中。我们的解决方案通常是使用宽度第一搜索(BFS)和深度第一搜索(DFS)变量执行一种拓扑排序原始操作,允许我们级联信息从一种类型的节点到另一个和渗透信息通过图,直到最终的答案。多次搜索的摊摊成本可以显示是线性的,从而产生线性时间复杂度算法。此外,它与整个访问控制图不是线性关系,而仅仅是与特定用户相关的图的部分。这可以提供更大的加速,避免甚至需要遍历整个图。
2、权限控制图遍历算法
使用NGAC规范[3]集理论定义,我们可以形成如下的访问控制图。需要创建5种类型的节点:用户(u) 、对象(o)、用户属性(ua)、对象属性(oa)和策略类(pc)。所有边都是定向的。根据每个规范,所有对象节点都是对象属性节点,但可能存在一个不是对象的对象属性。对象属性节点可能具有到oa节点和pc节点的边。但是,没有一个对象属性节点可以指向对象节点。用户节点是具有边到ua节点的源。用户属性节点可能具有到ua、oa或pc节点的边2.策略类节点是接收节点。禁止进行循环和自循环。对象属性的用户属性的边缘被标记为a一个或多个允许的操作(操作)(例如读取或写)。所有其他边都未标记。所有节点必须有至少一个pc节点的路径(不使用任何亚→o边)。为了达到复杂度评估的目的,u、o、ua和oa节点的数量是无界的。然而,假设pc节点的数量和ops集的基数是较小的常数。
这些连接性限制导致了我们可以利用的几个特性。整个图是一个有向无环图(DAG),它可以分为两个DAG:一个用户DAG(带有u和ua节点)和一个对象DAG(带有o和oa节点)。u个节点集作为用户DAG的源,o个节点集作为对象DAG的源。ua到oa边缘的集合桥接两个dag,这座桥是唯一一个标记边缘的地方,有操作(ops)。我们将这些桥接边两侧的节点集称为边界节点。pc节点集作为两个dag的接收器。所得到的整体图是弱连通的。现在可以表示一个任意的访问控制图,如图1所示。集合内的箭头表示该类型的节点可以有到该类型的其他节点的边,不允许循环。这意味着在pc节点集合中的节点之间没有边(u节点的集合和o节点的集合也是如此)。从ua节点集到oa节点,节点的箭头表示桥的边(它们包含ops标签,并连接用户和对象的dag)。桥边是确定用户权限的焦点(请参见下面的定义1)。
对于用户,u1,执行操作,操作1,对某个物体,o1,必须存在一组具有标签op的ua到oa边
缘1这样每条边的尾巴都能从u处到达1每个边的头都可以从o到达1其中,从头节点集可达的pc节点集是从o可达的pc节点集的超集1. 此定义有三个数据收集组件:
1、确定“活动的”ua到oa桥的边缘。这是具有标签op的桥接边缘集1以及从你可以到达那里的尾
巴1并且头部可以从o连接到1.这些活动的边缘是使u1可能有特权的操作1在o上1.
2、确定从每个活动桥边的头部可到达的pc节点集。这些pc节点的联合是op的“覆盖”策略类的
集合1.
3、确定从o中可访问的pc节点集1.这些是“需要”要被覆盖的策略类。
点点关注,下期精彩继续。
道一云七巧-与你在技术领域共同成长
更多技术知识分享:https://bbs.qiqiao668.com/