Casbin权限模型在教育培训领域的实用秘诀、创新实践和高效优化策略

发布于:2024-10-24 编辑:匿名 来源:网络

策略描述语言(论文) 摘要:“为了保护云资源的安全,防止数据泄露和越权访问,云平台的资源必须实现访问控制,但是当前主流的云平台通常使用自己的安全策略语言和访问控制机制,这会带来两个问题:如果云用户想要使用多个云平台,则需要进行访问控制。学习不同的策略语言并分别编写;云服务提供商需要设计自己的符合自己平台的安全策略语言和访问控制机制,开发成本很高。

提出了基于访问控制策略描述语言PML及其实现机制PML-EM,PML支持BLP、RBAC、ABAC等访问控制模型的表达。 PML-EM实现了策略语言独立性、访问控制模型独立性和编程语言独立性三个特性,从而降低了用户编写策略的成本和云服务提供商开发访问控制机制的成本。

在线论文地址:它是一个强大高效的开源访问控制框架,支持Go、Java、Node.js、Javascript(React)、Python、PHP、.NET、C++、Rust等十几种语言。 Casbin开源项目由北京大学罗阳博士于2007年创立,核心维护团队20多人。

Casbin在行业内具有广泛的影响力。目前,它被 Intel、VMware、Orange、RedHat 和 T-Mobile 等公司作为开源使用,而被腾讯云、思科和 Verizon 等公司作为闭源使用。

详情请参阅 Casbin 主页。 Casbin Go 主项目目前在 GitHub 上有 0+ star,随着所有语言、插件等的实现,可以达到 0+ star。

官方地址:Effect、Request、MatcherModel 语法及策略存储 模型语法 模型 CONF 至少应包含四个部分:[request_definition]、[policy_definition]、[policy_effect]、[matchers] 如果模型使用 RBAC,还需要添加[角色定义]部分。模型 CONF 可以包含注释。

注释以 # 开头,对整行进行注释。模型存储与策略不同。

模型只能加载,不能保存。因为我们认为模型不是动态组件,不应该在运行时修改,所以我们没有实现 API 来将模型保存到存储中。

策略存储在Casbin中,适配器(Casbin的中间件)实现了将策略规则写入持久层的细节。 Casbin用户可以调用适配器的LoadPolicy()方法从持久层加载策略规则,也可以调用SavePolicy()方法将策略规则保存到持久层。

支持的 ModelACL(访问控制列表) 具有超级用户 ACL 且不具有用户 ACL 的访问控制列表:对于没有身份验证或用户登录的系统特别有用。不带资源的ACL:有些场景可能只针对资源类型,而不是单一资源,比如写文章、读日志等权限。

它不控制对特定文章或博客的访问。 RBAC(基于角色的访问控制)支持资源角色的RBAC:用户和资源可以同时拥有角色(或组)。

对域/租户的RBAC支持:用户可以为不同的域/租户设置不同的角色集。 ABAC(基于属性的访问控制):支持使用resource.Owner这种语法糖来获取元素的属性。

