27 | 权限模型:5大权限模型是如何进行资源授权的?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了5种常见的权限模型,包括ACL、DAC、MAC、RBAC和ABAC。ACL是一种简单的权限模型,用于判断用户是否可以对资源进行特定操作;DAC是ACL的扩展模型,具有更强的灵活性,允许Subject将权限下放给其他Subject;MAC是ACL的扩展模型,安全性更高,要求Subject和Object同时具有安全属性才能授权通过;RBAC是一种基于角色的访问控制模型,而ABAC是基于属性的权限验证模型,被认为是权限系统设计的未来。文章详细介绍了这些模型的特点和适用场景,帮助读者了解不同权限模型的基本概念和适用场景。此外,还介绍了相关开源项目,如Casbin、keto、go-admin等,为读者提供了学习和实践的资源。ABAC模型的细粒度控制和灵活性,以及开源项目的介绍,使得读者能够快速了解权限模型的基本概念和实际应用,为设计资源授权系统提供了指导。文章还提出了选择建议,建议读者学习相关开源项目以及思考如何将授权流程集成进统一接入层。
《Go 语言项目开发实战》,新⼈⾸单¥68
全部留言(12)
- 最新
- 精选
- Geek_175bc2老师想问一下,我们的业务是针对一个接口,不同的角色要获取不同的查询结果,例如:管理员可以看到所有列表数据,区域主管能看到对应区域的数据等,项目中全是类似的业务场景,需要用怎么的权限模型设计呢
作者回复: 加我微信聊nightskong。一言两语说不清
2021-12-0133 - wei 丶1. ABAC 2. 在网关通过RPC或者restful api调用授权系统进行鉴权
作者回复: 666666
2021-09-303 - helloworld思考题1:ABAC;2:写一个网关插件,当访问认证通过后,自动调用类似本iam项目的后端应用作资源鉴权。
作者回复: 老哥回答给100分
2021-07-2723 - AKA三皮我强烈不同意在网关处实现权限的管理:理由,通常网关是无状态的。要实现一套完整的权限管理,对于网关来说太重了;同时,很多开源的网关会把授权的动作委托给第三方,如权限平台,但是这种,在实际生产中,如果每次请求都要多一跳的话, 网关的效率如何去保证?目前有一些方案,建议是采用sidecar的方式(如OPA),但是关于大量权限数据的存储与同步方案,却很少
作者回复: 优秀的开源网关都提供授权的WebHook,授权是通过webhook调用第三方服务完成的。 这里并不是说授权服务要集成在网关系统中。而是说,要在网关这一层通过webhook的方式进行认证。 性能问题很好办:需要的开启,不需要的关闭。如果一个应用放需要授权,放哪里都要多一次授权调用,所以多一次调用这个不是问题。
2022-07-27归属地:广东2 - 臭臭老师, 请问下,比如想要实现一个文章编辑"EDIT"权限, 并且只能编辑自己发布的文章,结合 Casbin 的 RBAC模型,实现的思路是什么样的呢? 我的想法是做一个 "EDIT_SELF_ARTICLE"权限, 拥有这个权限的人员就可以修改自己的文章, 但这样实现 就相当于 判断人员拥有编辑权限之后, 还需要自己写业务逻辑判断当前要修改的文章是否是自己发布的文章 ?
作者回复: 判断人员是否可以修改自己的文章,这个属于资源守护全系统干的事情,为啥还需要自己写业务逻辑判断当前修改的文章是否自己发布的文章呢? 另外,如果要允许别人修改自己的文章,底层就不应该加这层判断。
2021-07-3022 - 李凯拜读了大佬的iam源码,根据大佬的建议调研了go-admin 结合这两个项目,有些设计上的问题想请教下。 1. go-admin的admin模块,以及代码生成出来的目录结构,并没有面向接口编程。而是把service层和存储层放在了一起实现,面向对象编程。service层业务逻辑多了后会很乱,每个方法很臃肿。iam中先分层,结构清晰,在每一层定义对象,然后面向接口编程,这个更容易理解。不知道大佬对个怎么看。 2. 如果想用go-admin的权限管理,和代码生成工具,但是不想用他的分层和面向对象的编程方式,我该怎么办。 3.目前着手从iam和go-admin中抽取一些功能和设计思想,形成新的项目。比如项目结构采用iam的设计方式,server部分用iam的优雅终止和实例的初始化,以及配置,code码,业务面向接口的那一套等等,但是,不久以后我要在这个项目中加入权限管理,go-admin确实不错很符合需求,我该如何是好,是整合go-admin还是直接代码拿过来。 希望大佬给点建议,谢谢🙏
作者回复: 1. iam设计的更为合理,尤其在项目很大的时候,每层实现的功能清晰,通过接口解耦合,也能让代码变得可测试; 2. 这个问题不太好回复,你可以将go-admin的业务代码迁移到iam中,虽然工作量大,但是也花不了多少精力 3. 我觉得看个人需求吧,如果追求代码质量,那可能要结合2个项目的优点组成一个新的项目;如果只是工作,并且更注重需求和效率,可以直接用go-admin
2022-11-07归属地:广东1 - Geek_d8f539我看authzserver的访问控制是用的 ory/ladon,好像文中没提到
作者回复: 后面文章会提到
2022-05-16归属地:广东 - 我是小妖怪🇨🇳为啥没有Red Hat的keycloak?
作者回复: 这里列的是一些常见的权限模型
2022-04-24 - Geek_b9d307想了解一下访问控制框架 casbin 和 open policy agent,这两款产品有什么优缺点?两者分别适用场景是什么?
作者回复: 你可以调研下,open policy agent不熟悉
2022-01-09 - yandongxiao总结: 1. 五种权限模型:ACL、DAC、MAC、RBAC、ABAC。 2. 前三个是面向资源的权限管理系统;RBAC是面向角色的权限管理系统;ABAC是面向属性的权限管理系统。对于一般的项目来说,使用RBAC即可。 3. 开源的授权项目有,casbin, keto, go-admin, gin-admin。其中 go-admin 和 gin-admin 都是RBAC权限管理脚手架2021-11-271