精华内容
下载资源
问答
  • 网络游戏-利用ABAC模型控制网络服务组合的访问方法.zip
  • 针对云环境下基于属性的访问控制模型中决策不连续以及授权不灵活的问题,通过引入元状态以及使用控制中义务与条件的概念,提出一种改进的基于属性的访问控制模型。该模型通过对义务集的监控实现状态的转换,从而触发...
  • 在DAC、MAC的基础上, RBAC出现了,RBAC是迄今为止最为普及的权限设计模型。RBAC模型中在用户、权限之间引入“角色(Role)”概念。 RBAC把权限管理过程抽象为“判断逻辑表达式的值是否为True”的求解过程,而...

    1

    基于角色的访问控制

     

    (RBAC: Role-Based Access Control)

     

     

    在DAC、MAC的基础上, RBAC出现了,RBAC是迄今为止最为普及的权限设计模型。RBAC模型中在用户、权限之间引入“角色(Role)”概念。

     

    RBAC把权限管理过程抽象为“判断逻辑表达式的值是否为True”的求解过程,而逻辑表达式为:

     

    Who是否可以对What进行How的访问操作(Operator)

     

    将权限问题转换为Who、What、How的问题。并把who、what、how作为访问权限三元组。

     

    • Who:权限的拥用者或主体(如Principal、User、Group、Role、Actor等等)

    • What:权限针对的对象或资源(Resource、Class)。

    • How:具体的权限(Privilege,正向授权与负向授权)。

    • Operator:操作。表明对What的How操作。也就是Privilege+Resource

    • Role:角色,一定数量的权限的集合。权限分配的单位与载体,目的是隔离User与Privilege的逻辑关系.

    • Group:用户组,权限分配的单位与载体。权限不考虑分配给特定的用户而给组。组可以包括组(以实现权限的继承),也可以包含用户,组内用户继承组的权限。User与Group是多对多的关系。Group可以层次化,以满足不同层级权限控制的要求。

     

    RBAC的关注点在于Role和User,Permission的关系。称为User assignment(UA)和Permission assignment(PA).关系的左右两边都是Many-to-Many关系。就是user可以有多个role,role可以包括多个user。

     

    RBAC96提供了四个概念模型:RBAC0~RBAC3

     

    1、基本模型-RBAC0:定义了支持RBAC模式的任何产品的最低需求。

    2、高级模型-RBAC1、RBAC2:包含RBAC0,各自增加了独立的特点。

    RBAC1增加了角色分级概念,一个角色可以从另一个角色继承许可权。

    RBAC2增加了一些限制,强调在RBAC的不同组件中配置方面的一些限制。

    3、统一模型-RBAC3:包含了RBAC1、RBAC2,RBAC0。

     

     

    01

    RBAC0

     

    RBAC0的模型中包括用户(U)、角色(R)和许可权(P)等3类实体集合。RABC0权限管理的核心部分,其他的版本都是建立在0的基础上的,看一下类图:

     

     

     

    RBAC0定义了构成RBAC系统的最小元素集合。

     

    RBAC中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素,

     

    模型指明用户、角色、访问权限和会话之间的关系:

     

    ↘       每个角色至少具备一个权限,每个用户至少扮演一个角色

    ↘       可以对两个完全不同的角色分配完全相同的访问权限

    ↘       会话由用户控制,一个用户可以创建会话并激活多个用户角色,从而获取相应的访问权限,用户可以在会话中更改激活角色,并且用户可以主动结束一个会话。

    ↘       用户和角色是多对多的关系,表示一个用户在不同的场景下可以拥有不同的角色

     

    例如:产品经理也可以是项目经理;同样一个角色也可以给多个用户,如设置多个产品经理,项目经理等。

     

    用户和许可彼此独立,使权限的授权认证更加灵活。角色和许可(权限)是多对多的关系,表示角色可以拥有多种权利,同一个权利可以授给多个角色这些结合组织内部的角色来理解还是容易明白的。

     

     

    02

    RBAC 1

     

    带有角色继承的RBAC1是指角色可以继承于其他角色,在拥有其他角色权限的同时,自己还可以关联额外的权限。

     

    这种设计给角色分组和分层,简化了权限管理工作。

     

    RBAC1引入角色间的继承关系,让角色有了上下级的区别,通常角色的继承关系可分为一般继承关系和受限继承关系。

     

    ↘  一般继承关系允许角色间的多继承。

    ↘  受限继承关系要求角色继承关系是树结构,实现角色间的单继承。

     

     

     

    03

    RBAC2

     

    RBAC2 模型中添加了责任分离关系。规定了权限被赋予角色时,角色被赋予用户时,当用户在某一时刻激活一个角色时应遵循的强制性规则。设置责任分离是为了避免用户拥有过多权限而产生利益冲突,例如:产品经理同时拥有测试人员的权限,容易让用户职责出现冲突。

     

    责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限关系一起决定了RBAC2模型中用户的访问许可

     

    ↘       静态职责分离(Static Separation of Duty):定义了用户无法同时被赋予有冲突的角色。

    ↘       动态职责分离(Dynamic Separation of Duty):定义了用户在一次会话(Session)中不能同时激活自身所拥有的、互相有冲突的角色,只能选择其一。

     

     

     

    RBAC 2中的职责分离冲突情况集中在:

     

    互斥角色 :一个用户只能被分配一组互斥角色中的一个角色。互斥角色指权限互相制约的两个角色。

     

    例如:在审计管理产品中,一个人不能同时被指派为会计角色和审计员两个角色。

     

    基数约束 :限止一个角色被分配的用户数量;限止一个用户分配的角色数目;限止一个角色的访问权限数目,

     

    例如:产品中的高级权管理。具备产品高级权限的用户应是有限的;

     

    先决条件角色 :分配角色给用户时可设置先决条件即:仅当该用户已经是另一角色的成员时;分配访问权限给角色,仅当该角色已经拥有另一种访问权限。也就是说想获得较高的权限,要首先拥有低一级的权限。

     

    例如:审计系统中成为审计员的,必须是会计师角色。

     

    运行时互斥 :允许一个用户具有两个角色的成员资格,但在运行中不可同时激活这两个角色。

     

    04

    RBAC3

     

    RBAC3是最全面级的权限管理,基于RBAC0,将RBAC1、RBAC2进行整合,也是最复杂的。

     

     

    RBAC模型无法支持带操作顺序的控制机制。因此RBAC模型很难适应那些有严格操作次序的实体系统。

     

    如:购物控制系统中要求系统对购买步骤进行控制,客户未付款之前不能把商品拿走。

     

    RBAC是在用户和权限之间进行设计,少涉及用户和对象之间的权限判断,而在实际业务系统中限制用户能够使用的对象是很常见的需求。

     

    例如:华中区域的销售无权查询华南区域的客户数据,虽然他们都具有销售的角色,而销售的角色拥有查询客户信息的权限。

     

     

    2

    基于属性的权限验证

     

    (ABAC: Attribute-Based Access Control)

     

     

    ABAC有时也被称为PBAC(Policy-BasedAccess Control)或CBAC(Claims-Based Access Control),不同于常见的用户通过某种方式关联到权限的方式。

     

    ABAC是通过动态计算一个或一组属性是否满足某种条件而进行授权判断。属性通常分为四类:

     

    ↘       用户属性(如用户年龄)

    ↘       环境属性(如当前时间)

    ↘       操作属性(如读取)

    ↘       对象属性(如一篇文章,又称资源属性)

     

    理论上来说,可以实现灵活的权限控制以满足各种类型需求。在实现ABAC时如果规则为:“允许所有产品经理在上班时间自由出入企业”这条规则,“产品经理”是用户的角色属性,“上班时间”是环境属性,“出入”是操作属性,而“企业大门”是对象属性。

     

    ABAC有如下特点:

     

    ↘       集中化管理

    ↘       可以按需实现不同颗粒度的权限控制

    ↘       不需要预定义判断逻辑,减轻了权限系统的维护成本,特别是在需求经常变化的系统中

    ↘       定义权限时,不能直观看出用户和对象间的关系

    展开全文
  • Windows中的文档系统的权限设计就是“自主访问控制”模型的典型应用。     Windows的文件权限   然而DAC最大缺陷是权限控制分散,不便于管理。例如在文档权限管理中,我们无法将一组文件设置成...

    自主访问控制(DAC: Discretionary Access Control)

     

    自主访问控制中,产品中的操作对象被设置了权限等级。

     

    在用户登陆时,系统识别用户,根据被操作对象(Subject)的权限控制列表(ACL: Access Control List)或者权限控制矩阵(ACL: AccessControl Matrix)信息设置用户能对哪些操作对象进行何种操作,例读取操作或能够修改操作对象。

     

    更具特点的是,拥有对象权限的用户,还可以将对象权限分配给其他用户,所以叫“自主(Discretionary)”控制。

     

    Windows中的文档系统的权限设计就是“自主访问控制”模型的典型应用。

     

     

    Windows的文件权限

     

    然而DAC最大缺陷是权限控制分散,不便于管理。例如在文档权限管理中,我们无法将一组文件设置成统一权限开放给指定的一群用户。

     

    强制访问控制(MAC: Mandatory Access Control)

     

    MAC弥补DAC权限控制过于分散的问题。

     

    MAC设计中所有的访问控制策略都由系统管理员来制定,用户无法改变。每个对象都有权限标识,每个用户也会有权限标识,用户能否操作某个对象判断在于两个权限标识的关系,而关系判断通常由系统做硬性限制。

     

    如:用户甲查看文档A,此时系统给出这样的提示“无法访问,需要一级许可”,这说明文档本身有“一级许可”的权限标识,而用户权限不具备。

     

    MAC一般会给用户和资源进行分级,比如:

     

    用户级别:高级,中级,普通

    文件级别:绝密,保密,公开

     

    由系统管理员会制定访问策略,比如高级用户可以访问所有类型的文件,中级用户可以访问保密级别以下的文件,而普通用户只能访问公开的文件。

     

    一般强制访问控制采用以下几种方法:

     

    (1)限制访问控制

    一个持洛伊木马可以攻破任何形式的自主访问控制,由于自主控制方式允许用户程序来修改他拥有文件的存取控制表,因而为非法者带来可乘之机。

     

    MAC不提供这一方便,在这类系统中,用户要修改存取控制表的唯一途径是请求一个特权系统调用。该调用的功能是依据用户终端输入的信息,而不是靠另一个程序提供的信息来修改存取控制信息。

     

    (2)过程控制

    在通常的计算机系统中,只要系统允许用户自己编程,就没办法杜绝木马。但可以对其过程采取某些措施,这种方法称为过程控制。

     

    例如,警告用户不要运行系统目录以外的任何程序。提醒用户注意,如果偶然调用一个其它目录的文件时,不要做任何动作,等等。需要说明的一点是,这些限制取决于用户本身执行与否。

     

    (3)系统限制

    对系统的功能实施一些限制。

     

    比如,限制共享文件,但共享文件是计算机系统的优点,所以是不可能加以完全限制的。再者,就是限制用户编程。不过这种做法只适用于某些专用系统。在大型的,通用系统中,编程能力是不可能去除的。

     

    MAC适用在对保密性要求比较高的系统中,比如军方机构。商业系统中使用MAC的有SE Linux和Trusted Solaris。而对于大部分的商业服务型系统来说,略显死死板不够灵活。

     

    下次我们将继续讲解权限系统的设计细节,请持续关注哦~ 

    展开全文
  • 本文分为上下两篇,上篇讲一些权限系统设计领域的一些基本概念,以及基本模型的使用,下篇讲我们京东北极星商业操作系统在复杂权限管控的场景上面的一些探索和实践,依然保持我本人写文章废话不多说的风格,我们...

    之前jvm写到ZGC了,文章被搞没了,很伤心,jvm先暂停一段时间,后边会续上,先写一下权限系统设计。 本文分为上下两篇,上篇讲一些权限系统设计领域的一些基本概念,以及基本模型的使用,下篇讲我们京东北极星商业操作系统在复杂权限管控的场景上面的一些探索和实践,依然保持我本人写文章废话不多说的风格,我们直接开始。 一、基础概念 1、越权访问 权限系统设计的目的是为了将系统使用者对系统的操作约束在一个合法的范围内,系统的使用者不一定是人,也可能是另外一个系统,如果操作不在合法范围内,就会发生越权访问行为,越权访问会造成非常严重的安全问题,被OWASP列为Web应用十大安全隐患的第二名。越权访问主要分为水平越权和垂直越权两种。

    垂直越权

    垂直越权是一种权限非法提升的行为,比如说现在有个系统,它的普通用户使用的页面是xxx.com/user , 管理员使用的页面是xxx.com/manager ,但是后台系统并没有去做权限的控制,我们便可以在登陆之后带着普通用户的令牌直接跳到管理员的页面去做一些不可描述的事情,用一张图简单来描述如下:


    即用户通过某种非法手段使自己的可操作范围提升

    水平越权

    水平越权主要是因为服务端没有判断数据的归属所造成的越权行为,比如说,现在我们登陆了一个系统,进入了查看用户id为1的详细信息的页面,这个页面的url是这样子的:xxx.com/user/1 ,然后我使个坏,把最后面的1改成了2,这时候由于后端系统没有判断我是否可以查看id为2的用户,就把数据返回给了我。


    即基于数据访问设计的漏洞所造成的越权访问。 站在服务端设计的角度我们可以很容易看出来,垂直越权指的是访问了不该访问的API,而水平越权则是访问到了不该访问的数据,这一点很重要。 2、鉴权 鉴权指的是在进行一个操作的时候,需要权限系统先去判断用户是否具有进行这个操作的权限,在某些复杂场景之下还会包括对请求数据的归属权的校验。 二、经典设计模型 在讲模型之前,我们首先要明白权限管控的真正含义是:判断请求者在某些条件下是否对请求数据具备某个**操作(API)**的能力。 注意黑体的四个词,1、请求者,2、某些条件,3、请求数据,4、操作(API) 复制代码 我们一个一个来解释一下,请求者一般来说是用户,也有可能是某个系统,亦或者是一段代码;某些条件,有可能是环境条件,比如说某个API只允许10.122.131.1这个ip来访问,或者说只能在晚上访问,或者说只能在周内访问此类;请求数据即本次请求要求操作的数据,比如说查看id为1的用户的具体信息;鉴权(api) 即对这个数据做的事情,是查看还是还是修改,注意修改其实也包含了删除。 1、RBAC(Role Based Access Control) 汉语译为基于角色的访问控制,这应该是当今IT系统使用的最多的权限管控模型,用一个图来简单描述如下:


    上图是一个简单的业务场景中订单操作的相关场景 角色即为 操作(API) 的聚合 ,RBAC通过给用户绑定某个角色,使用户具备了某些操作的能力,这是最简单的RBAC模型,学术上也称为RBAC0,与之对应的还有RBAC1、RBAC2、RBAC3,RBAC1是引入了角色继承的关系,角色继承很容易理解,即角色B继承了角色A,那么当用户绑定了角色B的时候,也就具备了角色A的操作能力;RBAC2是引入了角色互斥的关系,比如如果用户绑定了角色A就不能绑定角色B,这是因为考虑到现实世界中如果是运动员就不能是裁判这样的业务场景;RBAC3则是结合了RBAC1和RBAC2的能力,同时拥有角色互斥和角色继承的功能。 在有的权限系统的中,为了方便用户的使用,还衍生出了权限组或者是用户组的实体模型,权限组是一类API的聚合,比如用户操作权限组就可以包含对用户数据的增删查改操作,使用权限组的时候,角色不是和api去绑定,而是去和权限组绑定;用户组是将某一类用户分组,这个分组和角色去绑定,而不是用户和角色绑定,这样只要用户加入了这个组,就具备了某些操作权限,现实世界中这个组也有可能是公司部门等实体。 我们可以看出来,在RBAC中,不管实体怎么变,角色(Role) 的本质其实就是一系列API操作的聚合,通过用户与角色的直接或者间接绑定,使用户具备了某些操作的能力,这也是RBAC的本质。 2、ABAC(Attribute Based Access Control) ABAC 翻译过来意思是基于属性的权限访问控制 ,这个模型在如今的云系统中使用的比较多,比如AWS,阿里云,腾讯云,京东云等,它们都是用ABAC来管控IaaS以及PaaS的资源,曾经K8s也使用过这个模型来进行权限管控。 我们上面说过,RBAC的能力可以用这么一句话来描述:一个用户通过和角色绑定,具备了一些对数据操作的能力,往简单的说就是一个用户有了一些对数据操作的能力。但是,如果在复杂的权限管控场景中,RBAC显得有些力不从心,比如说:

    用户在晚上不能访问这个系统,但是白天可以

    用户只能在内网对订单具备修改权限,而在外网就只有查看权限

    用户对2021-03-19日之前创建的订单有操作权限

    用户只能在深圳进行查看订单,而去了国外就不可以

    用户在公司内部可以访问所有数据,但是在外部就只能访问公开数据

    我们很容易就发现,RBAC仅仅描述了用户可以做什么操作,但是操作的条件,以及操作的数据,模型本身是没有这些限制的,这也是由于其模型能力的不足所导致的,但这却恰恰是ABAC的长处,ABAC的思想是基于用户、以及将要访问的数据的属性、以及各种环境因素去动态计算用户是否有权限进行操作。我们先简单介绍一下NIST ABAC设计指引中的一些术语:

    subject 指的是系统的使用者,可以是用户(user),也可以是其他非服务的个体(non-person entity,NPE)

    object 泛指被访问的数据

    operation/action 指操作行为,一般对应系统中的API

    policy 访问策略,它规定了一个用户在什么条件下可以对哪些数据做什么,是ABAC系统核心实体之一

    pdp pdp是policy decision point,策略点,其实我理解这玩意就是一个policy的展示出来的形式而已

    pep pep是policy enforcement point,策略执行点,简单说就是根据policy来鉴权

    acm acm是access control mechanism,权限管控机制,一般来说就是权限系统本身

    attribute 它泛指各种属性,可以是subject的,也可以是object的

    condition 各种额外的限制条件

    NIST的文章中,下图描述了上面术语之间的关系:


    很容易发现,ABAC仅仅受限于可以用来计算的属性的数量,这也很容易让很多人产生误解,误认为ABAC什么类型的权限都可以来管控,事实上,权限系统仅仅擅长于管控垂直越权,即使ABAC具备一定的管控水平越权的能力,也不要妄想可以用它来管控所有的水平越权。 这一点放在其他方面的系统设计中也是被证明的,那就是从来没有哪个方案亦或者是架构设计能成为无所不能的银弹。 复制代码 其他模型还有LBAC,IBAC,NGAC等,这里不再做介绍,读者可以自行了解 本篇仅仅做基础概念讲解,下一篇将会去和业界已存在的ABAC系统做对比,讲一讲京东北极星商业操作系统在ABAC方面的实践。

    之前jvm写到ZGC了,文章被搞没了,很伤心,jvm先暂停一段时间,后边会续上,先写一下权限系统设计。 本文分为上下两篇,上篇讲一些权限系统设计领域的一些基本概念,以及基本模型的使用,下篇讲我们京东北极星商业操作系统在复杂权限管控的场景上面的一些探索和实践,依然保持我本人写文章废话不多说的风格,我们直接开始。 一、基础概念 1、越权访问 权限系统设计的目的是为了将系统使用者对系统的操作约束在一个合法的范围内,系统的使用者不一定是人,也可能是另外一个系统,如果操作不在合法范围内,就会发生越权访问行为,越权访问会造成非常严重的安全问题,被OWASP列为Web应用十大安全隐患的第二名。越权访问主要分为水平越权和垂直越权两种。

    垂直越权

    垂直越权是一种权限非法提升的行为,比如说现在有个系统,它的普通用户使用的页面是xxx.com/user , 管理员使用的页面是xxx.com/manager ,但是后台系统并没有去做权限的控制,我们便可以在登陆之后带着普通用户的令牌直接跳到管理员的页面去做一些不可描述的事情,用一张图简单来描述如下:

    即用户通过某种非法手段使自己的可操作范围提升

    水平越权

    水平越权主要是因为服务端没有判断数据的归属所造成的越权行为,比如说,现在我们登陆了一个系统,进入了查看用户id为1的详细信息的页面,这个页面的url是这样子的:xxx.com/user/1 ,然后我使个坏,把最后面的1改成了2,这时候由于后端系统没有判断我是否可以查看id为2的用户,就把数据返回给了我。

    即基于数据访问设计的漏洞所造成的越权访问。 站在服务端设计的角度我们可以很容易看出来,垂直越权指的是访问了不该访问的API,而水平越权则是访问到了不该访问的数据,这一点很重要。 2、鉴权 鉴权指的是在进行一个操作的时候,需要权限系统先去判断用户是否具有进行这个操作的权限,在某些复杂场景之下还会包括对请求数据的归属权的校验。 二、经典设计模型 在讲模型之前,我们首先要明白权限管控的真正含义是:判断请求者在某些条件下是否对请求数据具备某个**操作(API)**的能力。 注意黑体的四个词,1、请求者,2、某些条件,3、请求数据,4、操作(API) 复制代码 我们一个一个来解释一下,请求者一般来说是用户,也有可能是某个系统,亦或者是一段代码;某些条件,有可能是环境条件,比如说某个API只允许10.122.131.1这个ip来访问,或者说只能在晚上访问,或者说只能在周内访问此类;请求数据即本次请求要求操作的数据,比如说查看id为1的用户的具体信息;鉴权(api) 即对这个数据做的事情,是查看还是还是修改,注意修改其实也包含了删除。 1、RBAC(Role Based Access Control) 汉语译为基于角色的访问控制,这应该是当今IT系统使用的最多的权限管控模型,用一个图来简单描述如下:

    上图是一个简单的业务场景中订单操作的相关场景 角色即为 操作(API) 的聚合 ,RBAC通过给用户绑定某个角色,使用户具备了某些操作的能力,这是最简单的RBAC模型,学术上也称为RBAC0,与之对应的还有RBAC1、RBAC2、RBAC3,RBAC1是引入了角色继承的关系,角色继承很容易理解,即角色B继承了角色A,那么当用户绑定了角色B的时候,也就具备了角色A的操作能力;RBAC2是引入了角色互斥的关系,比如如果用户绑定了角色A就不能绑定角色B,这是因为考虑到现实世界中如果是运动员就不能是裁判这样的业务场景;RBAC3则是结合了RBAC1和RBAC2的能力,同时拥有角色互斥和角色继承的功能。 在有的权限系统的中,为了方便用户的使用,还衍生出了权限组或者是用户组的实体模型,权限组是一类API的聚合,比如用户操作权限组就可以包含对用户数据的增删查改操作,使用权限组的时候,角色不是和api去绑定,而是去和权限组绑定;用户组是将某一类用户分组,这个分组和角色去绑定,而不是用户和角色绑定,这样只要用户加入了这个组,就具备了某些操作权限,现实世界中这个组也有可能是公司部门等实体。 我们可以看出来,在RBAC中,不管实体怎么变,角色(Role) 的本质其实就是一系列API操作的聚合,通过用户与角色的直接或者间接绑定,使用户具备了某些操作的能力,这也是RBAC的本质。 2、ABAC(Attribute Based Access Control) ABAC 翻译过来意思是基于属性的权限访问控制 ,这个模型在如今的云系统中使用的比较多,比如AWS,阿里云,腾讯云,京东云等,它们都是用ABAC来管控IaaS以及PaaS的资源,曾经K8s也使用过这个模型来进行权限管控。 我们上面说过,RBAC的能力可以用这么一句话来描述:一个用户通过和角色绑定,具备了一些对数据操作的能力,往简单的说就是一个用户有了一些对数据操作的能力。但是,如果在复杂的权限管控场景中,RBAC显得有些力不从心,比如说:

    用户在晚上不能访问这个系统,但是白天可以

    用户只能在内网对订单具备修改权限,而在外网就只有查看权限

    用户对2021-03-19日之前创建的订单有操作权限

    用户只能在深圳进行查看订单,而去了国外就不可以

    用户在公司内部可以访问所有数据,但是在外部就只能访问公开数据

    我们很容易就发现,RBAC仅仅描述了用户可以做什么操作,但是操作的条件,以及操作的数据,模型本身是没有这些限制的,这也是由于其模型能力的不足所导致的,但这却恰恰是ABAC的长处,ABAC的思想是基于用户、以及将要访问的数据的属性、以及各种环境因素去动态计算用户是否有权限进行操作。我们先简单介绍一下NIST ABAC设计指引中的一些术语:

    subject 指的是系统的使用者,可以是用户(user),也可以是其他非服务的个体(non-person entity,NPE)

    object 泛指被访问的数据

    operation/action 指操作行为,一般对应系统中的API

    policy 访问策略,它规定了一个用户在什么条件下可以对哪些数据做什么,是ABAC系统核心实体之一

    pdp pdp是policy decision point,策略点,其实我理解这玩意就是一个policy的展示出来的形式而已

    pep pep是policy enforcement point,策略执行点,简单说就是根据policy来鉴权

    acm acm是access control mechanism,权限管控机制,一般来说就是权限系统本身

    attribute 它泛指各种属性,可以是subject的,也可以是object的

    condition 各种额外的限制条件

    NIST的文章中,下图描述了上面术语之间的关系:

    很容易发现,ABAC仅仅受限于可以用来计算的属性的数量,这也很容易让很多人产生误解,误认为ABAC什么类型的权限都可以来管控,事实上,权限系统仅仅擅长于管控垂直越权,即使ABAC具备一定的管控水平越权的能力,也不要妄想可以用它来管控所有的水平越权。 这一点放在其他方面的系统设计中也是被证明的,那就是从来没有哪个方案亦或者是架构设计能成为无所不能的银弹。 复制代码 其他模型还有LBAC,IBAC,NGAC等,这里不再做介绍,读者可以自行了解 本篇仅仅做基础概念讲解,下一篇将会去和业界已存在的ABAC系统做对比,讲一讲京东北极星商业操作系统在ABAC方面的实践。

    从事IT行业多年,用Java,前端,知Python,有多年的开发经验。如果你正在入门学习Java可以申请加入我的Java学习交流QQ裙:639714511。文件我上传了我做Java这几年整理的一些学习手册,面试题,开发工具,PDF文档书籍教程,需要的话你们都可以自行来获取下载。

    展开全文
  • 针对传统访问控制模型难以解决的动态、细粒度访问控制问题,研究人员提出了基于属性的访问控制模型(attribute-based access control,简称ABAC).ABAC 模型基于实体属性而不是用户身份来判决允许或拒绝用户对 ...

    针对传统访问控制模型难以解决的动态、细粒度访问控制问题,研究人员提出了基于属性的访问控制模型(attribute-based access control,简称ABAC).ABAC 模型基于实体属性而不是用户身份来判决允许或拒绝用户对
    资源的访问控制请求.ABAC 模型的核心要素包括主体、资源、操作以及环境约束,这些要素统一使用属性和属性值来进行表示,属性间的关系可以根据访问控制需求进行灵活的设置,提高了访问控制策略语义的表达能力和模型的灵活性,并且能够将其他访问控制模型中权限、安全标签、角色等概念用属性来进行统一描述,适用于解决分布式环境下动态大数据的访问控制问题.基于如下原因,我们认为,ABAC 模型相比其他模型能更好地适用于大数据访问控制场景.

    (1) 细粒度访问控制:ABAC 模型通过属性来对实体及约束进行描述,能够严格控制访问者取得权限的各 种条件,精确设定属性-权限关系,实现最小权限原则;
    (2) 自主授权:ABAC 模型可为资源拥有者提供策略管理接口,策略无需由管理员统一设定,资源拥有者可以根据自身实际资源保护需求发布、更新、撤销策略,保证资源能够按照资源拥有者的意愿被访问;
    (3) 动态访问控制:ABAC模型依据请求者所具有的属性集合决定是否赋予其访问权限,实现了策略管理和权限判定的分离,且属性的设置与更新具有极大的灵活性和扩展性,可满足不同应用场景需求;
    (4)较小的系统开销:在用户和资源数量大幅度增加的情形下,传统 DAC,RBAC 等访问控制模型策略数目将呈指数级增长,系统维护难度及开销将极大增加.而 ABAC 模型中,策略随用户和资源的增长呈线性增加,当达到一定规模后,系统开销趋于平稳[35].

    为了便于本文的叙述,给出如下定义.

    定义 1. 属性项(attributeitem)是表示属性的基本单元,{xAttrName=attrValue}(xAttrName∈attrSet,attrValue∈Range(xAttrName),x∈{s,r,a,e})表示,xAttrName 表示属性名,attrValue 表示属性值.为了对不同类型的属性表示方便,用 x 表示属性类型,s,r,a,e 分别代表主体属性、资源属性、动作属性和环境属性.

    定义 2. 属性元组(attribute tuple)是同类型属性项的集合,用 xAttrTuple,x∈{s,r,a,e}表示,即:
    xAttrTuple{(xAttrName1=attrValue1)∧(xAttrName2=attrValue2)∧…∧(xAttrNamei=attrValuei)}.

    定义 3. 属性访问请求(attribute access request,简称 AAR)由一组主体属性、资源属性、动作属性和环境属
    性组成,用 AAR:{sAttrTuple∧rAttrTuple∧aAttrTuple∧eAttrTuple}来表示,AAR
    的含义是:属性为 sAttrTuple 的请求 者在环境属性 eAttrTuple 下,对资源 rAttrTuple 请求进行操作
    aAttrTuple.

    定义 4(访问控制策略). 针对资源的访问控制规则,体现了资源拥有者的授权行为,规定了访问受保护资源所需要具有的属性集合 , 记 为 Policy:result(R,action,pid)←Θ{xAttrTupleSet}signature_owner,x∈{s,r,a,e}. 其 中 ,
    Θ{xAttrTupleSet}表示由属性项集合 xAttrTupleSet 中的属性通过合取、析取等逻辑关系构成的逻辑表达式,pid
    表示策略 ID.当请求方所拥有的属性使Θ{xAttrTupleSet}为真时,请求方能够被允许或拒绝对资源 R 进行 action
    操作,result∈{Permit,Deny}.另外,策略需要被资源拥有者或策略发行方签名后在区块链中保存,从而保证发布
    策略的真实性.

    展开全文
  • ABAC权限模型的设计

    千次阅读 2020-11-03 10:45:42
    ABAC(Attribute Base Access Control) 基于属性的权限控制 ​ 不同于常见的将用户通过某些方式关联到权限的方式,ABAC则是通过动态计算一个或一组属性来 ​ 判断是否满足某种条件来进行授权判断(可以编写简单的...
  • 零信任|零信任架构和访问控制模型ABAC 近几年,权限访问控制模型被反复提及,目前常用的是RBAC(Role-Based ...近期火爆的零信任架构里,ABAC模型就比RBAC更加合适。 ABAC既然是针对属性(attributes)的,那我们先
  • 本文来说下基于属性的权限控制模型ABAC 文章目录概述 概述
  • PyCasbin: 支持 ACL、RBAC、ABAC 多种模型的 Python 权限管理框架 PyCasbin 是一个用 Python 语言打造的轻量级开源访问控制框架( https://github.com/casbin/pyc… ),目前在 GitHub 开源。PyCasbin 采用了元模型的...
  • Laravel Authorization 基于 Casbin ,是一个支持访问多种访问控制模型(如ACL,RBAC,ABAC等)的授权库。 在这之前,你需要先了解 Casbin 。 安装 使用 Composer 安装: composer require casbin/laravel-authz ...
  • casbin采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制RBAC、基于属性的访问控制ABAC等。 casbin的主要特性包括: 支持自定义请求的格式,默认的请求格式为{subj
  • jCasbin采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制RBAC、基于属性的访问控制ABAC等。 jCasbin的主要特性包括: 支持自定义请求的格式,默认的请求格式为{subject, objec...
  • PHP-Casbin 是一个用 PHP 语言打造的轻量级开源访问控制框架( ...PHP-Casbin 采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制 RBAC、基于属性的访问控制 ABAC 等。 PHP-Casbin ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 804
精华内容 321
关键字:

abac模型