ABAC |
您所在的位置:网站首页 › abac地说 › ABAC |
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 }如何使用ABAC?简单地说,要使用ABAC,您需要做两件事: 在模型匹配器中指定属性。将元素的结构或类实例作为Casbin的Enforce() 的参数传入。WARNING 目前,仅有形如r.sub, r.obj, r.act 等请求元素支持ABAC。 您不能在policy元素上使用它,比如p.sub,因为在Casbin的policy中没有定义结构或者类。您可以在匹配器中使用多个ABAC属性,例如:m = r.sub.Domain == r.obj.Domain。::: 适配复杂且大量的ABAC规则上述ABAC实施实例的核心非常简单。 但授权系统通常需要非常复杂和大量的ABAC规则。 为了满足这一需要上述实现将在很大程度上增加模型的详细程度。 因此,通过在策略中添加规则代替模型中添加规则是明智的。 这是通过引入一个 eval() 功能结构完成的。 下面是管理此类ABAC模型的示例实例。 这是用于定义ABAC模型的 CONF 文件的定义。 [request_definition] r = sub, obj, act [policy_definition] p = sub_rule, obj, act [policy_effect] e = some(where (p.eft == allow)) [matchers] m = eval(p.sub_rule) && r.obj == p.obj && r.act == p.act在这里, p.sub_rule 是由策略中使用的必要属性组成的结构类型或类类型(用户定义类型)。 这是针对Enforcement模型使用的策略 现在您就可以使用作为参数传递到 eval()函数的对象实例来定义某些ABAC约束条件。 p, r.sub.Age > 18, /data1, read p, r.sub.Age < 60, /data2, write最后编辑: kuteng 文档更新时间: 2021-06-22 19:03 作者:kuteng |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |