casbin 基于角色的访问控制(RBAC)

2023-11-21  本文已影响0人  风亡小窝

模型 model

[request_definition] # 请求定义
r = sub, obj, act

[policy_definition] # 策略定义
p = sub, obj, act

[role_definition] # 角色定义
g = _, _

[policy_effect] # 策略效果
e = some(where (p.eft == allow))

[matchers] # 匹配器
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act

策略 policy

p, userA, file1, read
p, userB, file2, write

p, admin, file2, read # admin 对 file2 可读
p, admin, file2, write # admin 对 file2 可写

g, userA, admin # 授予 userA  admin 角色权限,这样 userA 就继承 admin 角色权限,对 file2 可读可写

几种不同的Policy Effect

白名单模式。只要存在一条策略 allow 就允许,否则拒绝。

[policy_effect]
e = some(where (p.eft == allow))

黑名单模式。只要存在一条策略 deny 就拒绝,否则允许。

[policy_effect]
e = !some(where (p.eft == deny))

黑白名单模式,黑名单优先。存在一条策略 allow 且 不存在一条策略 deny 就允许,否则拒绝。

[policy_effect]
e = some(where (p.eft == allow)) && !some(where (p.eft == deny))
上一篇下一篇

猜你喜欢

热点阅读