RESTful:支持路径,例如 /res/*、/res/:id 和 HTTP 方法,例如 GET、POST、PUT、DELETE。拒绝优先:支持允许和拒绝授权,拒绝优先于允许。

优先级:策略规则按照优先顺序排列,类似于防火墙规则。模型 模型原语定义说明 最简单的 ACL 模型配置代码语言: javascript copy[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 在线编辑器: * @desc 权限验证 * @author Tinywan(万少博) * @date /3/29 10:37 */declare(strict_types=1);命名空间 app\common\library;使用 app\common\service\JwtService;使用 Casbin\Exceptions\CasbinException;使用 tauthz\facade\Enforcer ;使用 think \facade\Log;use think\Request;class Permission{ //不验证权限节点 protected array $public_rule = [ '/f/v1/books', '/f/v1/homes', ]; /* * * @desc: 权限验证检测 * @return bool * @author Tinywan(ShaoBo Wan) */ public function check(): bool { $url = $this->request->baseUrl(); if (in_array($url , $this->public_rule)) { 返回 true; } 尝试 { $uid = JwtService::getCurrentUID();$action = $this->request->method(); if (!Enforcer::enforce(strval($uid), $url, strtoupper($action))) { 返回 false; } } catch (CasbinException $exception) { Log::error('机舱授权异常' . $exception->getMessage());返回假;返回真; }}中间件调用 class AuthorizationMiddleware.php 代码语言:javascript 复制 class AuthorizationMiddleware{ /** * @param $request * @param Closure $next * @return mix * @throws AuthorizationException * @throws Exception */ public function handle($request , 闭包 $next): Response { if (!(new Permission($request))-> check()) { throw new AuthorizationException(); }返回 $next($request); }}接口访问权限流程代码语言:javascript copy+-------------------- ----- |资源存在吗? (如果是私有的,通常会在身份验证检查后进行检查)+------------------------ | |否 | v 是v +------------------------ |已登录? (经过身份验证,又名具有会话或 JWT cookie)或 +-------------------- ---------------- | |否 | |是 3xx v v +------------------------(不透露) |可以访问资源吗? (许可、授权、...)或 +------------------------ 重定向 | |登录 否 | |是 | | v v OK ,重定向,...(或:不显示)(或:如果私有,则资源不存在)(或 3xx:重定向) 基于角色的 RBAC 模型(Model)配置 keyMatch2 函数:URL 路径或:模式 ,例如: /v1/notices/:idregexMatch 函数:任意字符串、正则表达式模式,如:GET、get、Get、(GET|POST|DELETE) 实际代码模型配置 rbac-model.conf 代码语言:javascript copy[request_definition]r = sub, obj, act[policy_definition]p = sub, obj, act[role_definition]g = _, _[policy_effect]e = some(其中 (p.eft == 允许))[匹配器]m = g (r.sub, p.sub) && keyMatch2(r.obj, p.obj) && regexMatch(r.act, p.act) || r.sub == 6 策略表记录区县策略:上面针对区县区域角色定义了5个策略,分别是通知公告接口的列表、创建、修改、删除、详情。

帐号权限:帐号33、帐号34继承区县政策组区域,帐号33、帐号34会有通知。公告界面的列表、创建、修改、删除、详情的访问权限。

小问题:只需要为账户开通特殊的接口权限(如:健康码查询接口)。该权限不能添加到策略组区域。

那么可能的解决方案有哪些呢? : 《第一版方案(低级):入侵,修改代码,在代码级别添加判断并释放到账户》 《第二版方案(中级):非入侵,修改代码,通过AOP解决》第三版方案(进阶):非侵入式,无需修改代码,策略规则表只需添加以下策略之一》传统框架VS现代框架原理中使用Casbin。常驻内存框架。

Swoole、Workerman、ReactPHP以多进程模式运行,多个进程中的数据相互隔离(每个进程独立,互不干扰,这意味着每个进程维护自己的资源、变量、类实例) , ETC。 )。

注意:内存溢出,垃圾收集机制(GC)。场景:当Enforcer中的策略发生变化时,调用Watcher将消息推送到消息队列(MQ)。

监听消息队列的Enforcer收到后,会自动刷新实例中的策略。注意:在 PHP-FPM 环境中,不需要 Watcher,因为每个请求都是一个独立的 fpm 进程,并且会实例化一个新的 Enforcer 实例。

这是通过workerman/redis的发布订阅模式实现的,workerman/redis是一个基于workererman(观察者模式)的PHP异步redis客户端。 Enforcer & Watcher实例化Enforcer并同时监控订阅策略的变化并实时刷新到内存中。

