<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          RBAC 模型 - 權(quán)限系統(tǒng)是如何進(jìn)行架構(gòu)設(shè)計(jì)的?

          共 2451字,需瀏覽 5分鐘

           ·

          2021-05-31 13:20

          肖新宇,微醫(yī)云服務(wù)團(tuán)隊(duì)前端工程師。喜歡游泳???♀?,健身。

          大家在平時(shí)使用網(wǎng)頁(yè)的時(shí)候,遇到和權(quán)限相關(guān)的場(chǎng)景應(yīng)該很多,比如視頻網(wǎng)站的會(huì)員視頻,管理后臺(tái)的訪(fǎng)問(wèn)控制,那么,本文將帶大家了解一下,權(quán)限系統(tǒng)的通用設(shè)計(jì)模型理念,和如何設(shè)計(jì)一個(gè)簡(jiǎn)易的權(quán)限系統(tǒng)。

          首先請(qǐng)大家思考??個(gè)問(wèn)題,我們?yōu)槭裁葱枰獧?quán)限系統(tǒng)?

          …思考 10s
          …思考 30s
          …思考 50s

          思考時(shí)間到了,我們來(lái)說(shuō)下為什么需要權(quán)限系統(tǒng)??。

          大家可以看看我們平時(shí)使用的各種系統(tǒng),不同的身份的人,在同一個(gè)場(chǎng)景下面所需要的功能是不一樣的,比如我們的掛號(hào)網(wǎng),患者登錄進(jìn)去需要看到的是掛號(hào)流程,醫(yī)生登錄進(jìn)去需要的是看到待接診的患者。這時(shí)就需要涉及到角色權(quán)限功能的分配。

          接下來(lái)給大家介紹 RBAC 模型和權(quán)限系統(tǒng)的設(shè)計(jì)

          一、什么是 RBAC 模型

          RBAC(Role-Based Access Control)即:基于角色的權(quán)限控制。通過(guò)角色關(guān)聯(lián)用戶(hù),角色關(guān)聯(lián)權(quán)限的方式間接賦予用戶(hù)權(quán)限。

          在 RBAC  中,權(quán)限與角色相關(guān)聯(lián),用戶(hù)通過(guò)成為適當(dāng)角色的成員而得到這些角色的權(quán)限。這就極大地簡(jiǎn)化了權(quán)限的管理。這樣管理都是層級(jí)相互依賴(lài)的,權(quán)限賦予給角色,而把角色又賦予用戶(hù),這樣的權(quán)限設(shè)計(jì)很清楚,管理起來(lái)很方便。

          如下圖:

          有的人可能會(huì)問(wèn),為什么需要使用角色來(lái)進(jìn)行關(guān)聯(lián)呢,之前權(quán)限綁定在用戶(hù)上面不就好了。為啥還需要添加角色這個(gè)概念。

          其實(shí)在簡(jiǎn)單的系統(tǒng)里面,每個(gè)用戶(hù)只存在一種角色,那么可以直接用戶(hù)綁定權(quán)限。但是對(duì)于比較大的系統(tǒng),很多用戶(hù)擁有相同的一批權(quán)限,這時(shí),我們?nèi)绻灰虢巧年P(guān)聯(lián),那么每次都需要批量修改全部的用戶(hù)權(quán)限。而且角色關(guān)聯(lián),很方便的可以針對(duì)于多用戶(hù)多角色的場(chǎng)景。

          二、RBAC 模型的分類(lèi)

          RBAC 模型可以分為:RBAC0、RBAC1、RBAC2、RBAC3 四種。其中 RBAC0 是基礎(chǔ),也是最簡(jiǎn)單的,相當(dāng)于底層邏輯,RBAC1、RBAC2、RBAC3 都是以 RBAC0 為基礎(chǔ)的升級(jí)。

          一般情況下,使用 RBAC0 模型就可以滿(mǎn)足常規(guī)的權(quán)限管理系統(tǒng)設(shè)計(jì)了。

          2.1  RBAC0

          最簡(jiǎn)單的用戶(hù)、角色、權(quán)限模型。這里面又包含了 2 種:

          1. 用戶(hù)和角色是多對(duì)一關(guān)系,即:一個(gè)用戶(hù)只充當(dāng)一種角色,一種角色可以有多個(gè)用戶(hù)擔(dān)當(dāng)。
          2. 用戶(hù)和角色是多對(duì)多關(guān)系,即:一個(gè)用戶(hù)可同時(shí)充當(dāng)多種角色,一種角色可以有多個(gè)用戶(hù)擔(dān)當(dāng)。

          2.2  RBAC1

          相對(duì)于 RBAC0 模型,增加了子角色,引入了繼承概念,即子角色可以繼承父角色的所有權(quán)限。

          2.3  RBAC2

          1. 角色互斥:同一用戶(hù)不能分配到一組互斥角色集合中的多個(gè)角色,互斥角色是指權(quán)限互相制約的兩個(gè)角色。案例:財(cái)務(wù)系統(tǒng)中一個(gè)用戶(hù)不能同時(shí)被指派給會(huì)計(jì)角色和審計(jì)員角色。

          2. 基數(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)限。

          3. 運(yùn)行時(shí)互斥:例如,允許一個(gè)用戶(hù)具有兩個(gè)角色的成員資格,但在運(yùn)行中不可同時(shí)激活這兩個(gè)角色。

          2.4  RBAC3

          RBAC3,也就是最全面級(jí)的權(quán)限管理,被稱(chēng)為統(tǒng)一模型,它包含了 RBAC1 和 RBAC2,利用傳遞性,也把 RBAC0 包括在內(nèi),綜合了 RBAC0、RBAC1 和 RBAC2 的所有特點(diǎn) , 它是基于 RBAC0 的基礎(chǔ)上,將 RBAC1 和 RBAC2 進(jìn)行整合了,最全面,也最復(fù)雜的.

          這種模式既要維護(hù)好角色間的繼承關(guān)系處理好分層,又要處理角色間的責(zé)任分離。

          三、RBAC 的特點(diǎn)

          1. 便于授權(quán)管理:RBAC 采用了角色繼承的概念,它將角色組織起來(lái),能夠很自然地反映組織內(nèi)部人員之間的職權(quán)、責(zé)任關(guān)系。

          2. 便于賦予最小權(quán)限原則:根據(jù)組織內(nèi)的規(guī)章制度、職員的分工等設(shè)計(jì)擁有不同權(quán)限的角色,只有角色需要執(zhí)行的操作才授權(quán)給角色,否則對(duì)操作的訪(fǎng)問(wèn)被拒絕。

          3. 便于職責(zé)分離:對(duì)于某些特定的操作集,某一個(gè)角色或用戶(hù)不可能同時(shí)獨(dú)立地完成所有這些操作,這時(shí)需要進(jìn)行職責(zé)分離。有靜態(tài)和動(dòng)態(tài)兩種實(shí)現(xiàn)方式。

          4. RBAC 模型沒(méi)有提供操作順序控制機(jī)制:這一缺陷使得 RBAC 模型很難應(yīng)用關(guān)于那些要求有嚴(yán)格操作次序的實(shí)體系統(tǒng)。

          四、如何設(shè)計(jì)權(quán)限系統(tǒng)

          上面我們已經(jīng)介紹了權(quán)限系統(tǒng)的設(shè)計(jì)模型,那么又到了我們的思考環(huán)節(jié),怎么利用 RBAC 去設(shè)計(jì)一個(gè)權(quán)限系統(tǒng)。

          思考.....??
          思考.....??
          思考.....??

          首先,我們思考一下一個(gè)簡(jiǎn)單的權(quán)限系統(tǒng)應(yīng)該具備哪些內(nèi)容?

          通過(guò)我們前面對(duì) RBAC 的介紹,RBAC 模型:用戶(hù)-角色-權(quán)限。所以最基本的我們應(yīng)該具備用戶(hù)、角色、權(quán)限這三個(gè)內(nèi)容。

          那么如何定義用戶(hù),角色,和權(quán)限呢?

          1. 權(quán)限,對(duì)于我們的網(wǎng)頁(yè)中,如頁(yè)面,按鈕,接口都可以當(dāng)做權(quán)限。

          2. 角色,用于關(guān)聯(lián)權(quán)限的,用來(lái)描述當(dāng)前權(quán)限的使用者。

          3. 用戶(hù),這個(gè)就很簡(jiǎn)單了,使用我們系統(tǒng)的都是用戶(hù)。

          接下來(lái),我們思考,究竟如何將三者關(guān)聯(lián)起來(lái)。

          回顧前文,角色作為樞紐,關(guān)聯(lián)用戶(hù)、權(quán)限。所以在 RBAC 模型下,我們應(yīng)該:創(chuàng)建一個(gè)角色,并為這個(gè)角色賦予相應(yīng)權(quán)限,最后將角色賦予用戶(hù)。將這個(gè)問(wèn)題抽象為流程,如下圖

          然后我們把上圖映射到我們的系統(tǒng)里面

          當(dāng)醫(yī)生登錄時(shí),只看得到醫(yī)生門(mén)診, 護(hù)士登錄只看得到預(yù)約登記,他們都看不到其他用戶(hù)的專(zhuān)屬的頁(yè)面,但是醫(yī)院管理員可以看到全部的。

          這樣就實(shí)現(xiàn)了用戶(hù)、權(quán)限、角色的關(guān)聯(lián),一個(gè)簡(jiǎn)易的權(quán)限系統(tǒng)就完成了。

          本篇文章主要是工作中開(kāi)發(fā)權(quán)限系統(tǒng)的總結(jié),通過(guò)給大家介紹 RBAC 的模型和概念,讓大家了解到 RBAC 的核心是通過(guò)角色管理權(quán)限,角色賦予用戶(hù)來(lái)進(jìn)行權(quán)限管理,讓大家在設(shè)計(jì)權(quán)限系統(tǒng)設(shè)計(jì)時(shí)可以進(jìn)行參考。

          瀏覽 34
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  五月天婷婷影院影院 | 日比视频在线观看 | 思思精品热视频 | 中文字幕日韩成人电影 | 波多野结衣中文字幕一区二区 |