日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ABAC权限控制学习

發布時間:2024/3/12 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 stringOwner 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权限控制学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。