• home > OMD > PM >

    权限系统设计(5):ACL、DAC、MAC、RBAC的权限测试策略

    Author:zhoulujun Date:

    ACL、DAC、MAC、RBAC权限模式是怎么体现的,系统权限如何测试?

    常见的权限模型简释

    1、ACL 访问控制列表

    定义:规定资源可以被哪些主体进行哪些操作。

    在ACL权限模型下,权限管理是围绕资源来设定的。我们可以对不同的页面设定可以访问的用户

    2、DAC 自主访问控制

    定义:规定资源可以被哪些主体进行哪些操作。同时,主体可以将资源、操作的权限,授予其他主体

    在ACL的基础上,DAC模型将授权的权力下放,允许拥有权限的用户,可以自主地将权限授予其他用户。

    3、MAC 强制访问控制

    定义:当一个操作,同时满足a与b时,允许操作

    1. 规定资源可以被哪些类别的主体进行哪些操作

    2. 规定主体可以对哪些等级的资源进行哪些操作

    MAC是ACL的另一种实现,强调安全性。MAC会在系统中,对资源与主体,都划分类别与等级。比如,等级分为:秘密级、机密级、绝密级;类别分为:军事人员、财务人员、行政人员。

    MAC的优势就是实现资源与主体的双重验证,确保资源的交叉隔离,提高安全性。

    4、RBAC 基于角色的访问控制

    定义:当一个操作,同时满足a与b时,允许操作。

    1. 规定角色可以对哪些资源进行哪些操作

    2. 规定主体拥有哪些角色

    RBAC的思想,来源于现实世界的企业结构。比如,销售角色,拥有查看客户信息的权限。当一个销售人员小王入职了,可以把销售角色赋予小王,那么小王就拥有了查看客户的权限。这种方式,避免了ACL模型下,每次新人入职,需要逐个配置资源表的情况。同样,权限变动也变得很方便,只要修改角色,即可实现多用户的权限修改。

    5、ABAC 基于属性的访问控制

    定义:规定哪些属性的主体可以对哪些属性的资源在哪些属性的情况下进行哪些操作

    ABAC其中的属性就是与主体、资源、情况相关的所有信息。

    • 主体的属性:指的是与主体相关的所有信息,包括主体的年龄、性别、职位等。

    • 资源的属性:指的是与资源相关的所有信息,包括资源的创建时间、创建位置、密级等。

    • 情况的属性:指的是客观情况的属性,比如当前的时间、当前的位置、当前的场景(普通状态、紧急状态)。

    • 操作:含义还是一样,比如增删改查等。

    设定一个权限,就是定义一条含有四类属性信息的策略(Policy)。


    一个请求会逐条匹配策略,如果没有匹配到策略,则返回默认效果,默认效果可以根据场景定制,可以是默认拒绝或是默认允许。另外,匹配方式也可以根据场景定制,可以使用逐条顺序匹配,匹配到策略直接返回。也可以使用完全匹配,匹配所有的策略,如果有一个拒绝(允许),则拒绝(允许)。

    举例:文件权限模型

    1、linux文件权限系统(DAC模型)

    请添加图片描述

    2、某企业网盘(RBAC模型)

    • 授权对象为文件夹,可继承

    • 预设权限模版请添加图片描述

    • 可以给账号、角色、部门授权

      • 同一个人从多个纬度被授权时,取权限的并集

      • 禁止访问,优先高于一切原子权限

    测试范围

    RBAC模型验证

    简单场景:

    • 预设权限模版中的各原子权限正常

    • 针对文件夹给账户授权后权限操作正常

    • 以角色或者部门为单位授权后权限操作正常

    基于RBAC结合业务逻辑

    • 资源(文件夹)

    文件夹上下级关系联动
    	权限继承
    	当前授权和继承授权的冲突
    文件夹变更
    	文件夹删除与恢复
    	文件夹移动(上下级关系变动)
    	文件夹内子文件夹新增
    • 角色(角色/部门)

    账号和角色关系变更
    	移入和移除角色或部门
    	部门是否有继承逻辑
    同时有多重维度的授权
    	取权限的并集
    • 预设权限模版

      模版变更,小概率事件

    非功能测试

    • 性能测试

    资源量级大
    	eg:一级目录根目录中文件夹过多,计算当前账户需要对哪些文件夹可见时,计算压力大
    	eg:某文件夹层级深度大时,计算某账号的继承权限,或者上下级关系变动重新继承时,计算压力大
    角色量级大
    	eg:某个文件夹的授权记录特别多,计算授权范围时,计算压力大
    	eg:某个文件夹的授权管理复杂,当前账户计算权限取并集时,计算压力大
    热点数据
    	当使用缓存提高响应速度时,注意会存在热点数据,避免缓存击穿
    	热点文件夹
    	热点账号
    • 安全越权测试

    前端越权
    	无权限的页面,通过URL也无法访问
    	无权限的操作,交互入口应该不展示
    	无权限的数据,在列表中也不会展示
    	权限限制需要前后端都做常见的权限模型1、ACL 访问控制列表定义:规定资源可以被哪些主体进行哪些操作。
    在ACL权限模型下,权限管理是围绕资源来设定的。我们可以对不同的页面设定可以访问的用户2、DAC 自主访问控制定义:规定资源可以被哪些主体进行哪些操作。同时,主体可以将资源、操作的权限,授予其他主体
    在ACL的基础上,DAC模型将授权的权力下放,允许拥有权限的用户,可以自主地将权限授予其他用户。3、MAC 强制访问控制定义:当一个操作,同时满足a与b时,允许操作
    		a. 规定资源可以被哪些类别的主体进行哪些操作
    	 	b. 规定主体可以对哪些等级的资源进行哪些操作
    MAC是ACL的另一种实现,强调安全性。MAC会在系统中,对资源与主体,都划分类别与等级。比如,等级分为:秘密级、机密级、绝密级;类别分为:军事人员、财务人员、行政人员。
    MAC的优势就是实现资源与主体的双重验证,确保资源的交叉隔离,提高安全性。4、RBAC 基于角色的访问控制定义:当一个操作,同时满足a与b时,允许操作。
    	a. 规定角色可以对哪些资源进行哪些操作
    	b. 规定主体拥有哪些角色
    RBAC的思想,来源于现实世界的企业结构。比如,销售角色,拥有查看客户信息的权限。当一个销售人员小王入职了,可以把销售角色赋予小王,那么小王就拥有了查看客户的权限。这种方式,避免了ACL模型下,每次新人入职,需要逐个配置资源表的情况。同样,权限变动也变得很方便,只要修改角色,即可实现多用户的权限修改。5、ABAC 基于属性的访问控制定义:规定哪些属性的主体可以对哪些属性的资源在哪些属性的情况下进行哪些操作
    	 ABAC其中的属性就是与主体、资源、情况相关的所有信息。
    	主体的属性:指的是与主体相关的所有信息,包括主体的年龄、性别、职位等。
    	资源的属性:指的是与资源相关的所有信息,包括资源的创建时间、创建位置、密级等。
    	情况的属性:指的是客观情况的属性,比如当前的时间、当前的位置、当前的场景(普通状态、紧急状态)。
    	操作:含义还是一样,比如增删改查等。
    	设定一个权限,就是定义一条含有四类属性信息的策略(Policy)。一个请求会逐条匹配策略,如果没有匹配到策略,则返回默认效果,默认效果可以根据场景定制,可以是默认拒绝或是默认允许。另外,匹配方式也可以根据场景定制,可以使用逐条顺序匹配,匹配到策略直接返回。也可以使用完全匹配,匹配所有的策略,如果有一个拒绝(允许),则拒绝(允许)。举例:文件权限模型1、linux文件权限系统(DAC模型)2、某企业网盘(RBAC模型)授权对象为文件夹,可继承预设权限模版可以给账号、角色、部门授权同一个人从多个纬度被授权时,取权限的并集禁止访问,优先高于一切原子权限测试范围RBAC模型验证简单场景:预设权限模版中的各原子权限正常针对文件夹给账户授权后权限操作正常以角色或者部门为单位授权后权限操作正常基于RBAC结合业务逻辑资源(文件夹)文件夹上下级关系联动
    	权限继承
    	当前授权和继承授权的冲突
    文件夹变更
    	文件夹删除与恢复
    	文件夹移动(上下级关系变动)
    	文件夹内子文件夹新增角色(角色/部门)账号和角色关系变更
    	移入和移除角色或部门
    	部门是否有继承逻辑
    同时有多重维度的授权
    	取权限的并集预设权限模版模版变更,小概率事件非功能测试性能测试资源量级大
    	eg:一级目录根目录中文件夹过多,计算当前账户需要对哪些文件夹可见时,计算压力大
    	eg:某文件夹层级深度大时,计算某账号的继承权限,或者上下级关系变动重新继承时,计算压力大
    角色量级大
    	eg:某个文件夹的授权记录特别多,计算授权范围时,计算压力大
    	eg:某个文件夹的授权管理复杂,当前账户计算权限取并集时,计算压力大
    热点数据
    	当使用缓存提高响应速度时,注意会存在热点数据,避免缓存击穿
    	热点文件夹
    	热点账号安全越权测试前端越权
    	无权限的页面,通过URL也无法访问
    	无权限的操作,交互入口应该不展示
    	无权限的数据,在列表中也不会展示
    	权限限制需要前后端都做限制,接口鉴权也是要有的
    横向越权
    	尝试访问同级别的无权限数据,通过遍历id或者伪造请求等方式
    		eg:访问其他未授权文件夹内的数据
    纵向越权
    	尝试访问当前权限范围,但是未授权的字段或者敏感信息
    		eg:查看部门成员信息,试图查看薪酬等隐私信息限制,接口鉴权也是要有的
    横向越权
    	尝试访问同级别的无权限数据,通过遍历id或者伪造请求等方式
    		eg:访问其他未授权文件夹内的数据
    纵向越权
    	尝试访问当前权限范围,但是未授权的字段或者敏感信息
    		eg:查看部门成员信息,试图查看薪酬等隐私信息




    转载本站文章《权限系统设计(5):ACL、DAC、MAC、RBAC的权限测试策略》,
    请注明出处:https://www.zhoulujun.cn/html/Operation/PM/2020_0510_8425.html