casbin权限和配置文件的理解

news/2024/11/28 21:54:41/

官方文档

基础权限模型

下图为我基于个人理解画出来的(关于多租户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))
    

http://www.ppmy.cn/news/19012.html

相关文章

Sprig框架集成(SSM框架) | Sping+SpringMVC+Mybatis

SSM框架 SSM是spingspringMVCmybatis集成的框架:标准的MVC模式,整个系统划分为表现层,controller层,service层,DAO层四层 Spring(业务层) Spring就像是整个项目中装配bean的大工厂,在…

我的硕士前半生

本篇文章属于随笔类,它可能无法对你起到直接帮助,它只是我这个普通学生一年半以来的一些足迹与思考。本文首发于我的个人博客 Forever Young 我的本科像硕士,有实验室有工位,桌子超级大,有老师带有学长可以问。 我的硕…

mysql之存储过程

目录 1.概念 2.创建语法 3.调用 4.示例 5.删除 6.查看 1.概念 存储过程和函数类似java中的方法,能够提高代码的重用性,能够简化操作 一组预先编译好的SQL语句的集合,理解成批处理语句,减少了编译次数并且减少了和数据库服…

用户画像计算更新

3.1 用户画像计算更新 目标 目标 知道用户画像建立的流程应用 无 3.1.1 为什么要进行用户画像 要做精准推送同样可以使用多种推荐算法,例如:基于用户协同推荐、基于内容协同的推荐等其他的推荐方式,但是以上方式多是基于相似进行推荐。而构…

Exadata存储服务器(又称Exadata存储单元)

存储单元可以说是让Exadata如此大规模普及并且使用效果优异的核心要素。 I/O性能问题始终是Exadata存储或者存储服务器尽力去解决的问题。 Exadata存储服务器概述 Exadata数据库一体机通常预装了3类硬件: 数据库计算节点服务器存储服务器极速的InfiniBand存储交…

【论文翻译】Attention Is All You Need

【论文】Attention is All you Need (neurips.cc) 摘要 主要的序列转换模型是基于复杂的循环或卷积神经网络,其中包括一个编码器和一个解码器。表现最好的模型还通过注意机制连接编码器和解码器。我们提出了一个新的简单的网络架构,Transformer&#xf…

js unicode编码相关

ASCII码 在计算机种中,1 字节对应 8 位二进制数,而每位二进制数有 0、1 两种状态,因此 1 字节可以组合出 256 种状态。如果这 256 中状态每一个都对应一个符号,就能通过 1 字节的数据表示 256 个字符。ASCII就是用于描述英语中的…

Liunx相关服务无法启动,带你一步一步找出问题和解决问题

liunx服务无法开启的原因有各种各样,首先我们需要找到我们究竟是为什么不能能够开启这个服务,这里我们先要去考虑到的一个非常重要的问题就是我们的防火墙有没有启动,防火墙有没有把我们的要开启相关服务的端口给封禁掉。这个是无论如何都要第…