C/C++教程

自定义RBAC(1)

本文主要是介绍自定义RBAC(1),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~


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

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

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

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

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

接下来就掰扯掰扯

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

https://img1.sycdn.imooc.com/638c9f33000186ba06940434.jpg

 

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

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

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

https://img1.sycdn.imooc.com/638c9f9b0001aeae07440335.jpg


 

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

https://img3.sycdn.imooc.com/638c9fb000015ff208660400.jpg

 

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

https://img1.sycdn.imooc.com/638ca0590001c17706660438.jpg


 

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

 https://img1.sycdn.imooc.com/638ca0830001607109140499.jpg 

 

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

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

DACDiscretionary Access Control,自主访问控制。

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

https://img4.sycdn.imooc.com/638ca3590001db8f08730367.jpg


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

 

MACMandatory Access Control,强制访问控制

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

https://img4.sycdn.imooc.com/638ca3610001badf08410534.jpg


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

 

PBACPolicy-Based Access Control,基于策略的访问控制

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

https://img4.sycdn.imooc.com/638ca368000124d107880584.jpg


 

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

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

 


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



这篇关于自定义RBAC(1)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!