Casbin权限模型在教育培训领域的实用秘诀、创新实践和高效优化策略

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 沃峰科技助力企业客户服务升级,全面解决全国门店运维问题

    沃峰科技助力企业客户服务升级,全面解决全国门店运维问题

    .wp-block-column h3{margin-left:0} 在快速发展的商业环境中,企业客户服务始终是关键竞争力一。 然而,全国不少企业在门店运维服务中面临数字化系统缺失、智能化不足、线上线下分离等一系列挑战,直接影响服务效率和客户满意度。 针对这些痛点,沃峰科技推出了一整套覆盖全

    06-18

  • 诺初美创获数千万元天使轮融资,时代伯乐、莱斯创投联合投资

    诺初美创获数千万元天使轮融资,时代伯乐、莱斯创投联合投资

    投资圈(ID:pedaily)据6月8日消息,跨境智能家居品牌“诺初美创”已近期完成数千万元天使轮融资。 本轮融资由时代伯乐和莱斯创投共同投资。 本次募集资金将主要用于新产品研发。 诺初美创于今年8月上台。 面向25-45岁的家庭消费者,专注于家庭消费场景的产品创新和品牌运营

    06-17

  • 重庆两江新区设立4支新产业基金 总规模45.5亿

    重庆两江新区设立4支新产业基金 总规模45.5亿

    据投资界9月22日消息,重庆两江战略基金举办重点合作项目专场签约活动,设立4支新产业基金,并签约5个投资协议。 总投资规模45.5亿元。 签约项目涵盖大健康、智能制造、新基建、航空航天、人工智能、国际贸易、数字经济等多个产业领域,将助力两江新区进一步深化大数据智能创

    06-17

  • Xilinx 首席执行官概述公司新愿景和战略蓝图

    Xilinx 首席执行官概述公司新愿景和战略蓝图

    2020 年 3 月 19 日,加利福尼亚州圣何塞 — 全球自适应和智能计算领导者 Xilinx, Inc.(纳斯达克代码:XLNX)总裁兼首席执行官(首席执行官彭维克今天透露了公司的未来愿景和战略蓝图。 Peng的愿景是为Xilinx带来新发展、新技术和新方向,打造“自适应计算加速平台”。 在这

    06-06

  • 小家电品牌“豆禾科技”获近亿元A轮融资,

    小家电品牌“豆禾科技”获近亿元A轮融资,

    深耕供应链的小家电品牌“豆禾科技”已完成近亿元A轮融资。 本轮融资由鸿章资本投资,Verity Capital 跟投。 独家财务顾问。 本轮融资将主要用于产品研发、供应链升级、企业信息化建设等。

    06-17

  • 喝了还能降解的“食用标签”让假酒、假药无处藏身

    喝了还能降解的“食用标签”让假酒、假药无处藏身

    食品药品安全时刻关系着人们的生活。 然而,各类假冒伪劣产品始终令人防不胜防。 想要辨别真伪,可能需要有“火眼金睛”,但显然不可能每个人都具备这样的能力。 然而,在现代社会,你可以用科技来辅助。 ▲ 图片来自:Unsplash 美国印第安纳州Purdue大学和韩国国家农业科学

    06-21

  • Whole House Premium对美国第一贸易公司进行数百万美元战略投资

    Whole House Premium对美国第一贸易公司进行数百万美元战略投资

    据投资界8月7日消息,国内一站式家居软装解决方案Whole House Premium,近期又有新动作。 他向美国第一家贸易公司First Trade投资100万,并正式成为First Trade的股东。   全屋优品创始人周志胜介绍,公司已完成1万元B轮融资。 全屋优品成立仅两年,就以其对市场整体专业的

    06-18

  • 台积电抢购EUV光刻机加速7nm-5nm量产进程

    台积电抢购EUV光刻机加速7nm-5nm量产进程

    日前,荷兰半导体设备制造商ASML(阿斯麦)在财报发布会上表示,ASML将采用极紫外光刻机(EUV) 2020年,年出货量从18台增至30台,外媒报道称,晶圆代工厂龙头台积电将抢占30台EUV台的一半以上。 这也将使台积电成为今年的第一。 包含EUV技术的增强型7纳米工艺可于第一季度中

    06-06

  • 挑战闲鱼、转转,京东正式推出“拍拍二手”,会扰乱二手车市场吗?

    挑战闲鱼、转转,京东正式推出“拍拍二手”,会扰乱二手车市场吗?

    二手交易平台以“焕然一新”迎接新玩家。 12月21日,刘强东宣布京东正式上线“拍拍二手”品牌。 它将采用平台化运营思路,整合回收、检测、再加工、销售等逆向供应链资源,高举“品质二手”大旗。 将京东联盟生态拓展至二手商品交易领域。 拍拍二手是由拍拍网发展而来,拍拍网

    06-17

  • 徐小平:创业者看不起英雄,不愿意给他钱

    徐小平:创业者看不起英雄,不愿意给他钱

    在天使来华“两会大众创业”年度盛典上,徐小平回忆起一年来令他印象深刻的一件事: 2018年10月在北大演讲时,一名学生告诉他,学生中存在着职业鄙视链:在四大工作的人鄙视在快消工作的人,在咨询工作的人鄙视在四大工作的人,在投行工作的人鄙视在咨询工作的人,在PE工作的

    06-18

  • 超过110亿元!北汽新能源汽车创下行业最大单笔融资,为何全部退出……

    超过110亿元!北汽新能源汽车创下行业最大单笔融资,为何全部退出……

    过亿的融资金额对于新能源来说算大吗?    据投资界8月14日消息,北汽新能源今日正式宣布,公司已完成总额1800万元B轮融资,中国信达、中基投资、兴旺产业园、国轩投资共14家投资者参与了本轮融资。   创下新能源汽车行业单笔最大融资纪录,并已在筹备IPO。    据了解

    06-18

  • 市值破万亿,王传福表弟一次性返还5万倍

    市值破万亿,王传福表弟一次性返还5万倍

    这是一个里程碑时刻——6月10日,比亚迪股价创历史新高,市值首次突破万亿,成为第一个加入万亿美元市值俱乐部的中国人。 汽车公司。 早在2009年,29岁的王传福在深圳创立了比亚迪。 从一块小小的手机电池起家,后来打造了一个巨大的新能源汽车版图:新能源汽车、动力电池、半

    06-17