1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

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

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

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

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

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

        一、什么是 RBAC 模型

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

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

        如下圖:

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

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

        二、RBAC 模型的分類

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

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

        2.1  RBAC0

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

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

        2.2  RBAC1

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

        2.3  RBAC2

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

        2. 基數(shù)約束:一個(gè)角色被分配的用戶數(shù)量受限,它指的是有多少用戶能擁有這個(gè)角色。例如:一個(gè)角色專門為公司 CEO 創(chuàng)建的,那這個(gè)角色的數(shù)量是有限的。先決條件角色:指要想獲得較高的權(quán)限,要首先擁有低一級(jí)的權(quán)限。例如:先有副總經(jīng)理權(quán)限,才能有總經(jīng)理權(quán)限。

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

        2.4  RBAC3

        RBAC3,也就是最全面級(jí)的權(quán)限管理,被稱為統(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 采用了角色繼承的概念,它將角色組織起來,能夠很自然地反映組織內(nèi)部人員之間的職權(quán)、責(zé)任關(guān)系。

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

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

        4. RBAC 模型沒有提供操作順序控制機(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)容?

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

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

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

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

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

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

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

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

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

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

        本篇文章主要是工作中開發(fā)權(quán)限系統(tǒng)的總結(jié),通過給大家介紹 RBAC 的模型和概念,讓大家了解到 RBAC 的核心是通過角色管理權(quán)限,角色賦予用戶來進(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)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            成人性爱视频免费在线观看 | 免费 无码 精品 国产76在线 | 老牛影视无码一区二区 | 成人毛片18女人毛片免费看百度 | 精品人妻一区二区三区黑牛影视 | A级毛片高清不卡视频免费观看 | 一本色道久久加勒比精品 | 大鸡吧操小骚逼视频 | 97超碰免费在线观看 | 国产中文字幕视频在线 |