支持MACRBACABAC多種模型的Golang訪問控制框架 – casbin
casbin
casbin是一個用Go語言打造的輕量級開源訪問控制框架(https://github.com/hsluoyz/casbin),目前在GitHub開源。casbin採用了元模型的設計思想,支持多種經典的訪問控制方案,如基於角色的訪問控制RBAC、基於屬性的訪問控制ABAC等。
casbin的主要特性
支持自定義請求的格式,默認的請求格式為{subject, object, action};
具有訪問控制模型model和策略policy兩個核心概念;
支持RBAC中的多層角色繼承,不止主體可以有角色,資源也可以具有角色;
支持超級用戶,如root或Administrator,超級用戶可以不受授權策略的約束訪問任意資源;
支持多種內置的操作符,如keyMatch,方便對路徑式的資源進行管理,如/foo/bar可以映射到/foo*;
casbin不做的事情
身份認證authentication(即驗證用戶的用戶名、密碼),casbin只負責訪問控制。應該有其他專門的組件負責身份認證,然後由casbin進行訪問控制,二者是相互配合的關係;
管理用戶列表或角色列表。casbin認為由項目自身來管理用戶、角色列表更為合適,casbin假設所有策略和請求中出現的用戶、角色、資源都是合法有效的。
安裝
go get github.com/hsluoyz/casbin
HelloWorld例子
初始化一個enforcer,傳入兩個參數:模型文件路徑和策略文件路徑
e := &Enforcer{}
e.Init("examples/basic_model.conf", "examples/basic_policy.csv")
在你的代碼需要進行訪問控制的位置,加入如下鉤子;
sub := "alice"
obj := "data1"
act := "read"
if e.Enforce(sub, obj, act) == true {
// permit alice to read data1 } else {
// deny the request, show an error }
採用管理API進行許可權的管理,如獲取一個用戶所有的角色;
roles := e.GetRoles("alice")
請參考_test.go測試文件獲得更多的使用方法。
社區進展
casbin目前正在積極向社區進行推送,已經聯繫的社區包括etcd、tango,將來有可能推送到docker社區。
協議
casbin採用Apache 2.0開源協議發布。
聯繫作者
有問題請提交Issues: https://github.com/hsluoyz/casbin/issues,或者聯繫我QQ: 515964173
*本文作者:hsluoyz,轉載請註明來自FreeBuf.com。
※美國在安全教育方面是怎麼做的,還有什麼地方需要改進?
※防火防盜防間諜:走近中國「反間諜」手段
※Hacking Tools搜羅大集合
TAG:FreeBuf |
※Digi-Key 提供對 Ultra Librarian EDA /CAD 模型的無限制訪問
※LEGO 發布 James Bond? Aston Martin DB5 跑車積木模型
※TensorFlow 的模型分析工具——TFMA
※Azuma Makoto 創作 SHIKI Model Kit 「式」花藝模型
※Bandai 宣布再度販售 Metal Build EVA 初號機玩具模型
※Solidworks eDrawings開始支持VR模式查看CAD模型
※BANDAI White Base 白色木馬 | 科幻模型
※Chrome 66 新特性:CSS 類型對象模型,非同步剪貼板 API,AudioWorklet,等
※Capture用iPhone深度攝像頭為AR/VR掃描3D模型
※Mac上訓練機器學習模型,蘋果WWDC發布全新Create ML、Core ML 2
※Arvizio發布MR Studio 4.0,支持HoloLens、Magic Leap與點雲、攝影測量模型進行交互
※Metal Build EVA 初號機模型再度販售
※在Mac上訓練機器學習模型,蘋果WWDC發布全新Create ML、Core ML 2
※LEGO 預告即將推出 James Bond 御用 Aston Martin 跑車積木模型
※Nat Biotechnol:研究人員開發新的機器學習模型預測CRISPR-Cas9編輯人原代T細胞的結果
※Google推出AI晶元Edge TPU,可在邊緣運行TensorFlow Lite機器學習模型
※Meta新增SOLIDWORKS集成,支持AR瀏覽CAD模型
※CIKM AnalytiCup 2018冠軍方案出爐,看他們構造模型的訣竅
※將 TensorFlow 訓練好的模型遷移到 Android APP上
※IBM CodePattern可創建自己的AI模型來識別對象