casbin的详细理解过程(附图片理解)(rbac模型)

2023-05-16

一、casbin模型

casbin模型又叫PERM模型: subject(sub 访问实体),object(obj访问的资源)和action(act访问方法)eft(策略结果,一般为空 默认指定allow)还可以定义为deny

1)Policy策略 ——— p = {sub, obj, act, eft}

1、策略一般存储到数据库,因为会有很多

2、

[policy_definition] p = sub, obj, act


2)Matchers 匹配规则 Request和Policy的匹配规则

1、

m = r.sub == p.sub && r.act == p.act && r.obj == p.obj

2、r 请求 p 策略

3、这时候会把r和p按照上述描述进行匹配,从而返回匹配结果(eft)如果不定义会返回allow,如果定义过了,会返回我们定义过的那个结果


3)Effect影响

1、它决定我们是否可以放行

e = some(where(p.eft == allow)) 这种情况下我们的一个matches匹配完成,得到了allow那么这条请求将被放行
e = some(where(p.eft == allow)) && !some(where(p.eft == deny))

​ 这里的规定是定死的


4)Requset请求 r = {sub, obj, act}

下面我们图解用法:
请添加图片描述

运行这个run the test,可以发现,为true。因为在第一行,alice有读的操作。(见图一)但是我们将read改为write,返回的就是false。(见图二)

请添加图片描述

(图一)

请添加图片描述

(图二)


二、role_definition 角色域

1)g = _ , _ 表示以角色为基础

请添加图片描述

带角色域匹配,alice可以 == data2_admin使用,alice也可以是他自己

2)g = _ , _ , _ 表示以域为基础(多商户模式)


三、用俗语解释一下上面代码

以角色为基础

[request_definition]

r = sub, obj, act

意思:请求入参(实体,资源,方法)


[policy_definition]

p = sub, obj, act

意思:策略(实体,资源,方法)


[role_definition]

g = _ , _

意思:这个情况下,g写什么都可以,毕竟match里面根本没有涉及到g,不过我们规范一点,按照角色权限,这里的意思是g收到两个参数 g = 用户,角色


[policy_effect]

e = some(where (p.eft == allow))

意思:看看经过下面那些匹配规则后的返回值是否有一条等于里面那个allow

[matchers]

m = r.sub == p.sub && ParamsMatch(r.obj, p.obj) && r.act == p.act

意思:进来的实体,资源,方法,能不能在权限表(p)里面找到一个一模一样的


四、多租户模型

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

意思:入参(实体,域【商户】,资源,方法)

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

意思:权限模型(实体,域【商户】,资源,方法)

[role_definition] g = _ , _ , _

意思:域匹配规则,后面g会说,这里意思是g收三个参数

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

请添加图片描述

先列出来一个权限定义里面的东西

g, qm, teacher, classOne

然后用g做一些解析动作

一般我们会收到前端的入参, 大概是这个样子:“qm",“classOne”,“/base/api/”,“get”

上面我们定义的g就是我们需要的模型,经过g以后,g已经把我们的入参 qm 解析成了 r.sub 为 teacher r.rom 为classone先从这个商户找一下角色,找到就过了,然后用dom去匹配,然后用一个类似于这样的请求,去策略里面找teacher,classOne, /api/base,get

请添加图片描述

四、练习测试

1、在ACL模型中,下列案例可以通过吗

请添加图片描述

答案:false,根本找不到


2、在RBAC模型中,下列案例是否可以通过?

请添加图片描述

答案:true

那假如在添加一条:bob,data2,write可以通过吗?

答案:true,因为bob,data2,write本身就有这一条操作

再添加一条记录,如下图所示

请添加图片描述


3、多商户模型

请添加图片描述

在这个案例中,alice和domain2找到了admin,但是,domain2找不到data1,所以是false

对于g的理解:g:人-组-域,区别看,人可以进多个组多个域,但是data1/data2有不同权限来判断

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

