ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ABAC权限控制学习

2021-08-05 14:06:03  阅读:448  来源: 互联网

标签:ABAC obj sub eft 学习 allow act 权限 where


ABAC模型

什么是ABAC模式?

ABAC是基于属性的访问控制,可以使用主体、客体或动作的属性,而不是字符串本身来控制访问。 您之前可能就已经听过 XACML ,是一个复杂的 ABAC 访问控制语言。 与XACML相比,Casbin的ABAC非常简单:在ABAC中,可以使用struct(或基于编程语言的类实例) 而不是字符串来表示模型元素。

例如,ABAC的官方实例如下:

[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

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

[matchers]
m = r.sub == r.obj.Owner

我们在 matcher 中使用 r.obj.Owner 代替 r.obj。 在 Enforce() 函数中传递的 r.obj 函数是结构或类实例,而不是字符串。 Casbin将使用映像来检索 obj结构或类中的成员变量。

这里是 r.obj construction 或 class 的定义:

type testResource struct {
    Name  string
    Owner string
}

Casbin模型

Casbin:https://casbin.org/zh-CN/

定义一个Policy策略,定义一个Matchers匹配规则,通过Request请求参数与Policy策略通过规则进行匹配,获得一个Effect影响,拿到Effect影响的结果,进入Effect影响的表达式,返回一个布尔值

Policy 策略

p={sub, obj, act, eft}

策略(实体,资源,方法,影响)

属性属性名称描述
subsubject访问实体
objobject访问的资源
actaction访问的方式,POST、GET
efteffect策略结果,一般为空,只有两种结果(allow(默认)、deny)
[policy_definition]
p = sub, obj, act, eft
Effect 影响

它决定我们是否可以放行,仅以下几种:

Policy effect意义示例
some(where (p.eft == allow))allow-overrideACL, RBAC, etc.
!some(where (p.eft == deny))deny-overrideDeny-override
some(where (p.eft == allow)) && !some(where (p.eft == deny))allow-and-denyAllow-and-deny
priority(p.eft) || denypriorityPriority
subjectPriority(p.eft)基于角色的优先级主题优先级
  • e = some(where(p.eft == allow)) 这种情况下 我们的一个matchers匹配完成,得到了allow 那么这条请求将被放行
  • e = some(where(p.eft == allow)) && !some(where(p.eft == deny))
[policy_effect]
e = some(where (p.eft == allow))

解释:看看经过匹配规则后的返回值是否等于allow

Request 请求
[request_definition]
r = sub, obj, act

解释:请求入参(实体,资源,方法)

Matchers 匹配规则

Request 和 Policy 的匹配规则

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

解释:进来的实体、资源、方法 能不能在权限表里面找到一致的

r 请求 p 策略

这时候会把 r 和 p 按照上述描述进行匹配,从而返回匹配结果(eft),如果不定义,会返回allow,如果定义过了,会返回我们定义过的那个结果

模型示例:

[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

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

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

转载自:https://casbin.org/docs/zh-CN/abac

标签:ABAC,obj,sub,eft,学习,allow,act,权限,where
来源: https://blog.csdn.net/liwenyang1992/article/details/119416244

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有