亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

RBAC:權(quán)限模型的初步理解

2shou / 2633人閱讀

摘要:近來部門接到一個外包項目,是基于現(xiàn)有的系統(tǒng)做一個知識文檔庫,類似于百度網(wǎng)盤一樣的功能,只是在角色和權(quán)限上與網(wǎng)盤不同,這個項目我們部門稱為,,難點就在于文件的權(quán)限管理。

??近來部門接到一個外包項目,是基于現(xiàn)有的系統(tǒng)做一個知識文檔庫,類似于百度網(wǎng)盤一樣的功能,只是在角色和權(quán)限上與網(wǎng)盤不同,這個項目我們部門稱為KM,Knowledge Manager ,難點就在于文件的權(quán)限管理。

??以下是與權(quán)限相關(guān)的一些功能點:

KM 有五類角色:KM 企業(yè)管理員, KM 部門管理員 ,KM團隊管理員 ,KM團隊成員 , KM成員,權(quán)限依次遞減

KM 有三個實體 : 網(wǎng)盤、文件夾、文件

KM 網(wǎng)盤的類型有:部門網(wǎng)盤,團隊網(wǎng)盤,個人網(wǎng)盤

KM 文件夾的操作:創(chuàng)建、修改、刪除、移動、分享、授權(quán)

KM 文件的操作:創(chuàng)建、修改、刪除、移動、分享、授權(quán)

歸根到底有兩點:

不同角色對不同實體的操作有不一樣的權(quán)限

高級別的角色可以改變低級別的角色對指定實體的操作權(quán)限

??我自己出來工作已經(jīng)兩年,計劃五年內(nèi)成為一名架構(gòu)師,雖然這次不需要我對系統(tǒng)進行設(shè)計,但是我肯定不會放棄這次機會,在上級出方案之前,我足足把需求文檔看了四遍,去想如何才能設(shè)計一個好的架構(gòu)進行開發(fā),不過,最后的結(jié)果還是打擊到我了,實在沒想到還有如此簡單的方法。全文分解為兩部分:

我自己的設(shè)計:策略模式

上級的設(shè)計:RBAC權(quán)限模型

策略模式

??開始的想法是,架構(gòu)必然和設(shè)計模式有關(guān),考慮到實體執(zhí)行的操作類型如上文所說基本有六種操作,結(jié)合五類角色,正好可以采用策略模式,基本的思路如下:

獲取用戶信息,基于不同網(wǎng)盤、文件夾、文件,實現(xiàn)對應(yīng)的角色

根據(jù)角色,判斷對應(yīng)的操作是否具相應(yīng)的權(quán)限

若不滿足權(quán)限,則查詢權(quán)限表,判斷高級角色是否授權(quán)

最終返回是否具備權(quán)限的數(shù)據(jù),以供前端進行響應(yīng)式回顯

??這就是我最開始的思路,其實想到這套方案,心里還是挺開心的,原因在于:

用到了策略模式,剛學(xué)就能用上

解耦,以后不同角色對不同實體的操作的維護難度大大降低

不需要頻繁的查詢數(shù)據(jù)庫,畢竟有一部分業(yè)務(wù)邏輯是不需要通過查詢數(shù)據(jù)庫的,類似于KM 企業(yè)管理員,權(quán)限最大,對任何實體都具備操作權(quán)限

??然而當(dāng)我把想法在早會上提出來時,上級告訴我說,現(xiàn)行有一種很成熟的權(quán)限模型:RBAC權(quán)限模型,他的設(shè)計能夠解決這個項目大部分的需求。方案不被采納固然有一點小失落,但是,我卻看到了一個很厲害的模型,足以讓我漲見識,以后遇到權(quán)限管理的時候,首先應(yīng)該想到RBAC模型,結(jié)合項目的需求,對模型進行擴展。

RBAC權(quán)限模型

基本概念

基于角色的權(quán)限訪問控制(Role-Based Access Control)

權(quán)限授權(quán)實際上是Who、What、How的關(guān)系,三者構(gòu)成了訪問權(quán)限三元組,也就是“Who對What(Which)進行How的操作

支持三個著名的安全原則

最小權(quán)限原則

責(zé)任分離原則

數(shù)據(jù)抽象原則

類圖

數(shù)據(jù)庫表:

個人理解

通過給角色授權(quán),然后將附有權(quán)利的角色施加到某個用戶身上,這樣用戶就可以實施相應(yīng)的權(quán)利