casbin的详细理解过程(附图片理解)(rbac模型) 的相关文章

  • Casbin Demo实例(支持CSV和MySQL两种策略规则)

    Casbin 帮助文档地址 xff1a https casbin org docs zh CN how it works 常见的设计模式 xff08 DAC xff0c MAC xff0c RBAC xff0c ABAC xff09 0 基
  • GO 权限管理之 Casbin

    GO 权限管理之 Casbin 我们来回顾一下上次分享的 GO中 gjson 库的应用和分享 xff0c 它主要是提供了一种非常快速且简单的方式从json文档中获取相应值 分享了 json与 gjson分别代表什么gjson 的简单使用gj
  • casbin 使用说明记录

    本文简单记录casbin 安装步骤 使用 Casbin 作为 ThinkPHP 的权限控制中间件 PHP Casbin 是一个强大的 高效的开源访问控制框架 xff0c 它支持基于各种访问控制模型的权限管理 Think Casbin 是一个
  • 使用gorm创建casbin数据库报错

    1 报错 span class token operator span github span class token punctuation span com span class token operator span casbin s
  • RBAC vs ABAC

    K8s在1 3版本中发布了alpha版的基于角色的访问控制 xff08 Role based Access Control xff0c RBAC xff09 的授权模式 相对于基于属性的访问控制 xff08 Attribute based
  • kubeadm的rbac

    什么是 Kubernetes RBAC 基于角色的访问控制 xff08 Role Based Access Control 即 34 RBAC 34 xff09 xff1a 使用 rbac authorization k8s io API
  • ERP管理系统的权限控制实现--shiro

    1 Shiro基本原理分析 Authentication 身份认证 登录 验证用户是不是拥有相应的身份 Authorization 授权 即权限验证 验证某个已认证的用户是否拥有某个权限 即判断用户是否能做事情 常见的如 验证某个用户是否拥
  • RBAC浅谈(一)RBAC的基本概念

    1 概念 RBAC即Role Based Access Control 意为基于角色的访问控制 用户与角色相关联 当用户在系统进行注册时可以选择成为某一角色从而拥有这个角色的权限 当然新注册的用户的权限也可以由上一级用户授予如管理员认定某个
  • 手撸一套RBAC权限系统

    文章来源 RBAC权限系统分析 设计与实现 shuwoom com 目前 使用最普遍的权限管理模型正是RBAC Role Based Access Control 模型 这篇文章也主要是介绍基于RBAC的权限管理系统 我会从RBAC是什么
  • SpringBoot基本操作(七)——SpringBoot整合Shiro权限管理(完整demo+界面)

    SpringBoot2 0笔记 一 SpringBoot基本操作 环境搭建及项目创建 有demo 二 SpringBoot基本操作 使用IDEA打war包发布及测试 三 SpringBoot基本操作 SpringBoot整合SpringDa
  • 权限系统与RBAC模型概述[绝对经典]

    0 前言 一年前 我负责的一个项目中需要权限管理 当时凭着自己的逻辑设计出了一套权限管理模型 基本原理与RBAC非常相似 只是过于简陋 当时google了一些权限管理的资料 从中了解到早就有了RBAC这个东西 可惜一直没狠下心来学习 更详细
  • 无法使用 RBAC 列出部署资源

    我在 Kubernetes 中对用户使用 x509 身份验证 效果很好 然而 虽然提供对部署的访问权限似乎无法正常工作 如下所示 Roles kubectl get rolebindings devops rb n demo o yaml
  • 如何在“基于角色的访问控制”模型上实现“用户可以删除自己的帖子”? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我读过一些关于基于角色的访问控制 但还不够清楚处理这种情况 如何实现 用户可以删除自己的
  • 具有当前用户 ID 的角色分配

    我使用 Azure AD 应用程序注册原则通过 Azure 资源管理器部署资源 以通过管道进行部署 在部署过程中 我需要为部署用户设置一些权限 以确保它有足够的权限 例如上传文件 由于我使用不同的原则 并且我没有在代码中管理这些原则 因此我
  • 具有动态角色的基于角色的访问控制

    我们有一个应该实现 rbac 的 Nest 应用程序 我根据守卫文档为其添加了一个基本的守卫和装饰器 https docs nestjs com guards https docs nestjs com guards 问题 这仅允许静态角色
  • Kubernetes RBAC - 禁止尝试授予额外权限

    我在用着Kubernetesv1 8 14 定制版CoreOS簇 kubectl version short Client Version v1 10 5 Server Version v1 8 14 coreos 0 当尝试创建以下内容时
  • 如何获取Yii2和DbManager中特定角色的用户?

    如何在RBAC中获取Yii2和DbManager中特定角色的用户 请介绍一些用于用户管理和角色管理的API 我搜索并阅读Yii2 指南 http www yiiframework com doc 2 0 guide index html但我
  • Kubernetes RBAC 动词:不带列表获取,反之亦然?没有列表就看?

    虽然有很多关于 Kubernetes RBAC 的文档和示例 以及不同资源的可用动词 但我找不到任何关于某些动词是否始终组合使用或是否有单独使用它们的用例的规则 我特别想知道动词 get list 和 watch 组合它们 尤其是不组合它们
  • 创建命名空间后自动创建 Kubernetes 资源

    我有2个团队 开发人员 他们每次部署应用程序的分支 标签时都会创建一个新的 Kubernetes 命名空间 ops 它们通过 集群 角色和 集群 角色绑定管理对集群的访问控制 问题是 在 ops 创建 RBAC 资源之前 devs 无法 k
  • 我的基于角色的访问控制是可行的解决方案吗?

    我正在我的 PHP 项目中设计一个非常简单的 RBAC 基于角色的访问控制 系统 经过一番思考后 我想出了一个解决方案 但是对构建业务系统了解不多 我不确定是否有或可能是我的解决方案的任何重大设计缺陷 基本上 我想为用户提供一组 角色 我将

