一区二区三区视频播放_三级xxxx_7777奇米成人四色影视_色综合久久久久久_欧洲黄色一级视频_成人啪啪18免费网站

什么是基于角色訪問控制(RBAC)技術(shù)?詳解rbac權(quán)限管理的實(shí)現(xiàn)方法

在系統(tǒng)登錄模塊中,常見這樣的問題場景:系統(tǒng)用戶有不同的用戶身份,不同身份的用戶登錄進(jìn)系統(tǒng)后只能看到自己對應(yīng)權(quán)限的功能菜單,系統(tǒng)管理員可以方便對用戶進(jìn)行授權(quán)以及取消權(quán)限。

實(shí)現(xiàn)這樣一個(gè)功能模塊通常使用基于角色的權(quán)限訪問控制,即RBAC(Role Based Access Control)模型。RBAC模型是實(shí)現(xiàn)權(quán)限資源管理控制的一個(gè)普遍通用的模型。

RBAC簡介

基于角色的訪問控制(RBAC)是實(shí)現(xiàn)軟件系統(tǒng)安全策略的一種有效的訪問控制方式。其基本思想是,對系統(tǒng)操作的各種權(quán)限不是直接授予具體的用戶,而是在用戶集合與權(quán)限集合之間建立一個(gè)角色集合。每一種角色對應(yīng)一組相應(yīng)的權(quán)限。一旦用戶被分配了適當(dāng)?shù)慕巧螅撚脩艟蛽碛写私巧乃胁僮鳈?quán)限。

注:ACL模型,即訪問控制列表,一般是指將用戶與權(quán)限直接關(guān)聯(lián)起來的權(quán)限管理方式。

什么是基于角色訪問控制(RBAC)技術(shù)?詳解rbac權(quán)限管理的實(shí)現(xiàn)方法

RBAC通過定義角色的權(quán)限,并對用戶授予某個(gè)角色從而來控制用戶的權(quán)限,實(shí)現(xiàn)了用戶和權(quán)限的邏輯分離(區(qū)別于ACL模型),這樣做的好處是,不必在每次創(chuàng)建用戶時(shí)都進(jìn)行分配權(quán)限的操作,只要分配用戶相應(yīng)的角色即可,同樣地,要對用戶取消權(quán)限時(shí),只需要取消用戶與角色的關(guān)聯(lián)。通常來講,角色的權(quán)限相對穩(wěn)定,對角色權(quán)限變更比用戶權(quán)限變更要少得多,所以,RBAC簡化了用戶的權(quán)限管理。

什么是基于角色訪問控制(RBAC)技術(shù)?詳解rbac權(quán)限管理的實(shí)現(xiàn)方法

資源是指系統(tǒng)中可訪問的模塊、功能等可分配的權(quán)限的集合。

角色是指真實(shí)場景中的某一類用戶,比如系統(tǒng)管理員、普通員工、部門經(jīng)理、財(cái)務(wù)主管等等,通常不同的角色具有不同的權(quán)限。角色可以根據(jù)需要自由創(chuàng)建,角色總是對應(yīng)一組資源。

用戶是指可訪問系統(tǒng)的人,一般每個(gè)用戶都有唯一的UID識(shí)別,用戶可以被授予不同角色。

例如,有一個(gè)“公告管理”功能,使用者的角色有兩種:管理員和普通用戶。管理員和普通用戶被授予不同權(quán)限,管理員擁有該功能模塊的所有權(quán)限,而普通用戶只有部分權(quán)限:

什么是基于角色訪問控制(RBAC)技術(shù)?詳解rbac權(quán)限管理的實(shí)現(xiàn)方法

RBAC有4個(gè)模型概念,分別是RBAC0、RBAC1、RBAC2、RBAC3。

  • RBAC0為基礎(chǔ)模型,即本文前面介紹的內(nèi)容。主要有3個(gè)元素:用戶、角色、權(quán)限(資源)。用戶與角色、角色與權(quán)限之間都是多對多的關(guān)系。
  • RBAC1是在RBAC0的基礎(chǔ)上,增加了角色間的繼承關(guān)系。這種繼承關(guān)系可以是多繼承,也可以是單繼承。適用于角色之間層次分明,可以給角色分組分層的場景。
  • RBAC2是在RBAC0的基礎(chǔ)上,增加了角色間的約束關(guān)系。比如互斥約束,同一用戶只能分配到一組互斥角色集合中的一個(gè)角色;基數(shù)約束,一個(gè)角色被分配到的用戶數(shù)量受限,一個(gè)用戶可擁有的角色數(shù)量受限,一個(gè)角色可以擁有的權(quán)限資源受限;先決條件約束,僅當(dāng)用戶已經(jīng)擁有某一角色時(shí)才能給他分配另一種角色,對于角色來講當(dāng)某一角色擁有某些權(quán)限的時(shí)候才能給該角色分配另一些權(quán)限。運(yùn)行互斥約束,一個(gè)用戶擁有兩個(gè)角色,但在運(yùn)行中不可同時(shí)激活這兩種角色。
  • RBAC3是RBAC1和RBAC2的組合運(yùn)用。

可以看到,重點(diǎn)是RBAC基礎(chǔ)模型,其他幾種主要是對角色這個(gè)元素的擴(kuò)充,以適應(yīng)特定的業(yè)務(wù)場景。對于絕大多數(shù)場景來說,RBAC基礎(chǔ)模型就可以滿足。

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

實(shí)現(xiàn)一個(gè)基于RBAC模型的登錄模塊功能,一般需要5張基本數(shù)據(jù)庫表,分別是:用戶表、資源表(系統(tǒng)模塊菜單及功能表)、角色表、用戶角色關(guān)聯(lián)表、角色權(quán)限表。

本文講解的示例是基于RBAC基礎(chǔ)模型,同時(shí)從功能完備性和易于實(shí)現(xiàn)方面考慮,給出了7張表。在以上5張表的基礎(chǔ)上,增加了用戶權(quán)限表、功能項(xiàng)常量表。

示例中只給出了各個(gè)表的一些主要字段,具體使用可根據(jù)需要增減。比如一般常用于審計(jì)的create_time、update_time、create_by、update_by等字段。

1、用戶表

什么是基于角色訪問控制(RBAC)技術(shù)?詳解rbac權(quán)限管理的實(shí)現(xiàn)方法

用戶表存儲(chǔ)可登錄系統(tǒng)的賬號(hào)信息。

  • user_code: 用戶登錄賬號(hào),在表中唯一性約束。本例中user_code字段作為UID標(biāo)識(shí)字段。
  • password:用戶登錄密碼,安全性考慮,一般存儲(chǔ)密文。

2、菜單資源表

什么是基于角色訪問控制(RBAC)技術(shù)?詳解rbac權(quán)限管理的實(shí)現(xiàn)方法

菜單權(quán)限表存儲(chǔ)系統(tǒng)所有的功能項(xiàng),包括各級菜單以及與之相對應(yīng)的操作權(quán)限點(diǎn)。這個(gè)表反映了系統(tǒng)的全部功能集合,一般由開發(fā)人員或運(yùn)維人員進(jìn)行維護(hù)。

  • menu_code: 菜單項(xiàng)編碼,系統(tǒng)內(nèi)部使用,在表中唯一性約束,標(biāo)識(shí)一個(gè)具體的菜單項(xiàng)。菜單項(xiàng)編碼可以按照一定的規(guī)則編碼,比如一級菜單m01、m02,二級菜單m0101、m0102、m0201、……,按照這樣的規(guī)則,可以根據(jù)編碼識(shí)別出菜單級別。
  • menu_name: 用于在系統(tǒng)界面上展示的菜單項(xiàng)名稱。
  • parent:上級菜單標(biāo)識(shí)。比如m0201的上級為m02。
  • url: 菜單項(xiàng)對應(yīng)的鏈接地址。
  • icon:菜單項(xiàng)圖標(biāo)對應(yīng)的鏈接地址。
  • display_order: 菜單項(xiàng)在系統(tǒng)界面上展示的順序,SQL查詢時(shí),根據(jù)該字段order by排序。
  • function_code: 存儲(chǔ)某一菜單項(xiàng)對應(yīng)的全部功能點(diǎn)代碼。比如insert;update;query;delete; 功能點(diǎn)代碼來自于下文第7個(gè)表。

