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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

访问控制模型(DAC,MAC,RBAC,ABAC)

發(fā)布時(shí)間:2024/3/12 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 访问控制模型(DAC,MAC,RBAC,ABAC) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

訪問(wèn)控制模型

項(xiàng)目中需要加入訪問(wèn)控制,對(duì)訪問(wèn)控制模型做了一些調(diào)研, 本文主要是介紹一些常用的訪問(wèn)控制模型。

基本要素

訪問(wèn)控制模型包括三個(gè)要素,即:

  • 主體(Subject) 指主動(dòng)對(duì)其它實(shí)體施加動(dòng)作的實(shí)體

  • 客體(Object) 是被動(dòng)接受其他實(shí)體訪問(wèn)的實(shí)體

  • 控制策略(Policy)為主體對(duì)客體的操作行為和約束條件

安全策略

主體、客體,控制策略三者需要滿(mǎn)足的基本安全策略:

  • 最小特權(quán)原則:給主體分配權(quán)限時(shí)要遵循權(quán)限最小化原則,最小特權(quán)原則的優(yōu)點(diǎn)是最大限度地限制了主體實(shí)施授權(quán)行為,可以避免來(lái)自突發(fā)事件、錯(cuò)誤和未授權(quán)用主體的危險(xiǎn)。

  • 最小泄漏原則:它是指主體執(zhí)行任務(wù)時(shí),按照主體所需要知道的信息最小化的原則分配給主體權(quán)利。也就是要保護(hù)敏感信息不要被無(wú)關(guān)人員知道,別人知道得越少越好。

  • 多級(jí)安全策略:多級(jí)安全策略是指主體和客體間的數(shù)據(jù)流向和權(quán)限控制按照安全級(jí)別的絕密(TS)、秘密(S)、機(jī)密(C)、限制(RS)和無(wú)級(jí)別(U)五級(jí)來(lái)劃分。多級(jí)安全策略的優(yōu)點(diǎn)是避免敏感信息的擴(kuò)散,只有安全級(jí)別比他高的主體才能夠訪問(wèn)。

發(fā)展

1985年美國(guó)軍方提出可信計(jì)算機(jī)系統(tǒng)評(píng)估準(zhǔn)則TCSE,描述了兩種著名的訪問(wèn)控制策略,自主訪問(wèn)控制模型(DAC)和強(qiáng)制訪問(wèn)控制模型(MAC)。基于角色的訪問(wèn)控制模型(RBAC)在1992年被提出。基于屬性的訪問(wèn)控制模型(ABAC)則被認(rèn)為是訪問(wèn)控制模型的未來(lái)。

自主訪問(wèn)控制模型(DAC)

自主訪問(wèn)控制模型(DAC,Discretionary Access Control)是根據(jù)自主訪問(wèn)控制策略建立的一種模型,允許合法用戶(hù)以用戶(hù)或用戶(hù)組的身份訪問(wèn)策略規(guī)定的客體,同時(shí)阻止非授權(quán)用戶(hù)訪問(wèn)客體。擁有客體權(quán)限的用戶(hù),可以將該客體的權(quán)限分配給其他用戶(hù)。例如沒(méi)有文件File1訪問(wèn)權(quán)限的用戶(hù)可以從有訪問(wèn)權(quán)限的B用戶(hù)那里得到訪問(wèn)權(quán)限。

DAC訪問(wèn)控制的實(shí)現(xiàn)

權(quán)限控制列表(ACL)

訪問(wèn)控制列表(ACL, Access Control List),每一個(gè)客體都配有一個(gè)列表,這個(gè)列表記錄了主體對(duì)客體進(jìn)行何種操作。當(dāng)系統(tǒng)試圖訪問(wèn)客體時(shí),先檢查這個(gè)列表中是否有關(guān)于當(dāng)前用戶(hù)的訪問(wèn)權(quán)限。ACL是一種面向資源的訪問(wèn)控制模型,它的機(jī)制是圍繞資源展開(kāi)的。

對(duì)于一個(gè)文件對(duì)象的ACL:

  • Alice: read,write
  • Bob: read

表示Alice可以對(duì)該文件進(jìn)行讀寫(xiě)操作,Bob只能讀取。