随机推荐

  • docker Kubernetes(k8s)部署

    文章目录 一 准备工作二 初始化集群然后在server2中然后在server1中再然后在server2中在server1中然后在server2中在server3和server4中 一 准备工作 把server2和server3 xff0c
  • LQR的理解与运用 第一期——理解篇

    目录标题 0 本系列目的理解六个问题 运用一阶倒立摆matlab 43 simscape multibody实现 简单的轮足模型 xff08 二阶倒立摆 xff09 1 理解LQR写在前面Q1 LQR控制的是什么Q2 LQR的适用场景与形式
  • LQR的理解与运用 第二期——一阶倒立摆在matlab上的LQR实现

    目录标题 0 本系列目的参考教程 1 理解2 运用在solidworks上创建一阶倒立摆模型并导出一阶倒立摆的模型及物理公式推导模型介绍模型推导模型推导方法化简方法结论 根据模型求LQR的K值matlab仿真的实现流程与步骤准备步骤正确导入
  • tensorflow张量和numpy数组相互转换

    知识补充 xff1a 官方文档 xff08 GItHub xff09 xff1a TensorFlow 2 0 Functions not Sessions tensorflow2 x的转换模块 64 tf function 关于图执行 x
  • 猿创征文|【电源专题】案例:怎么用万用表测试静态电流IQ

    目录 nbsp nbsp nbsp nbsp 静态电流在生活中的例子 nbsp nbsp nbsp nbsp 什么是静态电流IQ 关断电流 非开关静态电流 lt
  • IDEA找不到Maven插件原因及解决办法

    IDEA找不到Maven插件原因及解决办法 报错如下 xff0c 因为我自己的报错解决了 xff0c 所以借用了别人的图 xff0c 侵删 在idea中你会发现明明在pom xml中加入了插件但依然会报错 xff0c 并且不会下载 解决办法
  • linux系统用户自动登陆不需要输入密码设置

    使用于ubuntu linux unix 一 删除密码 root 64 ubuntu passwd d root 或者 passwd root d 二 修改sshd config文件 root 64 ubuntu cd etc ssh ro
  • 新建springboot项目报错

    未能配置数据源 xff1a url 属性未指定 xff0c 无法配置嵌入式数据源 原因 xff1a 无法确定合适的驱动程序类别 如果您想要一个嵌入式数据库 xff08 H2 HSQL或Derby xff09 xff0c 请将其放在类路径上
  • 伪分布搭建hadoop

    伪分布式搭建hadoop 伪分布模式准备工作以root权限修改ip xff0c 配置关网等修改完IP地址后 xff0c 需要重启网络服务查看ip和是否能ping通修改主机名修改域名映射文件关闭防火墙ssh免密登陆 安装JDK卸载之前的JDK
  • Java实现AI机器人聊天

    文章目录 前言一 账号注册申请密钥二 参数详情三 Java集成1 调用接口2 响应数据 四 效果总结 前言 OpenAI API 几乎可以应用于任何涉及理解或生成自然语言或实现代码等场景 提供一系列具有不同学习训练的模型 xff0c 适用于
  • 使用全局阈值进行灰度图像二值化

    1 原理 选取阈值的一种方法就是图像直方图的视觉检测 选择 T 的另一个方法是反复实验 xff0c 选取不同的阈值 xff0c 直到观测者觉得产生了较好的结果为止 xff0c 这在交互环境下特别有效 例如 xff0c 这种方法允许 使用者通
  • Linux动静态库

    文章目录 Linux动静态库认识动静态库动态库静态库 静态库的打包与使用静态库的打包静态库的使用 动态库的打包与使用动态库的打包动态库的使用 Linux动静态库 认识动静态库 我们先来看一段代码 xff1a span class token
  • GPS启动方式、定位速度、定位精度介绍

    前面文章介绍了GPS定位基础知识 GPS定位知识介绍 qq com 本文主要介绍GPS启动方式 定位过程中最重要的辅助信息是时间 星历 位置 根据辅助信息不同
  • window11上Linux环境搭建

    以下的大部分图片来自网上 xff0c 本人在操作过程中忘记截图记录了 xff0c 但是发出来的这些和我做的是一模一样的 xff01 xff01 一 点击下载centOS7镜像 centos 7 9 2009 isos x86 64安装包下载
  • SQLyog连接MySQL出现错误,提示Client does not support authentication protocol requested by server的解决方法

    问题 xff1a 自己电脑安装了MySQL8 0 26版本 xff0c 但从网上找到破解版的SQLyog软件 xff0c 在装好SQLyog后连接不上 xff0c 会弹出 Client does not support authentica
  • C++的基础知识学习笔记

    C 43 43 的基础知识学习 1 3变量 作用 xff1a 给一段指定的内存空间起名 xff0c 方便操作这段内存 语法 xff1a 数据类型 变量名 61 初始值 xff1b int a 61 1 xff1b 变量存在的意义 xff1a
  • zsh 配置指南

    zsh 配置指南 前言 在Linux系统中 xff0c 我们厂用终端输入命令与系统进行交互 xff0c 大多Linux系统使用的shell为bash 但bash中的功能和色调非常简单和单调 xff0c 往往想达到一个趁手的命令行工具 xff
  • linux/swupd基础命令讲解---基础篇

    一 原生linux ubuntu unix系统安装基础命令 root 64 ubuntu clrtrust generate root 64 ubuntu s wupd bundle add network basic root 64 ub
  • Ros_Canopen:ROS与底盘的can通讯使用

    ROS CANOPEN ROS与底盘的can通讯使用 这篇文章记录了ros canopen的安装和使用过程 xff0c 系统版本为ubuntu16 04 并且已经安装了ROS xff08 kienect 安装过程可能会出现错误 xff0c
  • casbin的详细理解过程(附图片理解)(rbac模型)

    一 casbin模型 casbin模型又叫PERM模型 xff1a subject sub 访问实体 xff0c object xff08 obj访问的资源 xff09 和action xff08 act访问方法 xff09 eft xff