模型 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))
网友评论