casbinPERM

2021-02-01  本文已影响0人  陈光岚_强化班

PERM模型是由4个基础(Policy,Effect,Request,Matchers)描述各个资源和用户之间的相互关系

四个资源与用户之间的关系

Request定义

[request_definition] 部分用于request的定义,它明确了 e.Enforce(...) 函数中参数的含义。

[request_definition]

r = sub, obj, act

sub, obj, act 表示经典三元组: 访问实体 (Subject),访问资源 (Object) 和访问方法 (Action)。 但是, 你可以自定义你自己的请求表单, 如果不需要指定特定资源,则可以这样定义 sub、act ,或者如果有两个访问实体, 则为 sub、sub2、obj、act

Policy effect定义

[policy_effect]部分是对policy生效范围的定义,原语定义了当多个policy rule同时匹配访问请求request时,该如何对多个决策结果进行集成以实现统一决

策。以下示例展示了一个只有一条规则生效,其余都被拒绝的情况:

[policy_effect]

e = some(where (p.eft == allow))

该Effect原语表示如果存在任意一个决策结果为 allow 的匹配规则,则最终决策结果为allow,即allow-override。其中 p.eft表示策略规则的决策结果,可以为allow或者deny,当不指定规则的决策结果时,取默认值allow。通常情况下,policy的 p.eft 默认为allow,因此前面例子中都使用了这个默认值。

这是另一个policy effect的例子:

[policy_effect]

e = ! some(where (p.eft -= deny)

该Effect原语表示不存在任何决策结果为deny的匹配规则,则最终决策结果为 allow ,即deny-override。some量词判断是否存在一条策略规则满足匹配器。any量词则判断是否所有的策略规则都满足匹配器(此处未使用)。policy effect还可以利用逻辑运算符进行连接:

[policy_effect]

e = some(where (p.eft -= allow)) && !some(where (p.eft == deny))

该Effect原语表示当至少存在一个决策结果为allow的匹配规则,且不存在决策结果为deny 的匹配规则时,则最终决策结果为allow。这时allow授权和deny授权同时存在,但是deny优先。

匹配器

matchers定义了策略匹配者。匹配者是一组表达式。它定义了如何根据请求来匹配策略规则

[matchers]

m = r.sub -== p.sub 8& r.obj == p.obj && r.act == p.act

上一篇 下一篇

猜你喜欢

热点阅读