当前位置: 首页 > news >正文

网站开发应用开发郑州那家做网站便宜

网站开发应用开发,郑州那家做网站便宜,沪尚茗居装修价格怎样,房地产资讯策略描述语言(论文) 摘要: 为了保护云资源的安全,防止数据泄露和非授权访问,必须对云平台的资源访问实施访问控制。然而,目前主流云平台通常采用自己的安全策略语言和访问控制机制,从而造成两个问题&#x…

策略描述语言(论文)

摘要: 为了保护云资源的安全,防止数据泄露和非授权访问,必须对云平台的资源访问实施访问控制。然而,目前主流云平台通常采用自己的安全策略语言和访问控制机制,从而造成两个问题:

  1. 云用户若要使用多个云平台,则需要学习不同的策略语言,分别编写安全策略;
  2. 云服务提供商需要自行设计符合自己平台的安全策略语言及访问控制机制,开发成本较高。

对此,提出一种基于元模型的访问控制策略描述语言PML及其实施机制PML-EM.PML支持表达BLP、RBAC、ABAC等访问控制模型。

PML-EM实现了3个性质:策略语言无关性访问控制模型无关性程序设计语言无关性,从而降低了用户编写策略的成本与云服务提供商开发访问控制机制的成本。

在线论文地址:http://www.jos.org.cn/jos/article/abstract/5624

Casbin框架介绍

Casbin 是一个强大的、高效的开源访问控制框架,支持 Go, Java, Node.js, Javascript (React), Python, PHP, .NET, C++, Rust 等十几种语言。

Casbin 开源项目由北京大学罗杨博士创立于 2017 年,核心维护团队有二十多人。Casbin 在业界具有广泛影响力。

目前已经被 Intel 、VMware 、Orange 、RedHat 、T-Mobile 等公司开源使用,被腾讯云、Cisco 、Verizon 等公司闭源使用。具体详见 Casbin 主页。Casbin Go 主项目目前 GitHub 10000+ stars,加上所有语言的实现、插件等可达到 15000+ stars

官方地址:https://casbin.org/

核心技术

基于创始人在北大提出的PERM元模型的学术论文(英文版:arXiv,中文版: 软件学报)

PERM:Policy, Effect, Request, Matcher

Model语法和策略存储

Model语法

  • Model CONF 至少应包含四个部分:[request_definition]、[policy_definition]、[policy_effect]、[matchers]
  • 如果 model 使用 RBAC, 还需要添加[role_definition]部分。
  • Model CONF 可以包含注释。注释以#开头,#将注释整行。

Model存储

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

Policy存储

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

支持的 Model

  1. ACL (Access Control List)访问控制列表
  2. 具有 超级用户 的 ACL
  3. 没有用户的 ACL: 对于没有身份验证或用户登录的系统尤其有用。
  4. 没有资源的 ACL: 某些场景可能只针对资源的类型, 而不是单个资源, 诸如 write-article, read-log等权限。 它不控制对特定文章或日志的访问。
  5. RBAC (基于角色的访问控制)
  6. 支持资源角色的RBAC: 用户和资源可以同时具有角色 (或组)。
  7. 支持域/租户的RBAC: 用户可以为不同的域/租户设置不同的角色集。
  8. ABAC (基于属性的访问控制): 支持利用resource.Owner这种语法糖获取元素的属性。
  9. RESTful: 支持路径, 如 /res/*, /res/:idHTTP 方法,如 GET, POST, PUT, DELETE
  10. 拒绝优先: 支持允许和拒绝授权, 拒绝优先于允许。
  11. 优先级: 策略规则按照先后次序确定优先级,类似于防火墙规则。

模型Model元语定义说明

最简单的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

在线编辑器:https://casbin.org/en/editor

Casbin插件生态

支持多种访问控制模型

适用场景

多租户(tenant)

协同工作

项目实战

项目架构

数据表设计

认证&授权

更多了解:https://cloud.tencent.com/developer/article/1695510

多租户&中间件

多租户数据表设计

注:同一个RDS实例的不同数据库

中间件权限验证

注:需要权限访问模块接口中间件。这里使用不同的Sass站点有不同的数据库。

权限验证类Permission.php

/*** @desc 权限验证* @author Tinywan(ShaoBo Wan)* @date 2020/3/29 10:37*/declare(strict_types=1);namespace app\common\library;use app\common\service\JwtService;
use Casbin\Exceptions\CasbinException;
use tauthz\facade\Enforcer;
use 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)) {return true;}try {$uid = JwtService::getCurrentUID();$action = $this->request->method();if (!Enforcer::enforce(strval($uid), $url, strtoupper($action))) {return false;}} catch (CasbinException $exception) {Log::error('Cabin 授权异常' . $exception->getMessage());return false;}return true;}
}

中间件调用类AuthorizationMiddleware.php

class AuthorizationMiddleware
{/*** @param $request* @param Closure $next* @return mixed* @throws AuthorizationException* @throws Exception*/public function handle($request, Closure $next): Response{if (!(new Permission($request))->check()) {throw new AuthorizationException();}return $next($request);}
}