3、角色表

什么是基于角色訪問控制(RBAC)技術(shù)?詳解rbac權(quán)限管理的實(shí)現(xiàn)方法

角色表存儲(chǔ)用戶創(chuàng)建的角色。

  • role_code: 角色代碼,唯一標(biāo)識(shí)一個(gè)角色,在表中有唯一性約束。
  • role_name: 角色名稱。

4、角色權(quán)限表

什么是基于角色訪問控制(RBAC)技術(shù)?詳解rbac權(quán)限管理的實(shí)現(xiàn)方法

角色權(quán)限表存儲(chǔ)角色與權(quán)限(資源)的映射關(guān)系,多對多關(guān)系。

  • role_code:引用自角色表中的role_code字段。
  • menu_code:引用自菜單資源表menu_code字段。
  • function_code:字段內(nèi)容與菜單資源表function_code字段內(nèi)容相似。比如菜單資源表該字段內(nèi)容為insert;update;query;delete,但某個(gè)角色不具有對應(yīng)菜單功能的刪除操作,則function_code字段內(nèi)容為 insert;update;query。

5、用戶角色表

什么是基于角色訪問控制(RBAC)技術(shù)?詳解rbac權(quán)限管理的實(shí)現(xiàn)方法

用戶角色表存儲(chǔ)用戶與角色的映射關(guān)系,多對多關(guān)系。

  • user_code:引用自用戶表user_code字段。
  • role_code:引用自角色表role_code字段。

以上5張表即是RBAC基礎(chǔ)模型所必須的表。

6、用戶權(quán)限表

什么是基于角色訪問控制(RBAC)技術(shù)?詳解rbac權(quán)限管理的實(shí)現(xiàn)方法

用戶權(quán)限表存儲(chǔ)用戶與權(quán)限(資源)的映射關(guān)系,多對多關(guān)系。

增加此表的作用是為了實(shí)現(xiàn)一個(gè)通用的權(quán)限管理功能,既可以通過角色給用戶授權(quán),也可以通過給用戶直接綁定權(quán)限授權(quán)。即兼容RBAC模型與ACL模型。

在一些系統(tǒng)中,當(dāng)存在一人多崗,用戶數(shù)量較少,但角色數(shù)量需要較多,這種情況使用ACL模型更為方便。

  • user_code:引用自用戶表user_code字段。
  • menu_code:引用自菜單資源表menu_code字段。
  • function_code:字段內(nèi)容與菜單資源表function_code字段內(nèi)容相似。比如菜單資源表該字段內(nèi)容為insert;update;query;delete,但某個(gè)用戶不具有對應(yīng)菜單功能的刪除操作,則function_code字段內(nèi)容為 insert;update;query。

7、功能項(xiàng)常量表

什么是基于角色訪問控制(RBAC)技術(shù)?詳解rbac權(quán)限管理的實(shí)現(xiàn)方法

功能項(xiàng)常量表存儲(chǔ)的內(nèi)容如下:

什么是基于角色訪問控制(RBAC)技術(shù)?詳解rbac權(quán)限管理的實(shí)現(xiàn)方法

功能項(xiàng)常量表存儲(chǔ)功能點(diǎn)代碼與名稱的對應(yīng)信息。主要用于維護(hù)上面表中function_code字段功能點(diǎn)對應(yīng)的功能名稱。

  • function_code:具體功能代碼,如“新增”代碼為insert,“刪除”代碼為delete。唯一標(biāo)識(shí)一個(gè)功能操作,在表中唯一性約束。
  • function_name:功能代碼對應(yīng)的在系統(tǒng)界面展示的功能名稱。

