扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
权限一词在安全领域出现的频率很高。“权限”实际上是一种“能力”。对于权限的合理分配,一直是安全设计中的核心问题。
贡井ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!权限控制,广泛应用于各个系统中。抽象地说,都是某个主体( subject)对某个客体( object)需要实施某种操作( operation),而系统对这种操作的限制就是权限控制。
在Web应用中,根据访问客体的不同,常见的访问控制可以分为 “基于URL的访问控制”、“基于方法( method)的访问控制” 和 “其于数据的访问控制” 。
2.怎么做
下面我们将探讨如何设计一个访问控制系统
垂直权限管理
权限控制实际上是建立用户与权限之间的对应关系,现在应用广泛的一种方法,就是“基于角色的访问控制(Role- Based Access Control)”,简称RBAC。
RBAC事先会在系统中定义出不同的角色,不同的角色拥有不同的权限,一个角色实际上就是一个权限的集合。而系统的所有用户都会被分配到不同的角色中,一个用户可能拥有多个角色,角色之间有高低之分(权限高低)。在系统验证权限时,只需要验证用户所属的角色,然后就可以根据该角色所拥有的权限进行授权了。
Spring Security中的权限管理,就是RBAC模型的一个实现。
权限管理其实是业务需求上的个问题,需要根据业务的不同需求来实现不同的权限管理。因此很多时侯,系统都需要自己定制权限管理。定制一个简单的权限管理系统,不妨选择RBAC模型作为依据。
这种基于角色的权限管理(RBAC模型),我们可以称之为“垂直权限管理”。
不同角色的权限有高低之分。高权限角色访问低权限角色的资源往往是被允许的,而低权限角色访问高权限角色的资源往往则被禁止。如果一个本属于低权限角色的用户通过一些方法能够获得高权限角色的能力,则发生了“越权访问”。
在配置权限时,应当使用“最小权限原则”,并使用“默认拒绝”的策略,只对有需要的主体单独配置“允许”的策硌。这在很多时候能够避免发生“越权访问”。
水平权限管理
用户A与用户B可能都属于同一个角色 Rolex,但是用户A与用户B都各自拥有一些私有数据,在正常情况下,应该只有用户自已才能访问自己的私有数据。
但是在RBAC这种“基于角色的访问控制”模型下,系统只会验证用户A是否属于角色Rolex,而不会判断开户A是否能访问只属于用户B的数据 DataB,因此,发生了越权访问这种问题,我们就称之为“水平权限管理问题”。
相对于垂直权限管理来说,水平权限问题出在同一个角色上。系统只验证了能访问数据的角色,既没有对角色内的用户做细分,也没有对数据的子集做细分,因此缺乏一个用户到数据之间的对应关系。由十水平权限管理是系统缺乏一个数据级的访问控制所造成的,因此水平权限管理又可以称之为“基于数据的访问控制”。
在今天的互联网中,垂直权问题已经得到了普遍的重视,并已经有了很多成熟的解决方案。但水平权限问题却尚木得到重视。后面会提到我经历过的一些解决方案。
首先,对于一个大型的复杂系统来说,难以通过扫描等自动化测试方法将这些问题全部找出来其次,对于数据的访问控制,与业务结合得十分紧密,有的业务有数据级访问控制的需求,有的业务则没有,要理清楚不同业务的不同需求,也不是件容易的事情。
最后,如果在系统已经上线后再来处理数据级访问控制问题,则可能会沙及跨表、跨库查询,对系统的改动较大,同时也可能会影响到性能。
这种种原因导致了现在数据级权限管理并没有很通用的解决方案,一般是具体问题具解决。一个简单的数据级访问控制,可以考虑使用“用户组( Group)”的概念。比如一个用户组的数据只属于该组内的成员,只有同一用户组的成员才能实现对这些数据的操作
此外,还可以考虑实现一个规则引擎,将访问控制的规则写在配置文件中,通过规则引擎对数据的访问进行空制。
后面讲一下我经历过的一些权限控制的案例,分别是菜单权限、接口权限、数据权限的控制。
参考资料:白帽子讲web安全
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流