国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

RBAC權限模型,就該這么設計!

開發 前端
本文從易到難非常詳細的介紹了權限模型的設計,在工作中需要根據實際情況來定義模型,千人以內的公司使用RBAC模型是完全夠用的,沒有必要吧權限模型設計的過于復雜。模型的選擇要根據具體情況,比如公司體量、業務類型、人員數量等。

1、為什么需要權限管理

日常工作中權限的問題時時刻刻伴隨著我們,程序員新入職一家公司需要找人開通各種權限,比如網絡連接的權限、編碼下載提交的權限、監控平臺登錄的權限、運營平臺查數據的權限等等。

在很多時候我們會覺得這么多繁雜的申請給工作帶來不便,并且如果突然想要查一些數據,發現沒有申請過權限,需要再走審批流程,時間拉得會很長。那為什么還需要這么嚴格的權限管理呢?

舉個例子,一家支付公司有運營后臺,運營后臺可以查到所有的商戶信息,法人代表信息,交易信息以及費率配置信息,如果我們把這些信息不加篩選都給到公司的每一個小伙伴,那么跑市場的都可以操作商家的費率信息,如果一個不小心把費率改了會造成巨大的損失。

又比如商戶的信息都是非常隱秘的,有些居心不良的小伙伴把這些信息拿出來賣給商家的競爭對手,會給商家造成嚴重的不良后果。雖然這么做都是個別人人為的過錯,但是制度上如果本身這些信息不開放出來就能在很大程度上避免違法亂紀的事情發生了。

總體來講權限管理是公司數據安全的重要保證,針對不同的崗位,不同的級別看到的數據是不一樣的,操作數據的限制也是不一樣的。比如涉及到資金的信息只開放給財務的相關崗位,涉及到配置的信息只開放給運營的相關崗位,這樣各司其職能避免很多不必要的安全問題。

如何讓各個崗位的人在系統上各司其職,就是權限管理要解決的問題。

2、權限模型

(1)權限設計

從業務分類上來講權限可以分為數據查看權限,數據修改權限等,對應到系統設計中有頁面權限、菜單權限、按鈕權限等。菜單也分一級菜單、二級菜單甚至三級菜單,以csdn文章編輯頁面左側菜單欄為例是分了兩級菜單。菜單對應的頁面里又有很多按鈕,我們在設計的時候最好把權限設計成樹形結構,這樣在申請權限的時候就可以一目了然的看到菜單的結構,需要哪些權限就非常的明了了。

如下圖所示:

圖片圖片

按照這個架構,按鈕的父級是二級菜單,二級菜單的父級是一級菜單,這樣用戶申請權限的時候非常清晰的看到自己需要哪些權限。

(2)為什么需要角色

權限結構梳理清晰之后,需要思考怎么把權限分配給用戶,用戶少的情況下,可以直接分配,一個用戶可以有多個權限,統一一個權限可以被多個用戶擁有,用戶-權限的模型結構如下所示:

這種模型能夠滿足權限的基本分配能力,但是隨著用戶數量的增長,這種模型的弊端就凸顯出來了,每一個用戶都需要去分配權限,非常的浪費管理員的時間和精力,并且用戶和權限雜亂的對應關系會給后期帶來巨大的維護成本。用戶-權限對應關系圖:

圖片圖片

這種對應關系在用戶多的情況下基本無法維護了。其實很多用戶負責同一個業務模塊所需要的權限是一樣的,這樣的話我們是不是可以借助第三個媒介,把需要相同的權限都分配給這個媒介,然后用戶和媒介關聯起來,用戶就擁有了媒介的權限了。這就是經典的RBAC模型,其中媒介就是我們通常所說的角色。

(3)權限模型的演進

RBAC模型

有了角色之后可以把權限分配給角色,需要相同權限的用戶和角色對應起來就可以了,一個權限可以分配給多個角色,一個角色可以擁有多個權限,同樣一個用戶可以分配多個角色,一個角色也可以對應多個用戶,對應模型如下所示:

這就是經典的RBAC模型了(role-based-access-control),在這里面角色起到了橋梁左右,連接了用戶和權限的關系,每個角色可以擁有多個權限,每個用戶可以分配多個角色,這樣用戶就擁有了多個角色的多個權限。

同時因為有角色作為媒介,大大降低了錯綜復雜的交互關系,比如一家有上萬人的公司,角色可能只需要幾百個就搞定了,因為很多用戶需要的權限是一樣的,分配一樣的角色就可以了。這種模型的對應關系圖如下所示:

用戶和角色,角色和權限都是多對多的關系,這種模型是最通用的權限管理模型,節省了很大的權限維護成本, 但是實際的業務千變萬化,權限管理的模型也需要根據不同的業務模型適當的調整,比如一個公司內部的組織架構是分層級的,層級越高權限越大,因為層級高的人不僅要擁有自己下屬擁有的權限,二期還要有一些額外的權限。

RBAC模型可以給不同層級的人分配不同的角色,層級高的對應角色的權限就多,這樣的處理方式可以解決問題,但是有沒有更好的解決辦法呢,答案肯定是有的,這就引出角色繼承的RBAC模型。

另外,如果你近期準備面試跳槽,建議在Java面試庫小程序在線刷題,涵蓋 2000+ 道 Java 面試題,幾乎覆蓋了所有主流技術面試題。

角色繼承的RBAC模型

角色繼承的RBAC模型又稱RBAC1模型。每個公司都有自己的組織架構,比如公司里管理財務的人員有財務總監、財務主管、出納員等,財務主管需要擁有但不限于出納員的權限,財務總監需要擁有但不限于財務主管的權限,像這種管理關系向下兼容的模式就需要用到角色繼承的RBAC模型。角色繼承的RBAC模型的思路是上層角色繼承下層角色的所有權限,并且可以額外擁有其他權限。

模型如下所示:

從模型圖中可以看出下級角色擁有的權限,上級角色都擁有,并且上級角色可以擁有其他的權限。角色的層級關系可以分為兩種,一種是下級角色只能擁有一個上級角色,但是上級角色可以擁有多個下級角色,這種結構用圖形表示是一個樹形結構,如下圖所示:

還有一種關系是下級角色可以擁有多個上級角色,上級角色也可以擁有多個下級角色,這種結構用圖形表示是一個有向無環圖,如下圖所示:

樹形圖是我們比較常用的,因為一個用戶一般情況下不會同時有多個直屬上級,比如財務部只能有一個財務總監,但是可以有多個財務主管和收納員。

帶約束的RBAC模型

帶約束的RBAC模型又成RBAC2模型。在實際工作中,為了安全的考慮會有很多約束條件,比如財務部里同一個人不能即是會計又是審核員,跟一個人同一時間不能即是運動員又是裁判員是一個道理的,又比如財務部的審核員不能超過2個,不能1個也沒有。因為角色和權限是關聯的,所以我們做好角色的約束就可以了。

常見的約束條件有:角色互斥、基數約束、先決條件約束等。

角色互斥: 如果角色A和角色B是互斥關系的話,那么一個用戶同一時間不能即擁有角色A,又擁有角色B,只能擁有其中的一個角色。

比如我們給一個用戶賦予了會計的角色就不能同時再賦予審核員的角色,如果想擁有審核員的角色就必須先去掉會計的角色。假設提交角色和審核角色是互質的,我們可以用圖形表示:

基數約束: 同一個角色被分配的用戶數量可以被限制,比如規定擁有超級管理員角色的用戶有且只有1個;用戶被分配的角色數量也需要被限制,角色被分配的權限數量也可以被限制。

先決條件約束:用戶想被賦予上級角色,首先需要擁有下級角色,比如技術負責人的角色和普通技術員工角色是上下級關系,那么用戶想要用戶技術負責人的角色就要先擁有普通技術員工的角色。

(4)用戶劃分

用戶組

我們創建角色是為了解決用戶數量大的情況下,用戶分配權限繁瑣以及用戶-權限關系維護成本高的問題。抽象出一個角色,把需要一起操作的權限分配給這個角色,把角色賦予用戶,用戶就擁有了角色上的權限,這樣避免了一個個的給用戶分配權限,節省了大量的資源。

同樣的如果有一批用戶需要相同的角色,我們也需要一個個的給用戶分配角色,比如一個公司的客服部門有500多個人,有一天研發部研發了一套查詢后臺數據的產品,客服的小伙伴都需要使用,但是客服由于之前并沒有統一的一個角色給到所有的客服小伙伴,這時候需要新加一個角色,把權限分配給該角色,然后再把角色一個個分配給客服人員,這時候會發現給500個用戶一個個添加角色非常的麻煩。但是客服人員又有共同的屬性,所以我們可以創建一個用戶組,所有的客服人員都屬于客服用戶組,把角色分配給客服用戶組,這個用戶組下面的所有用戶就擁有了需要的權限。

