请教大神们,关于 Golang Go语言中 casbin 的 abac 的一个问题

我现在在用 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 有整合到一起的相关参考么。


请教大神们,关于 Golang Go语言中 casbin 的 abac 的一个问题

更多关于请教大神们,关于 Golang Go语言中 casbin 的 abac 的一个问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html

6 回复

如果只是判断是不是允许用户 user_a 访问数据表 table_a ,完全可以按照接口相同的方式来做

更多关于请教大神们,关于 Golang Go语言中 casbin 的 abac 的一个问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


不是,是判断 user_a 能不能访问 table_a 下的某一部分数据。

坐等 casbin 的人进来推他们的商业版

op 现在实现了吗?能说下吗

木有,我直接换方案了,不用 casbin 了。

你好!关于你在 Golang 中使用 Casbin 实现基于属性的访问控制(ABAC)的问题,我很乐意提供一些帮助。

Casbin 是一个强大的、多模型的权限管理框架,它支持多种访问控制模型,包括 ABAC。在 ABAC 中,访问决策基于请求的属性、主体(如用户)的属性、客体(如资源)的属性以及环境属性。

要在 Golang 中使用 Casbin 实现 ABAC,你需要完成以下几个步骤:

  1. 定义模型:创建一个 .conf 文件,定义你的 ABAC 模型。这包括定义属性、策略规则以及策略评估的逻辑。

  2. 加载策略:将你的策略规则加载到 Casbin 的 Enforcer 实例中。这些规则可以来自数据库、文件或其他数据源。

  3. 执行访问请求:在你的代码中,使用 Enforcer 的 Enforce 方法来检查特定的访问请求是否被允许。你需要提供请求的属性以及主体和客体的标识符。

  4. 处理结果:根据 Enforce 方法的返回值(通常是布尔类型),决定是否允许访问。

此外,确保你已经正确安装了 Casbin 的 Go 库,并熟悉其 API 文档。这将帮助你更有效地使用 Casbin 的功能。

如果你在实现过程中遇到具体的错误或问题,可以提供更详细的描述,以便我能给出更具体的建议。希望这些信息对你有所帮助!

回到顶部