V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Tsunayoshi
V2EX  ›  Go 编程语言

请教大神们,关于 casbin 的 abac 的一个问题

  •  
  •   Tsunayoshi · 58 天前 · 915 次点击
    这是一个创建于 58 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在在用 casbin 做权限管控。然后使用 rbac 做菜单以及接口级别的管控,基本是够用了。但是我还想做数据级别的权限。比如说一些特殊场景下,我只允许某个用户 A 查看某个数据表中,location=xxx 的数据。当然这个策略不是一成不变的,是可以动态删改的。考虑使用 casbin 的 abac 来做。

    然后用 rbac 的时候我发现 casbin 其实可以拿到某个人有哪些 policy 权限,通过

    e.GetImplicitPermissionsForUser("test_user")
    

    返回的切片数据就可以获取到用户test_user的权限。那么我理解的实现方式是,不管是用 policy.csv 还是用什么其他的存储方式(比如存到 mysql )。它底层应该都是查到了以后放到内存里比对后返回匹配到的 policy

    那么回到 abac 这块,我在想我可以通过 eval(sub_rule)的方式来定义多个判定策略,但是数据咋办?我也想通过 casbin 的方式直接帮我过滤数据,我数据是存在 mysql 的,可能量非常大,用 casbin 的 abac ,难道要把数据先查到,再用 abac 的策略逐个判断么?

    所以想问问各位大佬都是怎么实现的。然后 rbac+abac 有整合到一起的相关参考么。

    3 条回复    2024-07-12 13:27:52 +08:00
    wqtacc
        1
    wqtacc  
       57 天前
    如果只是判断是不是允许用户 user_a 访问数据表 table_a ,完全可以按照接口相同的方式来做
    Tsunayoshi
        2
    Tsunayoshi  
    OP
       57 天前
    @wqtacc 不是,是判断 user_a 能不能访问 table_a 下的某一部分数据。
    maocat
        3
    maocat  
       57 天前 via iPhone
    坐等 casbin 的人进来推他们的商业版
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1850 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:42 · PVG 08:42 · LAX 17:42 · JFK 20:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.