权限安全管控的设计想法

权限安全管控的设计想法

权限安全管控的设计想法

OWASP发布最新的《2021年版OWASP TOP 10》,其中“Broken Access Control(失效的访问控制)”位居第一,访问控制安全是常规安全产品难以解决的逻辑漏洞安全之一,也是在应用层危害最大的,基于此,个人参考过去挖洞所遇到的此类问题提出一些想法。【个人想法,注重交流】

全角度,细颗粒。

1、最小化访问控制授权;建立完善的权限级别管理模型,对于访问控制的权限查询、分配、授权、撤销进行有效的管理和监控。

2、颗粒度管制至每一组数据和接口/页面;一般访问控制的颗粒度从页面、接口、数据三层去管理,颗粒度较细的方法是以数据为关键进行权限的管理和访问控制的管控。

3、建立统一的访问控制权限校验接口或模块;访问控制权限的查询、分配、授权、撤销应建立一个统一的管理接口或校验接口,统一管理权限。

4、访问控制统一权限校验查询;应检查校验每一个数据的查询,对每一个数据的查询(或页面的渲染、接口的调用)进行访问权限校验接口调用,校验权限分配和授权的合法性。对于空权限的数据查询、页面渲染、接口调用应记录成册,其它的非空权限的数据查询、页面渲染、接口调用均进行统一的访问控制权限校验、查询、分配、授权、撤销。

全监控,易追溯。

1、访问控制的权限管理日志;需要对所有的权限(管理)查询、分配、授权、撤销、校验进行日志记录。

2、访问控制的权限监控日志;需要对所有的合法权限授予后的全周期操作历史进行日志记录。

3、访问控制的权限风险日志;需要对所有非空权限的强制请求进行记录并设置安全阈值,并自定义的进行记录、告警、强退、锁号等风险响应。

Tips:权限的设计模式应该基于安全的基础进行,不得存在严重的设计缺陷。一般情况:

  • 自动化攻击的应对

    自动化攻击是目前成本较低的一种攻击手段,爆破、目录遍历、参数遍历等安全隐患和fuzz手段都是自动化攻击的主要目标,针对这些,一般采用验证码的方式避开被爆破猜解,同时为了避免安全遍历的问题导致安全隐患,一般采用无序编码的方式来减低危害。

  • 授权周期的安全

    执行高敏感的操作(或访问),应临时授权或一次授权,每次的授权操作内容全部遵照全监控易追溯的原则进行全周期日志记录,(全周期:分配 --> 查询 --> 校验 --> 授权 --> 撤销 --> 取消),这里比较注重的是周期时长的问题,理论上不应该授予长时间的授权操作,而是采用“操作则申请,完成则撤销,周期全记录”的原则执行周期时长的限制,时间一到撤销授权操作,并可考虑执行强退的策略。这里的授权操作不是说每次都需要管理员去系统中操作,而是说管理员实现就已经向用户分配该权限,但是这个权限存在于权限分配表中,每次执行操作的时候都需要去权限分配表中查询并校验是否具备授权资格并执行授权,在规定的时长结束后,该次授权自动结束并撤销本次授权,自此再操作需要重新执行查询校验授权资格的步骤,每次的授权操作全过程记录是从查询校验授权资格那一步开始记录随后该授权key所执行的一切操作动作。全周期中的分配和取消是针对记录在授权分配表中的权限分配项执行。

  • 授权周期的监控

    基于“全监控易追溯”的原则建立访问控制权限全周期,对重要的授权操作的全过程进行可视化、可追踪、可定位的方式进行日志记录。同上,这里的可视化的实现可多样化去实现,目的是采用链条跟踪的模式来实现每一次授权的每一个操作动作,直至授权被撤销。这需要注意“可定位”的需求,一般情况,在发生安全事故后,对功能点立即执行反溯,查看所有执行过该操作动作的授权(日志)记录表并链条化可追踪的展示出来。


非常重要需要提出来的是,访问控制权限管控的重点在于:“细颗粒的授权管控和全周期监控授权操作”。

推荐阅读