casbin权限和配置文件的理解

官方文档

基础权限模型

下图为我基于个人理解画出来的(关于多租户RBAC模型可能有误)
在这里插入图片描述
发现一篇博客讲的还行Casbin权限模型,看他的权限系统设计模型分析部分

casbin配置文件内容的结构解释

注意matchers可以设置多个。我在知道这个之前一直疑惑为什么需要policy_effect
policy.csv只是一个数据文件,即持久化了的用户权限数据,也可以存在数据库
model.conf一般在设计项目权限模型时就定好了,一般就用conf文件或者字符串形式
在这里插入图片描述

model.conf文档相关

  • 至少包含[request_definition], [policy_definition], [policy_effect], [matchers]
  • 使用#进行注释
  • [policy_definition]如果只有操作没有具体资源,比如write-all-objects,可以只写p = sub, act
  • [policy_effect]:自己去看官方文档吧,感觉怪怪的

模型方案的具体实现

  • ACL(最基础的,后面模型的改变均基于此)
    [request_definition]
    r = sub, obj, act
    
    [policy_definition]
    p = sub, obj, act
    
    [policy_effect]
    e = some(where (p.eft == allow))
    
    [matchers]
    m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
    
  • 有超级用户的ACL:
    matchers加个如果是超级用户就放行
    m = r.sub == p.sub && r.obj == p.obj && r.act == p.act || r.sub == "root"
    
  • 没有用户、只有资源和操作的ACL
    去掉所有的sub
    r = obj, act
    p = obj, act
    m = r.obj == p.obj && r.act == p.act
    
  • 基础RBAC
    添加role_definition,且只有两个下划线
    [role_definition]
    g = _, _
    
    matcher添加用户-角色关联
    m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act
    
  • 具有资源角色的RBAC
    相比基础RBAC添加角色-资源关联
    g = _, _
    g2 = _, _
    
    m = g(r.sub, p.sub) && g2(r.obj, p.obj) && r.act == p.act
    
  • 带有域/租户的RBAC
    三个下划线并添加关联
    g = _, _, _
    
    m = g(r.sub, p.sub, r.dom) && r.dom == p.dom && r.obj == p.obj && r.act == p.act
    
  • ABAC
    matchers进行属性的过滤,且不需要policy文件,因为权限是即时得出的
    m = r.sub == r.obj.Owner
    
  • Restful
    matchers进行正则匹配
    m = r.sub == p.sub && keyMatch(r.obj, p.obj) && regexMatch(r.act, p.act)
    
  • matcher全allowtrue
    e = !some(where (p.eft == deny))
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值