-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrbac_model.conf
31 lines (25 loc) · 1.57 KB
/
rbac_model.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[request_definition]
r = sub, obj, act
# r 代表请求(Request)。
# sub 是请求的主体(Subject),即发起请求的用户或角色。
# obj 是请求的对象(Object),即被访问的资源。
# act 是请求的动作(Action),即对资源进行的操作(如读、写、删除等)。
[policy_definition]
p = sub, obj, act,desc,create_by,api_id
# p 代表策略(Policy)。
# sub 是策略的主体(Subject),与请求中的主体对应。
# obj 是策略的对象(Object),与请求中的对象对应。
# act 是策略的动作(Action),与请求中的动作对应。
# desc 是策略的描述(Description),用于描述策略的额外信息(这个字段在匹配时不会用到,只是用于记录)。
[role_definition]
g = _, _
[policy_effect]
e = some(where (p.eft == allow))
[matchers]
m = r.sub == p.sub && (keyMatch2(r.obj, p.obj) || keyMatch(r.obj, p.obj)) && (r.act == p.act || p.act == "*")
# m 代表匹配器(Matcher)。
# r.sub == p.sub 表示请求的主体必须与策略的主体匹配。
# (keyMatch2(r.obj, p.obj) || keyMatch(r.obj, p.obj)) 表示请求的对象必须与策略的对象匹配,使用了 keyMatch2 和 keyMatch 函数进行匹配。
# keyMatch2 是一种路径匹配函数,支持带有通配符的路径匹配,例如:/foo/bar 可以匹配 /foo/*。
# keyMatch 是一种基本的路径匹配函数,例如:/foo/bar 可以匹配 /foo/*。
# (r.act == p.act || p.act == "*") 表示请求的动作必须与策略的动作匹配,或者策略的动作是通配符 *,表示所有动作。