目 录CONTENT

文章目录

Casbin多租户模型的访问控制

Hello!你好!我是村望~!
2023-06-08 / 0 评论 / 0 点赞 / 150 阅读 / 759 字
温馨提示:
我不想探寻任何东西的意义,我只享受当下思考的快乐~

Casbin多租户模型的访问控制

复习之前学习了给主体和资源赋予角色的RBAC 模型!描述了角色对某一类数据的操作权限

类比一个学校的教务系统!

之前我们从

  • 给一个 张老师定义权限 可以把某个学生送进某个班,送出某个班(指定某个用户的权限)

  • 到给张老师这个人定义一个老师的角色,然后给老师这个角色定义权限 老师可以让把某个学生送进某个班,送出某个班 (给用户定义角色,然后给角色权限)

  • 然后除了给老师定义角色权限,后面还给学生定义角色权限,老师角色操作学生角色的权限(给用户定义角色权限,给资源定义角色权限!)

    下一步就是到我们这里要学的多租户模型,类比成学校教务系统的话,这个租户其实就是指不同的学校了!

一般情况下,某个老师只在他自己的学校有某些权限!而去到其他的学校可能权限就没有了!

模型定义

Request 的四个分别是: 主体,租户域,资源,动作

Policy 同 Request 一样!

[request_definition]
r = sub, dom, obj, act

[policy_definition]
p = sub, dom, obj, act

[role_definition]
g = _, _, _

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = g(r.sub, p.sub, r.dom) && r.dom == p.dom && r.obj == p.obj && r.act == p.act

定义 policy 按照 g(r.sub, p.sub, r.dom)顺序去匹配 匹配上的 就进入r.dom == p.dom && r.obj == p.obj && r.act == p.act去看是不是满足这个规则

p, 老师, 第三中学, 马小跳, delete
p, 老师, 第一中学, 李小虎, delete
p, 老师, 第一中学, 王小兵, delete

g, 张老师, 老师, 第三中学
g, 李老师, 老师, 第二中学
g, 王老师, 老师, 第一中学

Request : 张老师,第三中学,马小跳,delete

首先丢到 g(r.sub, p.sub, r.dom)去找policy有没有对应的!g

通过 g(r.sub, p.sub, r.dom) 找到了 张老师, 老师, 第三中学 那就知道。张老师是第三中学的老师!

上面的 p 呢 有定义 第三中学的老师是可以对马小跳进行 delete 的动作的 那么这个请求的权限校验就通过的!

有因为后面的规则都是 判断是否 == 那么根据规则判断就完了

找到了 g, 张老师, 老师, 第三中学 这一条,第三中学(租户域)的老师(角色)角色,然后再去看 p, 老师, 第三中学, 马小跳, delete 刚好和请求能对上!

角色,租户,操作的资源对象和动作都可以对应上,那么就说明权限校验通过!

image-20230608120014678

0

评论区