權(quán)限控制矩陣(ACM)

訪問(wèn)控制矩陣(ACM,Access Control Matrix)是通過(guò)矩陣形式描述主體和客體之間的權(quán)限分配關(guān)系。每個(gè)主體而言,都擁有對(duì)哪些客體的哪些訪問(wèn)權(quán)限;而對(duì)客體而言,又有哪些主體對(duì)他可以實(shí)施訪問(wèn);

Asset 1 Asset 2 File Device Role 1 Role 2
read, write, execute, own execute read write
read read, write, execute, own

DAC應(yīng)用場(chǎng)景

DAC常見(jiàn)于文件系統(tǒng),LINUX,UNIX、WindowsNT版本的操作系統(tǒng)都提供DAC的支持。在實(shí)現(xiàn)上,先對(duì)用戶(hù)鑒權(quán),然后根據(jù)控制列表決定用戶(hù)能否訪問(wèn)資源。用戶(hù)控制權(quán)限的修改通常由特權(quán)用戶(hù)或者管理員組實(shí)現(xiàn)。DAC最大缺陷就是對(duì)權(quán)限控制比較分散,比如無(wú)法簡(jiǎn)單地將一組文件設(shè)置統(tǒng)一的權(quán)限開(kāi)放給指定的一群用戶(hù)。主體的權(quán)限太大,無(wú)意間就可能泄露信息。

強(qiáng)制訪問(wèn)控制模型(MAC)

強(qiáng)制訪問(wèn)控制模型(MAC, Mandatory Access Control),是為了彌補(bǔ)DAC權(quán)限控制過(guò)于分散的問(wèn)題而誕生的。

  • Subject被賦予一定的安全級(jí)別
  • Object被賦予一定的安全級(jí)別
  • Subject能否訪問(wèn)Object由雙方的關(guān)系安全級(jí)別決定,這個(gè)判斷通常有系統(tǒng)硬性限制

MAC非常適合機(jī)密機(jī)構(gòu)或者其他等級(jí)觀念強(qiáng)烈的行業(yè),過(guò)重強(qiáng)調(diào)保密性,管理不夠靈活。在實(shí)現(xiàn)上,MAC和DAC通常為每個(gè)用戶(hù)賦予對(duì)客體的訪問(wèn)權(quán)限規(guī)則集,考慮到管理的方便,在這一過(guò)程中還經(jīng)常將具有相同職能的用戶(hù)聚為組,然后再為每個(gè)組分配許可權(quán)。

基于角色的訪問(wèn)控制(RBAC)

基于角色的訪問(wèn)控制(RBAC, Role Based Access Control)在用戶(hù)和權(quán)限之間引入了“角色(Role)”的概念,角色解耦了用戶(hù)和權(quán)限之間的關(guān)系。
角色和組的主要區(qū)別:

  • 組是用戶(hù)的集合
  • 角色是權(quán)限的集合
  • 角色/權(quán)限之間的變化比組/用戶(hù)關(guān)系之間的變化相對(duì)要慢得多,減小了授權(quán)管理的復(fù)雜性

RBAC0

RBAC0作為基礎(chǔ)模型,只包含核心的三要素,用戶(hù),角色,權(quán)限。用戶(hù)和角色可以是多對(duì)多的關(guān)系,權(quán)限和角色也是多對(duì)多的關(guān)系。

RBAC1

RBAC1包括了RBAC0并且添加了角色繼承。顧名思義,角色繼承就是指角色可以繼承于其他角色,在擁有其他角色權(quán)限的同時(shí),自己還可以關(guān)聯(lián)額外的權(quán)限。這種設(shè)計(jì)可以給角色分組和分層,一定程度簡(jiǎn)化了權(quán)限管理工作。也就是角色之間存在上下級(jí)的關(guān)系,對(duì)應(yīng)到實(shí)體設(shè)計(jì)中也就是角色實(shí)體的自身關(guān)聯(lián)。

RBAC2

