[request_definition] r = sub, obj, act # 请求的规则 # r 是规则的名称,sub 为请求的实体,obj 为资源的名称, act 为请求的实际操作动作 [policy_definition] p = sub, obj, act # 策略的规则 # 同请求 [role_definition] g = _, _ # 角色的定义 # g 角色的名称,第一个位置为用户,第二个位置为角色,第三个位置为域(在多租户场景下使用) [policy_effect] e = some(where (p.eft == allow)) # 任意一条 policy rule 满足, 则最终结果为 allow [matchers] m = g(r.sub, p.sub) == true \ && keyMatch2(r.obj, p.obj) == true \ && regexMatch(r.act, p.act) == true \ || r.sub == "root" # 前三个用来匹配上面定义的请求的规则, 最后一个或条件为:如果实体是root 直接通过, 不验证权限