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