RBAC2也包括RBAC0并且添加了約束。RBAC1和RBAC2相互獨(dú)立.
RBAC2的約束規(guī)定了權(quán)限被賦予角色時(shí),或角色被賦予用戶(hù)時(shí),以及當(dāng)用戶(hù)在某一時(shí)刻激活一個(gè)角色時(shí)所應(yīng)遵循的強(qiáng)制性規(guī)則。

  • 互斥約束:包括互斥用戶(hù),互斥角色,互斥權(quán)限。同一個(gè)用戶(hù)不能擁有相互排斥的角色,兩個(gè)互斥角色不能分配一樣的權(quán)限集,互斥的權(quán)限不能分配給同一個(gè)角色,在session中,同一個(gè)角色不能擁有互斥權(quán)限。
  • 基數(shù)約束:一個(gè)角色被分配的用戶(hù)數(shù)量受限,它指的是有多少用戶(hù)能擁有這個(gè)角色。例如:一個(gè)角色專(zhuān)門(mén)為公司CEO創(chuàng)建的,那這個(gè)角色的數(shù)量是有限的。
  • 先決條件角色:指要想獲得較高的權(quán)限,要首先擁有低一級(jí)的權(quán)限。例如:先有副總經(jīng)理權(quán)限,才能有總經(jīng)理權(quán)限。

RBAC3

RBAC3是一個(gè)全功能的RBAC,RBAC3合并了RBAC0,RBAC1,RBAC2.

基于屬性的訪問(wèn)控制(ABAC)

基于屬性的訪問(wèn)控制(ABAC, Attribute Based Access Control)通過(guò)動(dòng)態(tài)計(jì)算一個(gè)或一組屬性是否滿(mǎn)足某種條件來(lái)進(jìn)行授權(quán)判斷。可以按需實(shí)現(xiàn)不同顆粒度的權(quán)限控制,但定義權(quán)限時(shí)不易看出用戶(hù)和對(duì)象間的關(guān)系。如果規(guī)則復(fù)雜,容易給管理者帶來(lái)維護(hù)和追查帶來(lái)麻煩。

屬性通常來(lái)說(shuō)分為四類(lèi):

  • 用戶(hù)屬性(如用戶(hù)年齡)
  • 環(huán)境屬性(如當(dāng)前時(shí)間)
  • 操作屬性(如讀取)
  • 對(duì)象屬性(如一篇文章,又稱(chēng)資源屬性)

跟RBAC相比,ABAC對(duì)權(quán)限的控制粒度更細(xì),如控制用戶(hù)的訪問(wèn)速率。實(shí)際開(kāi)發(fā)中可以結(jié)合RBAC角色管理的優(yōu)點(diǎn)和ABAC的靈活性一起使用。

用ABAC控制訪問(wèn)速率

執(zhí)行代碼 package mainimport ("fmt""strconv""github.com/casbin/casbin""github.com/casbin/casbin/model" )type Request struct {Subject stringObject stringAction stringCount int }func (r Request) IsBelow(limit string) bool {a, err := strconv.Atoi(limit)if err != nil {return false}fmt.Printf("%d < %d %v\n", r.Count, a, r.Count < a)return r.Count < a }func main() {const modelText = ` [request_definition] r = sub, obj, act, count [policy_definition] p = sub, obj, act, limit [policy_effect] e = some(where (p.eft == allow)) [matchers] m = r.sub==p.sub && r.obj==p.obj && r.act==p.act && r.count.IsBelow(p.limit) `m := model.Model{}m.LoadModelFromText(modelText)e, _ := casbin.NewEnforcer(m)// 添加策略// 限制john訪問(wèn)http_api的次數(shù)在500次以下e.AddPolicy("john", "http_api", "visit", "500")// john當(dāng)前訪問(wèn)http_api的次數(shù)為90次request := Request{Subject: "john",Object: "http_api",Action: "visit",Count: 90}pass, err := e.Enforce(request.Subject, request.Object, request.Action, request)fmt.Println(pass, err) }

相關(guān)連接

  • https://casbin.org/docs/en/overview
  • https://en.wikipedia.org/wiki/Access_control
  • http://www2.imm.dtu.dk/courses/02230/AdvancedAccessControl.pdf

總結(jié)

以上是生活随笔為你收集整理的访问控制模型(DAC,MAC,RBAC,ABAC)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。