通過中間角色的身份,是權(quán)限管理更加靈活:角色的權(quán)利可以靈活改變,用戶的角色的身份可以隨著場所的不同而發(fā)生改變

這樣這套RBAC就幾乎可以運用到所有的權(quán)限管理的模塊上

??RBAC在使用的過程,被不斷地改進,進一步研發(fā)出更成熟的模型,以下的模型則是基于基本模型進行擴展:

RBAC1 :基于RBAC0模型,進行了角色的分層,也就是說角色上有了上下級的區(qū)別,存在了繼承包含關(guān)系,也就是前邊說過的適合于用樹展現(xiàn)的哪種自關(guān)聯(lián)的結(jié)構(gòu),這種模型合適于層次明確,包含明確的角色關(guān)系

類圖

RBAC2 :基于RBAC0模型的基礎(chǔ)上,進行了角色的訪問控制。

RBAC2中的一個基本限制時互斥角色的限制,互斥角色是指各自權(quán)限互相制約的兩個角色,對于這類角色一個用戶在某一次活動中只能被分配其中的一個角色,不能同時獲得兩個角色的使用權(quán)

角色的權(quán)利權(quán)利是有限的,用戶有用的角色也是有限的,當(dāng)然分配用戶時也是有限的,不能進行無限制的分配用戶

要想獲得較高的權(quán)限,要首先擁有低一級的權(quán)限

類圖

RBAC3 : 最全面級的權(quán)限管理,基于RBAC0的基礎(chǔ)上,將RBAC1和RBAC2進行整合了,最全面,也最復(fù)雜

類圖

??任何的權(quán)限控制都可以基于 RBAC權(quán)限 進行擴展和實現(xiàn),成熟的開發(fā)模型就能為開發(fā)者帶來足夠的便利,也很佩服勤勞、勇敢、智慧的工程師,能夠設(shè)計出如此出彩的模型。
??這次也深刻地意識到自己知識面的不足,自己閉門造車肯定會與這個社會脫節(jié),與此同時,學(xué)習(xí)速度太慢,不會使用搜索引擎去找答案,也會被這個社會淘汰。謹(jǐn)記。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/67456.html

相關(guān)文章

  • RBAC-基于角色權(quán)限管理

    摘要:基于角色的權(quán)限管理權(quán)限管理,基于角色的訪問控制,就是用戶通過角色與權(quán)限進行關(guān)聯(lián)。這樣,就構(gòu)造成用戶角色權(quán)限的授權(quán)模型。角色可以理解為一定數(shù)量的權(quán)限的集合,權(quán)限的載體。版主可管理版內(nèi)的帖子可管理版內(nèi)的用戶等,這些是權(quán)限。 RBAC-基于角色的權(quán)限管理 RBAC權(quán)限管理 RBAC(Role-Based Access Control,基于角色的訪問控制),就是用戶通過角色與權(quán)限進行關(guān)聯(lián)。簡...

    dingding199389 評論0 收藏0
  • 途牛原創(chuàng)|大話權(quán)限中心PHP架構(gòu)之道

    摘要:權(quán)限中心的依賴聲明聲明依賴關(guān)系檢查代碼規(guī)范聲明開發(fā)依賴命名空間檢查代碼規(guī)范,執(zhí)行單元測試。單元測試持續(xù)交付一切都如此的完美,沒有測試,又如何可以證明這件事情的完美,又如何可以保障交付的質(zhì)量。 序 權(quán)限管理是無線運營系統(tǒng)中的核心模塊,通過訪問控制策略的配置,來約定人與資源的訪問關(guān)系。 本文著重講解如何通過PHP來構(gòu)建一個靈活、通用、安全的權(quán)限管理系統(tǒng)。 關(guān)于權(quán)限 首先我們來聊聊權(quán)限。 權(quán)...

    miracledan 評論0 收藏0
  • MySQL —— 簡單聊一聊數(shù)據(jù)庫設(shè)計

    摘要:數(shù)據(jù)庫設(shè)計的三大范式確保每列的原子性如果每列都是不可再分的最小單元信息,則滿足第一范式,比如下圖中,地址是由國家和城市組成的,顯然可以繼續(xù)在拆分成兩個列,國家和城市,是不滿足第一范式的,需要將地址列差分成國家和城市兩個列。 showImg(https://segmentfault.com/img/remote/1460000018997429?w=1100&h=546); 閱讀原文 ...

    dingding199389 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<