想请教一下各位 V 友,最近在学习 Golang ,写一个小项目的时候在权限控制上遇到了一些疑问。 背景如下:
诚心求问这样的需求应该选用什么权限控制模型? Go 下除了 Casbin 外有什么推荐的权限控制库吗?
1
hezhiming1993 156 天前 1
RBAC
|
2
kaneg 156 天前 1
需要控制访问资源的范围吗?比如甲乙属于一个组,但甲只能可以看自己组里面的内容,乙可以看所有组的。如果是这样的话,单纯的 RBAC 就不够了,需要在其基础上再加上对资源范围的控制。
|
3
ginakira OP @kaneg 感谢解答。需要的是:对应组的资源只有拥有对应组对应角色的用户才可以访问,比如甲只有在有 A 组查看角色的条件下才能查看 A 组资源。这种情况 RBAC 是否适用呢?
|
4
nx6Ta67v2A43frV2 156 天前 1
自己基于 RBAC 模型实现
|
5
czk1997 156 天前 2
|
6
afxcn 155 天前 2
无论你是用组来限定资源权限还是用角色,最终都会回到具体的用户的权限。
用组:用户 -> 组 -> 角色 -> 权限 用角色:用户 -> 角色 -> 权限 只是需要查询多一些而已 |
7
HashV2 155 天前 1
直接找个 RCBA 的架子用就完事了
|
8
coderzhangsan 155 天前 2
按照权限设计理论,RBAC 属于垂直权限,数据资源控制属于水平权限,二者相互独立;一般情况下垂直权限是必须要具备的,至于水平权限,如果有数据资源控制,则需要在垂直权限的基础上二次设计。
|
9
ginakira OP |
10
Nazz 155 天前 1
推荐自己写
|
11
NoKey 155 天前 1
所有权限,基于组去查询就可以了,还是有角色,但是角色是隶属于某个组的
比如你把角色 Ra 分给用户 UserA ,分的时候,要确定是那个组,那么形成 组-角色-人员 这样一个关联关系 所有操作,都居于这个层次关系去约束 |
13
hxndg 154 天前
真实的生产往往不是光 RBAC ,都是组合考虑的。
如果走单纯的 RBAC 你这个里面我目前可以明确看到有个问题是组一多就角色膨胀了 另外就是资源只属于一个组这个假设不确定是否稳固 所以建议 RBAC + ABAC 控制,通用角色用 RBAC ,组用 ABAC 控制 |
14
ginakira OP @hxndg 感谢指教!目前的设计是与 11# 所说的类似,基于 “人员-组-角色” 的关联关系来约束,看起来有些像 RBAC with domain ,不知道这样设计是否妥当。还有对于您提到的 RBAC+ABAC 控制不确定我的理解是否正确,比如对于一次需要鉴权的操作,先使用 ABAC 控制用户所在的组是否与资源所属的组一致,再使用 RBAC 根据用户的角色来控制用户能否对资源执行此次操作吗?
|
15
hxndg 154 天前
|