00:00
好,咱们下边呢,说呀,为了我们去。更好的对权限模型进行管理。进行开发,这个前辈呢,人家提出一个概念叫RBAC啊。嗯。这个就是根据啊用户,我们权限控制呢,就是让用户通过角色与权限进行关联。所以说,前面描述的权限控制系统可以提炼为一个模型,叫RBAC。这个大家最好还是能记住哈,因为这个面试问不问呢不好说,但是别人跟你聊起来你不知道呢。不知道,也稍微差点意思哈,但是这个倒不是那么特别重要。说叫role based access control。啊,Based access control就是基于角色的访问控制啊,就是这么个意思啊,基于角色的访问控制。嗯。在RBAC模型当中,一个用户可以对应多个角色,一个角色可以有多个权限,权限具体定义用户可以做哪些事情?
01:07
啊,就是这么一个关系。那么我们这介绍一下这个RBAC0到RBAC3啊,就是这个有这是从基础到进阶越来越复杂的一个过程啊,这个咱们了解了解他们是什么个意思。RBAC0是最基本的RBC模型啊,是这个模型的核心部分,后边三种呢,都是在这个基础上升级的。那么最基本的这个呢,其实就是我们前面说的,哎,前面说的这种。前面说的这种他们的关系啊,这可以认为就是最基本的模型。然后呢,那么r bce是什么意思?他在RBAC,零的基础上增加了角色之间的继承关系。就是这个时候呀,这个角色呀。还分这个子角色,角色还继承了。
02:00
角色A呢,继承角色B之后。那么以前B能干的事儿他都能干,那么他又扩展了,他又扩展了些别的选项,他能干的事儿比B又又多了啊。所以这个关系呢,相当于是。A继承B哈。嗯。这个你看,这是我们的紫角色。此角色是A哈。然后副角色是B。诶,那么以前B能干的事,A都能干,但是A呢又比B呢能干更多的事。这个也很好理解。啊,比如说呢,你看付付付费用户和这个。嗯,普通用户啊,人家掏钱了,能干的事儿就更多。啊,那干事更多,你没掏钱的,你只能看普通的是吧,哎,付费的你可以看一些特殊的是吧。
03:06
怎么这个这么这么别扭呢。30万。啊。请不要多想啊。天线宝宝。嗯。哎,这个这个就是说角色之间进行一下继承啊嗯,这对应我们对应我们下边的这个图哈,其实就是说呢。现在看有点那啥哈,就说角色。角色下边呢,有还要进,再进一步再分这个用户组。然后呢,用户组呢,和角色呢进行关联,你可以认为这个用户组呢,就是诶这个角色下边分的组,相当于这个组呢,继承了这个角色。你比如说同样是后台管理员,这是一个角色假设啊,然后它下边呢,分这个,呃,人力资源部的用户组,分这个财务部的组,行政部的组,哎,那么只要是后台管理员的话。
04:04
各个组呢,后台管理员的权限,他都有财务有财务的这个用户组的权限,呃,人力资源部有人力资源部的权限是吧,然后你行政有行政权限啊,就这么一个关系,他又扩展了一下。哎,这就是说这个有了一个继承,那么RBAC2呢。它是在零的基础上。增加了角色责任分离关系,也就是说呢?012的关系是这样的。这个是RBAC的零。它呢,发展出来了rbace。和RBCR。所以说一和二其实是没有关系的啊,一和二是没有关系的,他们是这么过来的。
05:00
这个。我们适当用一下这个弯的线。然后一和二结合起来以后呢,我们后边看到就是二比C的三。RBC的三。哎,一和二综合起来就是三,下边我们是先看一下这个二什么意思。嗯。这是他们之间的关系哈。哎,这个责任分离呢,包含静态责任分离和动态责任分离这两种啊。咱们慢慢一点点看什么叫静态责任分离,给用户分配角色的时候。哎,就是分配角色的时候生效,重点在分配这啊,重点在分配这。
06:03
啊,就是这个重音啊,就是我们说话的时候,这个重音其实很重要,为什么叫逻辑重音呢?这个强调的地方,它重音能体现出来,这个强调的地方是吧,哎,你比如说这个无敌打了我一顿。那这个这个重音在哪儿呢?比如说无敌打了我一顿。表示什么呢?强调的是打我这个人对吧?哎,然后这个平常有别人打我,但今天是无敌打的我。重点在这儿。那么如果吴迪打了我一顿啊,就说明吴迪有时候是骂我,但今天是打了我一顿。无敌打了我一顿,说明无敌今儿打这个,明儿打那个是吧,但今天打的是我啊。所以这个强调的不一样啊,我们这儿强调的是用户分配角色的时候,是在分配的时候。诶,有一个要求叫互斥角色。权限上相互制约的两个或多个角色就是互斥角色。
07:03
用户只能被分配到一组互斥角色中的一个角色,看这个很难理解,看这个具体的例子,你一个用户呢,你不能又是会计师,又是审计师。哎,会计是干嘛的?记记账,记账对吧,以前叫记账,现在叫做账。坐着。审计师是干嘛的呀,查账对吧?你记账也是你查账也是你是吧,那还了得是吧啊。我在跟你们开玩笑。你们看这个这个现在。就是说这个就是说你们,你们一旦对老师讲课不满,不满意的话,这个总部。总部马上就能知道啊,这个这个只是我是跟你们开玩笑啊,这个我还能一手遮天了是吧。
08:00
啊开玩笑啊,就是哎,所以说呃,会计师啊是记账的,审计师是查账的,你这个人不能他不能又记账又又又查账啊这个不这个绝对不行啊,那就监守自盗了呀,对吧。哎。这就是互斥的角色啊,给角色给用某个用户分配的时候,这两个里边给一个用户只能分配这两个里边的一个。啊,这是对的。还有一个奇数约束。这个角色呢,对应的权限呢,应该是受限的,就是说你不能给一个角色无限制的分配权限,这个是不允许的啊,不允许的。就你即便是系统管理员啊。那你可能系统管理员可能是这个开发这个系统的那个开发团队去,呃,做一些个设定用的,那么他呢,能做的事就是说做一些个初始化的操作呀,设置个初始的账号密码呀,他能做这个,但是别的事儿也不能让他做。啊,财务有财务的权限,呃,人力有人力的权限,行政有行政的权限啊,这个都得给他分开,每个用户,每个角色对应的权限得是有有数的啊,不能是无限的。
09:10
一个角色中用户的数量呢,应该是受限的。用户也不能说你无限制的去注册这个用户啊,这个这个。嗯。这也是一个数量上的限制,一个用户拥有的角色数量应该是受限的,一个用户不能说我把这个系统里边所有的角色都给我是吧,这个也也不允许。当然我们说这个你我们要不要去误解哈,说这个,你说这个对京东来说,那用户不是越多越好嘛,对吧?啊,你对淘宝来说也是用户越多越好呀,是吧,这个他指的不是这个场景啊,他指的是我们像这个企业管理系统啊呃,我员工的话一共才500人,然后呢,你一下创建了10万个用户。是吧,这这这这这个这个时候其实是这个,就对这系统我们也不好去管理了啊,他指的是这个意思。
10:06
哎,想要先决条件角色这个也很重要,用户呢,想拥有A角色,你必须呢,在此之前先拥有B角色,才能给你分配A角色。啊,保证用户有X权限的前提是拥有Y权限。这是规则,但是我们还是看例子才能明白。你要是想拥有一个金牌会员的这个角色。你必须先有银牌会员这个才行。啊,这个金牌会员不能直接授予给这个普通的用户。那肯定啦,你花,比如说你累计在我们网站上消费2000块钱,我哎你就能够升级到银牌,你消费了5000才能升级到这个金牌啊,你要是你要是认识这个内部工作人员,悄悄悄的,你你注册个普通用户,直接给你个金牌会员,然后呢,买东西都打六折是吧,那公司不就亏大了。
11:04
啊。所以说呢,这个时候他会去,如果我们要,如果要实现这个功能。那么我们在分配金牌会员这样的角色的时候,要去查这个用户。呃,他现在的这个角色还要去查呢,他以前的那个拥有的那个角色的这个包括历史记录,就分配分配角色的历史记录都要去查啊,这个时候这个要非常严格的去审核。哎,从逻辑上这个从我们呃生活中这个需求上来讲,这个也很好理解啊,代码肯定要写这个会很麻烦,但是我们说理解这个需求还是好理解的啊。哎,不允许你这个越级,这个这个升越级往上升啊,就算你一下子说这个一掷千金,你在我们网站一下子消费10万,那也这个在程序里边,我们数据库记录里边也得是一级一级的往上升。啊也那也不允许你直接这个从这跳到这儿。
12:03
还有这个动态责任分离,这个是用户登录系统的时候,登录的时候生效,诶,这是登录的时候生效。如果一个用户身兼数值,特定场景下激活特定的角色。你看马云啊,他在阿里巴巴内部,他就是一个创始人的这么一个角色。然后呢,他去这个企业论坛上边啊,这个什么什么峰会是吧,到上面去演讲,在这上面他就不能去,他就不是创始人了,他是一个演讲的一个嘉宾。哎,你在不同的场景下边激活你不同的角色啊,你要是在这个场景下边没有角色可以激活,那你这个场景下边你就没有功能可以使用。哎,就好比说你要拿我来说是吧,我是公司的员工啊,我是大家的老师,我是我儿子的爸爸,我是我媳妇的老公啊吧,这是不同场景下面有不同的角色,这个你不能乱是吧,我来教室里边,我激活一个爸爸的角色,是这个我干你们也不干呀,是吧啊。
13:11
哎,所以说这个这个。这个所以说这个好就好理解了啊,不同场景下激活你在这个场景下边的这个可以使用的这个角色啊嗯,哎,这是RBAC2啊,这个其实到这就就这个要实现的话就挺复杂了啊,RBAC3的话呢,就是把在零的基础上,把二和三呢给综合起来啊,给综合起来,所以这个就是最全面也最复杂的,它既包括角色之间的继承,又包括静态责任分离,动态责任分离。啊,这个就就就是说很详细很全面的去控制这个权限。
我来说两句