场景建模
需要建模场景
-
根据人员在机构里的角色,判断是否允许访问某个接口
-
判断某个人对班级的基础信息、学生是否有查看/修改的权限
-
判断某个人对班级的作业/资料是否有查看/修改的权限
-
判断某个人是否有查看所有人作业提交的权限
-
判断某个人是否有给作业评分的权限
-
判断某个人是否有对课程的教师、基础信息、资料、作业查看/修改的权限
具体建模
-
根据人员在机构里的角色,判断是否允许访问某个接口
-
分析
-
需要根据具体角色,然后来判断是否有权限访问某个接口。所以可以使用RBAC模型,将接口的权限绑定在具体的角色上面,然后在将用户与这些具体的角色进行绑定
-
-
具体匹配方法
-
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act
-
-
-
-
判断某个人对班级的基础信息、学生是否有查看/修改的权限
-
分析
-
对于该场景,只有班级对应课程的老师才有权限进行这些操作,也就是说只有相应班级的老师才对相应班级的这些信息具有查看/修改权限,这里看作是管理权限。
-
这里就要引用domain的概念,将每个班级看作一个域,当进行权限判断的时候,首先要确定这个人是这个班级域里的老师,然后才能进行这些操作
-
-
具体匹配方法
-
m = g(r.sub, p.sub, r.dom) && r.dom == p.dom && r.obj == p.obj && r.act == p.act
-
-
-
-
判断某个人对班级的作业/资料是否有查看/修改的权限
-
分析
-
对于该场景,班级的学生对班级的作业/资料有查看权限。班级对应课程的老师还具有修改权限
-
使用的模型可以和上面的一致,增加一个domain的概念,只有班级内的某些角色才能对班级内的某些资源进行访问,这里就需要用到班级内的老师和学生两种角色
-
-
具体匹配方法
-
m = g(r.sub, p.sub, r.dom) && r.dom == p.dom && r.obj == p.obj && r.act == p.act
-
-
-
-
判断某个人是否有查看所有人作业提交的权限
-
分析
-
对于该场景,也可以用RBAC模型来建模,总的来说就是老师这个角色对作业具有查看权限
-
但是有一些附加的属性,一个班级的某个课程的老师才能对这个班级的这个课程的作业具有查看权限
-
所以这里就首先需要在本地先判断主体的课程和资源的课程是否一致,如果一致就进行下一步权限判断,不一致也就没必要判断了
-
此时的场景就相当于主体是该班的老师就能对这个作业提交情况进行查看
-
其实也就相当于上面那种建模场景
-
-
-
判断某个人是否有给作业评分的权限
-
分析
-
我对这个场景的思考与上面的相同,想着先本地判断课程是否一致,然后在进行权限判定
-
-
-
判断某个人是否有对课程的教师、基础信息、资料、作业查看/修改的权限
-
分析
-
对于这个场景,用一般的RBAC就可以实现,只要是管理员角色都可以对课程进行管理
-
-
总结
对于以上的6个场景,我认为通过RBAC模型都可以实现建模,这里呢对于1和6只需要普通的RBAC模型即可,而对于其他几个场景,都可以用引入了domain概念的RBAC模型实现。对于场景4和5需要先本地进行一个判断,当然这个本地的判断,也可以用引入domain的RBAC进行来代替,比如可以先判断主体是不是该课程的老师,在判断主体是不是该班级的老师,都通过了就说明可以进行相关操作。