接口访问权限流程

+-----------------------| RESOURCE EXISTS ? (if private it is often checked AFTER auth check)+-----------------------|       |NO |       v YESv      +-----------------------404     | IS LOGGED-IN ? (authenticated, aka has session or JWT cookie)or      +-----------------------401        |              |403     NO |              | YES3xx        v              v401            +-----------------------(404 no reveal)       | CAN ACCESS RESOURCE ? (permission, authorized, ...)or             +-----------------------redirect          |            |to login       NO |            | YES|            |v            v403          OK 200, redirect, ...(or 404: no reveal)(or 404: resource does not exist if private)(or 3xx: redirection)

基于角色的RBAC模型(Model)配置

keyMatch2函数:URL 路径或 : 模式下,例如: /v1/notices/:id

regexMatch函数:任意字符串,正则表达式模式,列如:GET、get、Get、(GET|POST|DELETE)

实际代码模型配置rbac-model.conf

[request_definition]
r = sub, obj, act[policy_definition]
p = sub, obj, act[role_definition]
g = _, _[policy_effect]
e = some(where (p.eft == allow))[matchers]
m = g(r.sub, p.sub) && keyMatch2(r.obj, p.obj) && regexMatch(r.act, p.act) || r.sub == 10086

策略表记录

区县策略:以上针对区县 area 角色,定义了5条策略,分别是通知公告接口的列表、创建、修改、删除、详情。

账号权限:账号 103233、103234、10370488 继承了区县策略组 area,则账号 103233、103234、10370488 将会拥有通知公告接口的列表、创建、修改、删除、详情的访问权限。

小问题:仅只需要给账号 10370488 开通一条特殊的接口权限(如:健康码查询接口),该权限不能添加到策略组 area。那么可行的解决方案有哪些?:

  • 第一版方案(低级):入侵,修改代码,在代码层给账号 10370488增加判断放行
  • 第二版方案(中级):非入侵,修改代码,通过AOP解决
  • 第三版方案(高级):非入侵,不修改代码,策略规则表只需要添加一条以下一条策略

传统框架 VS 现代化框架

原理

在常驻内存框架中使用Casbin。Swoole、Workerman、ReactPHP 运行模式为多进程,而多进程中数据是互相隔离的(每个进程都是独立互不干扰的,这意味着每个进程都维护着自己的资源、变量和类实例等)。注意:内存溢出,垃圾回收机制(GC)。

场景

当Enforcer中的策略发生变化时,调用 Watcher,向消息队列(MQ)中推动消息,监听该消息队列的Enforcer收到后,自动刷新该实例中的策略。

注意:在 PHP-FPM 环境下,并不需要Watcher,因为每个请求都是一个独立的fpm进程,都会实例化一个全新的Enforcer实例。

实现

这里通过基于workerman的PHP异步redis客户端 workerman/redis 的发布订阅模式实现(观察者模式)。

Enforcer & Watcher

实例化Enforcer 同时监控订阅策略的变化,实时刷新到内存中。

更多源码查看地址:https://github.com/php-casbin/webman-permission

http://www.yayakq.cn/news/266005/

相关文章:

  • 东莞市优镨网络技术有限公司win7优化大师官方网站
  • 公司网站建设设计公司排名网站建设销售怎么样
  • 王老吉网站建设水平优点网站开发需求规格说明书
  • 国内装饰行业网站开发承接网站建设
  • 手机版商城网站都有哪 些功能德州哪个做网站做得好
  • 如何使用家里电脑做网站服务器手机网站按那个尺寸做
  • 做网站建设的平台邮箱发网站建设主题怎么写
  • 常见的网站盈利方式哪个网站学做凉皮
  • 中国建筑设计网站郑州做网站那
  • 洛龙区网站制作建设费用照片做视频的网站
  • 什么网站容易收录容桂网站制作动态
  • 网站建设longda专门做门业的网站
  • 那里有专业注册网站建设的江西网站优化
  • 网站如何做页数赣州专业企业网站建设
  • 太原市建设银行网站首页jsp做购物网站技术可行性
  • wordpress建站 ftp推销别人做网站有什么作用
  • 深圳哪里有做网站多点网络网站制作系统
  • 做那个的网站谁有平台网站建设ppt模板
  • 滨州市滨城区建设局网站搭建网站免费
  • 网站建设 上海网站网站上线要多久
  • 如何建广告网站百度推广长春分公司
  • 新乡做网站哪家好上海社保网站哪里做转入
  • 龙岗做网站的网站后台管理怎么做
  • centos wordpress 整站品牌策划咨询
  • 山东神华网站建设wordpress标签图片不显示
  • 怎样做汽车网站建设上海微网站
  • 自己用wordpress建站小型购物网站
  • 专注邯郸建设手机网站南京江北新区核心区范围
  • 福州公司网站开发方案建筑设计师工资很高吗
  • 免费的ppt下载网站电子平台网站建设