RBAC模型添加用戶組之后的模型圖如下所示:

很多朋友會問,用戶組和角色有什么區別呢?簡單的來說,用戶組是一群用戶的組合,而角色是用戶和權限之間的橋梁。 用戶組把相同屬性的用戶組合起來,比如同一個項目的開發、產品、測試可以是一個用戶組,同一個部門的相同職位的員工可以是一個用戶組, 一個用戶組可以是一個職級,可以是一個部門,可以是一起做事情的來自不同崗位的人。

用戶可以分組,權限也可以分組,權限特別多的情況下,可以把一個模塊的權限組合起來成為一個權限組,權限組也是解決權限和角色對應關系復雜的問題。

比如我們定義權限的時候一級菜單、二級菜單、按鈕都可以是權限,一個一級菜單下面有幾十個二級菜單,每個二級菜單下面又有幾十個按鈕,這時候我們把權限一個個分配給角色也是非常麻煩的,可以采用分組的方法把權限分組,然后把分好的組賦予角色就可以了。

給權限分組也是個技術活,需要理清楚權限之間的關系,比如支付的運營后臺我們需要查各種信息,賬務的數據、訂單的數據、商戶的數據等等,這些查詢的數據并不在一個頁面,每個頁面也有很多按鈕,我們可以把這幾個頁面以及按鈕對應的權限組合成一個權限組賦予角色。加入權限組之后的RBAC模型如下所示:

實際工作中我們很少給權限分組,給用戶分組的場景會多一些,有的時候用戶組也可以直接和權限關聯,這個看實際的業務場景是否需要,權限模型沒有統一的,業務越復雜業務模型會約多樣化。

組織

每個公司都有自己的組織架構,很多時候權限的分配可以根據組織架構來劃分。因為同一個組織內的小伙伴使用的大部分權限是一樣的。如下所示一個公司的組織架構圖:

按照這個組織架構,每一個組織里的成員使用的基礎權限很可能是一樣的,比如人力資源都需要看到人才招聘的相關信息,市場推廣都需要看到行業分析的相關信息,按照組織來分配角色會有很多優勢:

實現權限分配的自動化: 和組織關系打通之后,按照組織來分配角色,如果有新入職的用戶,被劃分在某個組織下面之后,會自動獲取該組織下所有的權限,無需人工分配。又比如有用戶調崗,只需要把組織關系調整就可以了,權限會跟著組織關系自動調整,也無需人工干預。這么做首先需要把權限和組織關系打通。

控制數據權限: 把角色關聯到組織,組織里的成員只能看到本組織下的數據,比如市場推廣和大客定制,市場推廣針對的是零散的客戶,大可定制針對的是有一定體量的客戶,相互的數據雖然在一個平臺,但是只能看自己組織下的數據。

加入組織之后的RBAC模型如下所示:

用戶可以在多個組織中,因為組織也有層級結構,一個組織里只可以有多個用戶,所以用戶和組織的關系是多對多的關系,組織和角色的關系是一對一的關系。這個在工作中可以根據實際情況來確定對應關系。

職位

一個組織下面會有很多職位,比如財務管理會有財務總監、財務主管、會計、出納員等職位,每個職位需要的權限是不一樣的,可以像組織那樣根據職位來分配不同的角色,由于一個人的職位是固定的,所以用戶跟職位的對應關系時一對一的關系,職位跟角色的對應關系可以是多對多的關系。加入職位的RBAC模型如下所示:

(5)理想的RBAC模型

RBAC模型根據不同業務場景的需要會有很多種演變,實際工作中業務是非常復雜的,權限分配也是非常復雜的,想要做出通用且高效的模型很困難。我們把RBAC模型的演變匯總起來會是一個支撐大數據量以及復雜業務的理想的模型。把RBAC、RBAC1、RBAC2、用戶組、組織、職位匯總起來的模型如下所示:

按照這個模型基本上能夠解決所有的權限問題,其中的對應關系可以根據實際的業務情況來確定,一般情況下,組織和職位是一對多的關系,特殊情況下可以有多對多的情況,需要根據實際情況來定。

