权限管理


点击跳转正文阅读正文 PERM

两个文件 modelfile及policy file

modelfile 用来定义具体的权限模型,常见模型 ACL RBAC ABAC 等 policy file 定义具体的策略, 权限的检查就是基于定义的 model file 和 policy file 来完成的. 相对于 model file 定义规则, policy file 中定义的就是具体的内容.

1. PERM(Policy, Effect, Request, Matchers)

模型反映了权限的本质 – 访问控制

Policy: 定义权限的规则
Effect: 定义组合了多个 Policy 之后的结果, allow/deny
Request: 访问请求, 也就是谁想操作什么
Matcher: 判断 Request 是否满足 Policy

2. model file 定义语法

casbin 是基于 PERM 的, 所有 model file 中主要就是定义 PERM 4 个部分.

Request definition

[request_definition]
r = sub, obj, act

sub: accessing entity (Subject) obj: accessed resource (Object) act: the access method (Action)

Policy definition

[policy_definition]
p = sub, obj, act
p2 = sub, act

定义的每一行称为 policy rule, p, p2 是 policy rule 的名字. p2 定义的是 sub 所有的资源都能执行 act

Policy effect

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

上面表示有任意一条 policy rule 满足, 则最终结果为 allow

Matchers

[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act

定义了 request 和 policy 匹配的方式, p.eft 是 allow 还是 deny, 就是基于此来决定的

Role

[role_definition]
g = _, _
g2 = _, _
g3 = _, _, _

g, g2, g3 表示不同的 RBAC 体系, , 表示用户和角色 , , _ 表示用户, 角色, 域(也就是租户)