上面表中function_code是多個(gè)功能點(diǎn)代碼用分號(hào)(??拼接起來存儲(chǔ)的,具體代碼實(shí)現(xiàn)時(shí)對字符串分割后可以對應(yīng)此表得到功能點(diǎn)名稱。

這樣設(shè)計(jì)是一個(gè)小的技巧,以簡化功能菜單表存儲(chǔ)的內(nèi)容,以及簡化權(quán)限與角色、與用戶的映射。

實(shí)現(xiàn)要點(diǎn)

在理解清楚這些表之后,以下列出幾個(gè)實(shí)現(xiàn)要點(diǎn)。

  • 將系統(tǒng)菜單功能錄入菜單表。注意menu_code、function_code的編碼規(guī)則。
  • 將系統(tǒng)中全部的功能點(diǎn)錄入功能項(xiàng)常量表。
  • 實(shí)現(xiàn)用戶管理,對用戶表的單表操作。
  • 實(shí)現(xiàn)角色管理,對角色表的單表操作。
  • 實(shí)現(xiàn)用戶角色設(shè)置功能,對用戶角色表操作,根據(jù)所選擇的用戶執(zhí)行先delete后insert數(shù)據(jù),在同一數(shù)據(jù)庫事務(wù)中處理。
  • 實(shí)現(xiàn)角色權(quán)限設(shè)置功能,對角色權(quán)限表操作,根據(jù)所選擇的角色執(zhí)行先delete后insert數(shù)據(jù),在同一數(shù)據(jù)庫事務(wù)中處理。
  • 實(shí)現(xiàn)用戶權(quán)限設(shè)置功能,對用戶權(quán)限表操作,根據(jù)所選擇的用戶執(zhí)行先delete后insert數(shù)據(jù),在同一數(shù)據(jù)庫事務(wù)中處理。
  • 在查詢用戶權(quán)限時(shí),要同時(shí)查詢用戶權(quán)限以及用戶所具有角色的權(quán)限,這兩者的數(shù)據(jù)可能存在重復(fù),例如:用戶權(quán)限表維護(hù)了用戶A具有“公告管理”的權(quán)限,同時(shí)用戶A具有的角色“普通用戶”也具有“公告管理”的權(quán)限,此時(shí),在后端接口中去重處理即可。

聲明:本文由網(wǎng)站用戶維維發(fā)表,超夢電商平臺(tái)僅提供信息存儲(chǔ)服務(wù),版權(quán)歸原作者所有。若發(fā)現(xiàn)本站文章存在版權(quán)問題,如發(fā)現(xiàn)文章、圖片等侵權(quán)行為,請聯(lián)系我們刪除。

(0)
上一篇 2023年9月5日 11:40:44
下一篇 2023年9月5日 11:44:42

相關(guān)推薦

發(fā)表回復(fù)

您的電子郵箱地址不會(huì)被公開。 必填項(xiàng)已用*標(biāo)注

主站蜘蛛池模板: av福利在线观看 | 欧洲成人午夜免费大片 | 午夜性久久 | 国产精品视频一二三 | 欧美精品三区 | 91视频国产高清 | 亚洲第一免费播放区 | 久久久久久女乱国产 | 国产一区二区精品在线 | 在线a视频网站 | 国产福利视频 | 国产区在线看 | 久久国产精品99久久久久久牛牛 | 精品成人在线视频 | 野花成人免费视频 | 毛片福利 | 久综合网| 日本99精品 | 日韩精品视频在线免费观看 | 色姑娘桃花网 | 日韩精品极品视频在线观看免费 | 国产精品伦一区二区三级视频 | 亚洲精品一区二区三区在线 | 国产一区二区三区四区五区 | 国产美女一区二区三区 | 国产乱码精品 | 久久久精品久久久 | 日本一区久久 | 日韩手机在线视频 | 国产午夜精品一区二区三区四区 | 免费看国产片在线观看 | 国产精品日韩欧美一区二区三区 | 九九热精品视频 | 久久精品夜夜夜夜夜久久 | 亚洲欧美日韩在线 | 成年人xxx视频 | 国产一区二区三区四区hd | 中文天堂在线视频 | 在线视频国产一区 | 亚洲精品观看 | 国产精品久久久久久久久久久新郎 |