Casbin权限模型实战大揭秘,教育培训领域的创新实践和高效优化策略

Tinywan

策略描述语言(论文)

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

  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. 优先级: 策略规则按照先后次序确定优先级,类似于防火墙规则。

上传图片太麻烦。直接访问这个地址:https://mp.weixin.qq.com/s/GgLuhGoGUbNduLH9czytzg

版权声明
作者:Tinywan
出处:https://mp.weixin.qq.com/s/GgLuhGoGUbNduLH9czytzg
本文版权归作者和workerman官方共有。欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
欢迎关注个人微信公众号,一起进步!扫描左方二维码即可

734 2 2
2个评论

smile1

感觉很厉害

  • 暂无评论
awen

截图
你好 我们这样的字段权限管理,这个能用上吗

Tinywan

11350
积分
0
获赞数
0
粉丝数
2020-01-14 加入
🔝