20 許可權控制模式 ACL RBAC ABAC

2021-09-10 04:52:20 字數 1587 閱讀 8196

go casbin 許可權庫的使用

概述:

許可權訪問列表

實現原理:

給每個使用者指定相應的許可權。典型的用例為,微軟的檔案系統許可權

缺點:

對許可權的管理比較分散,無法集中管理。如無法一次性將某種許可權分給一群使用者,也無法一次性**。

概述:

基於角色的訪問控制

實現原理:

許可權的分配和**都是基於角色的,只有對於的角色有相應的許可權。使用者屬於一種或多種角色。

優點:

許可權的管理非常方便,許可權與只與角色相關,不與使用者產生直接的關聯。

概述:

基於屬性的許可權控制

實現原理:

abac 則是通過動態計算乙個或一組屬性來是否滿足某種條件來進行授權判斷(可以編寫簡單的邏輯)。屬性通常來說分為四類:使用者屬性(如使用者年齡),環境屬性(如當前時間),操作屬性(如讀取)和物件屬性(如一篇文章,又稱資源屬性),所以理論上能夠實現非常靈活的許可權控制,幾乎能滿足所有型別的需求。

例如規則:「允許所有班主任在上課時間自由進出校門」 這條規則,其中,「班主任」 是使用者的角色屬性,「上課時間」 是環境屬性,「進出」 是操作屬性,而 「校門」 就是物件屬性了。

缺點:

管理起來非常複雜且不直觀。

例項**:

model.conf

[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 || p.sub == "*") && keymatch(r.obj, p.obj) && (r.act == p.act || p.act == "*")

policy.csv

# 0: admin, 1: operator(運營), 9: guest(訪客)

p, 0, *, *

# swagger api docs

p, *, /swagger/*, get

p, *, *.ico, get

# allow all get method

p, *, *, get

# allow all role can login and update password

p, *, /user/login, post

p, *, /user/password, put

p, 1, /notice, post

p, 1, /notice/*, *

p, 1, /ops_ctl, put

oauth2 0許可權控制註解

requiresauthentication 驗證使用者是否登入,等同於方法subject.isauthenticated 結果為true時。requiresuser 驗證使用者是否被記憶,user有兩種含義 一種是成功登入的 subject.isauthenticated 結果為true 另外一種...

elk許可權控制 Kibana訪問許可權控制

elk平台搭建完成後,由於kibana的服務也是暴露在外網,且預設是沒有訪問限制的 外部所有人都可以訪問到 這明顯不是我們想要的,所以我們需要利用nginx接管所有kibana請求,通過nginx配置將kibana的訪問加上許可權控制,簡單常見的方式可以使用如下三種方式 方案一 利用nginx使用者...

spring 許可權控制

首先第一件事情是你需要增加下面的過濾器宣告到你的web.xml 檔案 springsecurityfilterchain org.springframework.web.filter.delegatingfilterproxy springsecurityfilterchain 這提供了乙個鉤子到s...