理想的RBAC模型并不是說我們一開始建權限模型就可以這么做,而是數據體量、業務復雜度達到一定程度之后可以使用這個模型來解決權限的問題,如果數據量特別少,比如剛成立的公司只有十幾個人,那完全可以用用戶-權限模型,都沒有必要使用RBAC模型。

3、權限系統表設計

(1)標準RBAC模型表設計

標準RBAC模型的表是比較簡單了,要表示用戶-角色-權限三者之前的關系,首先要創建用戶表、角色表、權限表,用戶和角色是多對多的關系,角色和權限是多對多的關系,需要再創建兩章關系表,分別是用戶-角色關系表和角色-權限關系表。這六張表的ER圖如下所示:

(2)理想RBAC模型表設計

理想的RBAC模型是標準RBAC模型經過多次擴展得到的,表結構也會比較復雜,因為要維護很多關系,如下圖所示是理想的RBAC模型的ER圖:

這里面需要強調的是角色互斥表,互斥的關系可以放在角色上,也可以放在權限上,看實際工作的需求。

4、結語

本文從易到難非常詳細的介紹了權限模型的設計,在工作中需要根據實際情況來定義模型,千人以內的公司使用RBAC模型是完全夠用的,沒有必要吧權限模型設計的過于復雜。模型的選擇要根據具體情況,比如公司體量、業務類型、人員數量等。

總之最適合自己公司的模型就是最好的模型,權限模式和設計模式是一樣的,都是為了更好的解決問題,不要為了使用模型而使用模型。

責任編輯:姜華 來源: 碼農參上
相關推薦

2025-04-15 02:25:00

2022-07-18 08:39:18

ACL訪問控制機制

2025-02-03 08:16:56

2021-03-01 09:29:55

數據權限模型

2023-06-27 08:58:03

2017-10-31 15:40:36

Linux學習步驟

2025-06-30 01:33:00

2020-04-03 17:32:11

戴爾

2022-02-16 23:58:41

Spring過濾器驗證碼

2024-10-23 08:45:07

ACLABACRBAC

2022-01-07 07:29:08

Rbac權限模型

2024-09-18 00:03:00

項目OpenAI前端

2016-01-05 13:44:39

2024-09-09 00:02:00

2024-10-17 09:14:24

RBAC模型管理

2022-12-05 09:08:12

微服務灰度發布

2022-12-14 09:06:58

接口Spring解密

2024-02-23 08:08:21

2024-02-19 00:00:00

后管系統權限

2022-07-05 09:38:47

模型RBACABAC
點贊
收藏

51CTO技術棧公眾號

