• 自定义RBAC(1)


    您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~

    在对Spring Security稍做了解之后,可以知道,Spring Security其实只是一个实现认证授权的框架,封装了很多实现细节。但也有一些不方便的地方,比如:

    1、自定义一些拦截器时,会导致过滤器重复执行,这属于是框架本身的bug;

    2、为了验证简单的权限,加入了很多不需要的东西。这也是使用别人的框架不得不承受的;

    3、新版本可能会有一些bug,旧版本可能满足不了需求,尴尬。

    之前也提到过ACL、RBAC、PBAC等名词,但它们都是干嘛的?资料有很多,却没有专门的内容来说清楚。尤其是在具体开发工作中,该使用哪种权限模型实现需求?

    接下来就掰扯掰扯。

    什么是权限?权限就是对资源的访问许可,就像这样:

    那什么又是认证与授权呢?分开来说:

    1、认证:你是谁(身份)

    2、授权:能干啥(行为,也可以包括不能干啥)

    而且现在互联网应用不再像过去的信息化管理系统那样死板,而是需要根据用户的喜好来呈现不同的内容,某种程度上,这其实也是一种权限,千人千面的权限系统:

    除了用户看到的不同,就连传统上应该由内部运营人员承担的职责,现在也分裂一部分出去,给外部的「合约职员」:

    而且,在很多小公司里面,开发工程师很多时候都在承担系统管理员的角色:

    所以,从互联网角色来说,其实现在没人说得清权限到底应该是什么。

    但是,架构师和专家们觉得不说清楚又不行,所以就有了下面一些所谓的「常见权限模型」。

    一、DAC:Discretionary Access Control,自主访问控制。

    DAC系统会识别用户,然后根据被操作对象(Subject)的权限控制列表ACL(或者权限控制矩阵ACM)的信息来决定用户的是否能对其进行哪些操作,例如读取或修改。而拥有对象权限的用户,又可以将该对象的权限分配给其他用户,所以称之为“自主(Discretionary)”控制。这种设计最常见的应用就是文件系统的权限设计,如微软的NTFS。

    有些机构觉得,这么做太随意的,不够安全,所以提出了另一些想法:MAC。

    二、MAC:Mandatory Access Control,强制访问控制

    每个对象都有一些权限标识,每个用户同样也会有一些权限标识。用户能否对该对象进行操作取决于双方权限标识的关系,这个限制判断通常是由系统硬性规定的。例如谍战片里面的特工查阅资料时,有时会出现因为权限等级不够而无法查阅的情形。

    MAC非常适合秘密机构或者其他等级观念非常强烈的行业,但对于商业服务系统,则不够灵活。所以商人们和技术专家就想出了中和的办法:PBAC。

    三、PBAC:Policy-Based Access Control,基于策略的访问控制

    它是一种介于DAC与MAC之间的权限模型,系统会预先定义一些操作,可以由系统管理员来决定哪些用户能执行这些操作。这既不同于用户授权给其他人,又不同于强制指定权限给用户。现在基本上已经被淘汰,只存在于一些老旧系统之中,例如Windows的安全策略:

    既然PBAC不行,那专家们再想想办法吧,不行就拿一个祭天。于是,有了RBAC。也就是迄今为止最为普及的权限设计模型,没有之一。

    所以,从DAC、MAC、PBAC到RBAC,这几种权限系统一直都是共存的,没有说哪种特别厉害,哪种特别没用:把驴牵到磨盘上也能磨出好面粉。


    感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~

  • 相关阅读:
    【17】建立数据通路(上):指令+运算=CPU
    Spring Boot集成easyposter快速入门Demo
    Go在招聘中最吃香、安全工程师薪资涨幅最高 | Hired年度软件工程师报告出炉
    程序员的护城河:技术深度、创新精神与软实力的完美结合
    Amazon云计算AWS(四)
    无Tomcat实现@Controller和@RequestMapping及HTTP服务
    [附源码]JAVA毕业设计课外创新实践学分认定管理系统(系统+LW)
    Nginx+Tomcat 搭建负载均衡、动静分离
    第五章、数据库6分
    vscode各种配置的方法
  • 原文地址:https://blog.csdn.net/lostrex/article/details/128177724