【安全】越权

水平越权(Horizontal Privilege Escalation)

水平越权是指攻击者以同等或相同权限的身份,试图访问其他用户的资源或数据。

例如,通过修改 URL 参数或会话标识符来访问其他用户的订单信息。

垂直越权(Vertical Privilege Escalation)

垂直越权是指攻击者以低权限身份,试图获取高权限级别的访问权限。

示例:例如,通过利用身份验证漏洞或权限提升漏洞来获取管理员权限。

漏洞防范

防护方式: 

实施访问控制:在应用程序的层面上实施访问控制机制,包括身份验证,对用户进行适当的身份验证和授权,仅允许其执行其所需的操作。

最小权限原则:在分配用户权限时,采用最小权限原则,即给予用户所需的最低权限级别,以限制潜在的越权行为。用户只应具备完成其任务所需的最小权限。

访问控制模型

  1. 基于角色的访问控制(RBAC, Role-Based Access Control)
  2. 基于属性的访问控制(ABAC, Attribute-based Access Control)
  3. 其他

基于角色的访问控制(RBAC)

  1. RBACO — 核心 RBAC
  2. RBAC1 — 层次 RBAC (RBAC0 + 角色层次结构)
  3. RBAC2 — 约束 RBAC (RBAC0 + 约束)
  4. RBAC3 — 组合 RBAC (RBAC1 + RBAC2)
RBAC0
  • 3 个元素: 用户、角色和权限

RBAC1
  • 4 个元素: 用户、角色、权限、层次结构/继承

RBAC2
  • 4 个元素: 用户、角色、权限和约束

RBAC3
  • 将 RBAC1 和 RBAC2 的所有特征(角色继承和约束关系)集成到模型中。
  • 可以根据不同的上下文限制或激活可用的用户权限,当用户在会话期间执行的任务可能需要不同级别的访问时,可以在会话期间激活更高级别的权限

基于属性的访问控制(ABAC)

  • ABAC是一种细粒度的访问控制机制,它通过评估一系列属性来确定用户是否可以执行特定操作。这些属性包括但不限于用户的身份、角色、职责、位置、时间等,还可以包括环境因素如设备类型、网络位置等。
  • ABAC 模型基于四个核心元素:用户、资源、环境和操作。
    • 用户是请求访问系统资源的实体,可以是个人、程序或设备。
    • 资源是需要保护的系统实体,如文件、数据库、应用程序等。
    • 环境包括访问发生时的上下文信息,如时间、地点、安全级别等。
    • 操作是用户请求对资源执行的行为,如读取、写入、删除等。
原理

ABAC 通过评估一系列预定义的策略来决定是否授予权限。这些策略是基于属性的逻辑语句,定义了访问控制的规则。当用户尝试访问资源时,ABAC 系统会检查相关的属性和策略,如果属性满足策略条件,则授权访问。

例如一个典型的 ABAC 场景描述如下图,当 subject 需要去读取某一条记录时,我们的访问控制机制在请求发起后遍开始运作,该机制需要计算,来自 policy 中记录的规则,subject 的 attribute,object 的 attribute 以及 environment conditions,而最后会产生一个是否允许读取的结果

为什么ABAC没有标准建模呢?作者的经验是认为,ABAC主要是语法设计,因此会非常灵活,这种非常灵活的关系不适合用模型和模型
之间的约束关系来表示,因此目前经典的设计都是用xml或者json来表示一个policy。

{
    "Action":[
        "EditUser",
        "GetUser"
    ],
    "Resource":"user:1、2、3、4",
    "Condition":{
        "DateLessThan":{
            "acs:CurrentTime":"2021-03-22T17:00:00+08:00"
        }
    }
}

RBAC&ABAC对比

对比

ABAC

RBAC

灵活性

动态授权

静态授权

控制粒度

可以很细

控制粒度比较粗

复杂度

复杂

简单

案例

AWS IAM 的ABAC实现

来自 AWS Senior Manager :https://www.youtube.com/watch?v=Iq_hDc385t4&t=2378s

第三方权限框架

轻量级权限控制框架Shiro和企业级权限控制框架SpringSecurity都可以实现如上两种方案的权限控制。

参考文献

水平越权和垂直越权

StackOverflow 的 Q/A 帖子"基于角色访问控制"是一个很好的例子,值得一读。

阿里云的ABAC案例

History-based access control

Using RBAC Authorization

What is Azure role-based access control (Azure RBAC)?

What is Role-Based Access Control (RBAC)? A Complete Guide | Frontegg

Pattern-Oriented Software Architecture - Access control pattern

深入理解RBAC_架构_俞凡_InfoQ写作社区

https://www.cnblogs.com/cangqinglang/p/16547720.html

备注:

以上图片来源于网络

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值