亚洲影院在线| 蜜桃视频一区| 亚洲成成品网站| 日日躁夜夜躁人人揉av五月天| 国产精品外国| 91成人免费看| 色999国产精品| 国产不卡av在线| 91蜜桃臀久久一区二区| 亚洲色图av在线| 免费电影网站在线视频观看福利| 一本一道综合狠狠老| 黄色免费影视| 亚洲精品五月天| 国产美女玉足交| 亚洲欧美激情一区二区| caoporn超碰国产公开| 国产精品久久777777| 国产一区亚洲二区三区| 26uuu亚洲综合色| 97xxxxx| 国产欧美日韩综合| 国产真实生活伦对白| 亚洲丝袜自拍清纯另类| 500福利第一精品导航| 午夜精品久久久久久久| 精品99又大又爽又硬少妇毛片| 欧洲国内综合视频| 国产在线看片| 亚洲国产黄色片| 亚洲成av在线| 午夜精品免费视频| 欧美亚洲国产激情| 91最新在线免费观看| 亚洲黄色视屏| 艳母动漫在线免费观看| 99在线精品一区二区三区| 熟妇人妻va精品中文字幕| 国产精品视频麻豆| 亚洲成人套图| 日韩一级大片在线观看| 欧美黑人一区| 97人洗澡人人免费公开视频碰碰碰| 台湾亚洲精品一区二区tv| 国产精品一区二区久久| 精品999日本| 99久re热视频精品98| 国产日韩欧美a| 四虎精品成人影院观看地址| 欧美精品v国产精品v日韩精品| 7777kkk亚洲综合欧美网站| 国产一区二区三区在线看| 国产精品一区二区三区美女| 亚洲资源在线看| 国产精选一区二区三区| 美女av电影| 欧美高清性hdvideosex| 亚洲香蕉久久| 97久久夜色精品国产九色| 日本不卡123| 97视频在线| 91精品国产色综合久久不卡电影| 四虎成人在线| 91香蕉嫩草影院入口| 国产精品一区二区91| 二区三区中文字幕| 在线成人免费观看| 日韩一区二区三区精品视频第3页| 成人精品一区二区三区电影免费| 麻豆极品一区二区三区| 丁香婷婷自拍| 亚洲免费av电影| 日韩在线视频精品| 欧美视频免费看欧美视频| 欧美日韩国产一中文字不卡| 日韩高清不卡| 国产亚洲精品美女久久久m| 99久久精品国产毛片| 粉嫩av在线播放| 欧美激情一区二区三级高清视频| 国产午夜精品一区二区三区欧美 | 日韩免费va| 国产精自产拍久久久久久| 黄色日韩网站视频| 欧美日韩影视| 欧美理论电影在线观看| 久久久国产精品一区二区中文| 国产黄视频网站| 国产一区二区日韩精品欧美精品| 夜间精品视频| 国产h色视频在线观看| 亚洲欧美国产精品久久久久久久| 亚洲人体av| 国产日韩欧美久久| 在线视频亚洲欧美| 99精品99| 亚洲精华国产精华| 精品国产一区二区三区久久狼黑人 | eeuss影院一区二区三区| 国产小视频在线| 97视频com| 波多野结衣视频一区| 美女隐私在线观看| 91网站在线看| 亚洲欧美日韩在线| 免费一级欧美在线大片| 天天做天天爱天天高潮| 在线观看免费成人| 经典一区二区| 99热免费观看| 久久影院资源网| 国产成人综合亚洲网站| av中文字幕在线播放| 91免费版黄色| 亚洲国产日日夜夜| 日韩av资源网| 色免费在线视频| 欧美精品在线免费观看| 老司机午夜精品99久久| 日本aa在线| 久久99精品国产99久久| 色婷婷av一区| 亚洲国产老妈| 水莓100在线视频| 日本亚洲欧洲色α| 欧美韩国日本不卡| 美女网站色精品尤物极品姐弟| 人妻少妇精品无码专区二区| 亚洲娇小xxxx欧美娇小| 欧美aaaaaa午夜精品| 欧洲中文在线| 精品免费日产一区一区三区免费| 欧美三级欧美一级| 国产日韩1区| v片在线观看| 一区二区三区视频| 一区国产精品视频| 91老师片黄在线观看| 亚洲成人偷拍| 黄色av观看| 97超碰资源| 日韩一级成人av| 国产一区二区剧情av在线| 亚洲黄色免费av| 少妇高潮毛片色欲ava片| 乱亲女秽乱长久久久| 欧美高清在线视频| re久久精品视频| 大片免费播放在线视频| 欧美亚州在线观看| 亚洲一二三在线| 国产精品入口麻豆原神| 成人嘿咻视频免费看| www.亚洲免费| 大桥未久一区二区三区| 日韩中文字幕第一页| 欧美国产精品一区| 亚洲乱码电影| av中文字幕在线看| 国产日产欧美视频| 国产精品一区二区电影| 欧美日韩三级一区二区| 久久99蜜桃精品| 成人高潮视频| www日韩tube| 黄网站欧美内射| 国产精品视频播放| 日韩免费看网站| 国产亚洲一本大道中文在线| 久久爱www成人| 99自拍视频在线观看| 成年人视频观看| 成人黄色av免费在线观看| 日韩一级大片在线观看| 99综合电影在线视频| 日韩1区在线| 国产精品电影| 成人黄色激情网站| 精品九九九九| 久久99热精品这里久久精品| 91久久人澡人人添人人爽欧美| 三级一区在线视频先锋| 亚洲二区av| 欧美日韩伦理片| 久艹在线免费观看| 亚洲xxxx视频| 美女久久久久久久久久久| 色悠悠亚洲一区二区| 成人美女在线观看| 欧美日本一区二区视频在线观看 | 激情综合在线观看| 亚洲综合在线小说| 最近2019中文字幕在线高清| 午夜精品aaa| 国产美女av一区二区三区| 不卡一区2区| 成人在线视频免费看| 欧洲亚洲精品视频| 热久久精品免费视频| 日韩在线导航|