最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

RBAC簡介_動力節(jié)點Java學(xué)院整理

 更新時間:2017年08月18日 10:21:18   作者:分享牛  
這篇文章主要介紹了RBAC簡介,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

什么是權(quán)限管理

基本上涉及到用戶參與的系統(tǒng)都要進(jìn)行權(quán)限管理,權(quán)限管理屬于系統(tǒng)安全的范疇,權(quán)限管理實現(xiàn)對用戶訪問系統(tǒng)的控制,按照安全規(guī)則或者安全策略控制用戶可以訪問而且只能訪問自己被授權(quán)的資源。

權(quán)限管理包括用戶身份認(rèn)證和授權(quán)兩部分,簡稱認(rèn)證授權(quán)。對于需要訪問控制的資源用戶首先經(jīng)過身份認(rèn)證,認(rèn)證通過后用戶具有該資源的訪問權(quán)限方可訪問。

用戶身份認(rèn)證

身份認(rèn)證,就是判斷一個用戶是否為合法用戶的處理過程。最常用的簡單身份認(rèn)證方式是系統(tǒng)通過核對用戶輸入的用戶名和口令,看其是否與系統(tǒng)中存儲的該用戶的用戶名和口令一致,來判斷用戶身份是否正確。對于采用指紋等系統(tǒng),則出示指紋;對于硬件Key等刷卡系統(tǒng),則需要刷卡。

 用戶名密碼身份認(rèn)證流程

 

 關(guān)鍵對象

上邊的流程圖中需要理解以下關(guān)鍵對象:

Subject:主體

訪問系統(tǒng)的用戶,主體可以是用戶、程序等,進(jìn)行認(rèn)證的都稱為主體;

Principal:身份信息

是主體(subject)進(jìn)行身份認(rèn)證的標(biāo)識,標(biāo)識必須具有唯一性,如用戶名、手機(jī)號、郵箱地址等,一個主體可以有多個身份,但是必須有一個主身份(Primary Principal)。

credential:憑證信息

是只有主體自己知道的安全信息,如密碼、證書等。

授權(quán)

授權(quán),即訪問控制,控制誰能訪問哪些資源。主體進(jìn)行身份認(rèn)證后需要分配權(quán)限方可訪問系統(tǒng)的資源,對于某些資源沒有權(quán)限是無法訪問的。

授權(quán)流程

 下圖中橙色為授權(quán)流程。

 

關(guān)鍵對象

授權(quán)可簡單理解為who對what(which)進(jìn)行How操作:

n Who,即主體(Subject),主體需要訪問系統(tǒng)中的資源。

n What,即資源(Resource),如系統(tǒng)菜單、頁面、按鈕、類方法、系統(tǒng)商品信息等。資源包括資源類型和資源實例,比如商品信息為資源類型,類型為t01的商品為資源實例,編號為001的商品信息也屬于資源實例。

n How,權(quán)限/許可(Permission),規(guī)定了主體對資源的操作許可,權(quán)限離開資源沒有意義,如用戶查詢權(quán)限、用戶添加權(quán)限、某個類方法的調(diào)用權(quán)限、編號為001用戶的修改權(quán)限等,通過權(quán)限可知主體對哪些資源都有哪些操作許可。

權(quán)限分為粗顆粒和細(xì)顆粒,粗顆粒權(quán)限是指對資源類型的權(quán)限,細(xì)顆粒權(quán)限是對資源實例的權(quán)限。

主體、資源、權(quán)限關(guān)系如下圖:

 

權(quán)限模型

對上節(jié)中的主體、資源、權(quán)限通過數(shù)據(jù)模型表示。

主體(賬號、密碼)

資源(資源名稱、訪問地址)

權(quán)限(權(quán)限名稱、資源id)

角色(角色名稱)

角色和權(quán)限關(guān)系(角色id、權(quán)限id)

主體和角色關(guān)系(主體id、角色id)

如下圖:

 

通常企業(yè)開發(fā)中將資源和權(quán)限表合并為一張權(quán)限表,如下:

資源(資源名稱、訪問地址)

權(quán)限(權(quán)限名稱、資源id)

合并為:

權(quán)限(權(quán)限名稱、資源名稱、資源訪問地址)

 

上圖常被稱為權(quán)限管理的通用模型,不過企業(yè)在開發(fā)中根據(jù)系統(tǒng)自身的特點還會對上圖進(jìn)行修改,但是用戶、角色、權(quán)限、用戶角色關(guān)系、角色權(quán)限關(guān)系是需要去理解的。

權(quán)限分配

對主體分配權(quán)限,主體只允許在權(quán)限范圍內(nèi)對資源進(jìn)行操作,比如:對u01用戶分配商品修改權(quán)限,u01用戶只能對商品進(jìn)行修改。

權(quán)限分配的數(shù)據(jù)通常需要持久化,根據(jù)上邊的數(shù)據(jù)模型創(chuàng)建表并將用戶的權(quán)限信息存儲在數(shù)據(jù)庫中。

 權(quán)限控制

用戶擁有了權(quán)限即可操作權(quán)限范圍內(nèi)的資源,系統(tǒng)不知道主體是否具有訪問權(quán)限需要對用戶的訪問進(jìn)行控制。

基于角色的訪問控制

RBAC基于角色的訪問控制(Role-Based Access Control)是以角色為中心進(jìn)行訪問控制,比如:主體的角色為總經(jīng)理可以查詢企業(yè)運營報表,查詢員工工資信息等,訪問控制流程如下:

 

上圖中的判斷邏輯代碼可以理解為:

if(主體.hasRole("總經(jīng)理角色id")){

查詢工資

}

缺點:以角色進(jìn)行訪問控制粒度較粗,如果上圖中查詢工資所需要的角色變化為總經(jīng)理和部門經(jīng)理,此時就需要修改判斷邏輯為“判斷主體的角色是否是總經(jīng)理或部門經(jīng)理”,系統(tǒng)可擴(kuò)展性差。

修改代碼如下:

if(主體.hasRole("總經(jīng)理角色id") || 主體.hasRole("部門經(jīng)理角色id")){

查詢工資

}

基于資源的訪問控制

RBAC基于資源的訪問控制(Resource-Based Access Control)是以資源為中心進(jìn)行訪問控制,比如:主體必須具有查詢工資權(quán)限才可以查詢員工工資信息等,訪問控制流程如下:

上圖中的判斷邏輯代碼可以理解為:

if(主體.hasPermission("查詢工資權(quán)限標(biāo)識")){

查詢工資

}

優(yōu)點:系統(tǒng)設(shè)計時定義好查詢工資的權(quán)限標(biāo)識,即使查詢工資所需要的角色變化為總經(jīng)理和部門經(jīng)理也只需要將“查詢工資信息權(quán)限”添加到“部門經(jīng)理角色”的權(quán)限列表中,判斷邏輯不用修改,系統(tǒng)可擴(kuò)展性強。

權(quán)限管理解決方案

粗顆粒度和細(xì)顆粒度

 什么是粗顆粒度和細(xì)顆粒度

對資源類型的管理稱為粗顆粒度權(quán)限管理,即只控制到菜單、按鈕、方法,粗粒度的例子比如:用戶具有用戶管理的權(quán)限,具有導(dǎo)出訂單明細(xì)的權(quán)限。對資源實例的控制稱為細(xì)顆粒度權(quán)限管理,即控制到數(shù)據(jù)級別的權(quán)限,比如:用戶只允許修改本部門的員工信息,用戶只允許導(dǎo)出自己創(chuàng)建的訂單明細(xì)。

 如何實現(xiàn)粗顆粒度和細(xì)顆粒度

對于粗顆粒度的權(quán)限管理可以很容易做系統(tǒng)架構(gòu)級別的功能,即系統(tǒng)功能操作使用統(tǒng)一的粗顆粒度的權(quán)限管理。

對于細(xì)顆粒度的權(quán)限管理不建議做成系統(tǒng)架構(gòu)級別的功能,因為對數(shù)據(jù)級別的控制是系統(tǒng)的業(yè)務(wù)需求,隨著業(yè)務(wù)需求的變更業(yè)務(wù)功能變化的可能性很大,建議對數(shù)據(jù)級別的權(quán)限控制在業(yè)務(wù)層個性化開發(fā),比如:用戶只允許修改自己創(chuàng)建的商品信息可以在service接口添加校驗實現(xiàn),service接口需要傳入當(dāng)前操作人的標(biāo)識,與商品信息創(chuàng)建人標(biāo)識對比,不一致則不允許修改商品信息。

相關(guān)文章

  • DBCC SHRINKDATABASEMS SQL數(shù)據(jù)庫日志壓縮方法

    DBCC SHRINKDATABASEMS SQL數(shù)據(jù)庫日志壓縮方法

    DBCC SHRINKDATABASEMS SQL數(shù)據(jù)庫日志壓縮方法...
    2007-07-07
  • sql left join 命令詳解

    sql left join 命令詳解

    左向外聯(lián)接的結(jié)果集包括 LEFT OUTER 子句中指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關(guān)聯(lián)的結(jié)果集行中右表的所有選擇列表列均為空值。
    2009-07-07
  • sql語句創(chuàng)建外鍵關(guān)聯(lián)的完整實例

    sql語句創(chuàng)建外鍵關(guān)聯(lián)的完整實例

    這篇文章主要給大家介紹了關(guān)于sql語句創(chuàng)建外鍵關(guān)聯(lián)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • update 子查詢使用介紹

    update 子查詢使用介紹

    這篇文章主要介紹了update 子查詢使用介紹,需要的朋友可以參考下
    2014-08-08
  • 海量數(shù)據(jù)庫的查詢優(yōu)化及分頁算法方案集合2/2

    海量數(shù)據(jù)庫的查詢優(yōu)化及分頁算法方案集合2/2

    海量數(shù)據(jù)庫的查詢優(yōu)化及分頁算法方案集合2/2...
    2007-03-03
  • sql server中datetime字段去除時間代碼收藏

    sql server中datetime字段去除時間代碼收藏

    sql下把datetime字段的時間去除的方法整理收集
    2008-04-04
  • 數(shù)據(jù)庫查詢優(yōu)化(主從表的設(shè)計)

    數(shù)據(jù)庫查詢優(yōu)化(主從表的設(shè)計)

    寫過許多的數(shù)據(jù)庫查詢語句,面對過許多的問題,也在磕磕碰碰中學(xué)到了很多東西。昨天在看系統(tǒng)數(shù)據(jù)庫設(shè)計與SQL代碼時,突然“發(fā)現(xiàn)”了許多平常不屑看到的問題,于是就萌生了把它提出來思考的念頭
    2013-08-08
  • 在數(shù)據(jù)庫中如何高效的實現(xiàn)訂座功能

    在數(shù)據(jù)庫中如何高效的實現(xiàn)訂座功能

    這篇文章主要給大家介紹了關(guān)于在數(shù)據(jù)庫中如何高效的實現(xiàn)訂座功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • hadoop map-reduce中的文件并發(fā)操作

    hadoop map-reduce中的文件并發(fā)操作

    hadoop mapreduce最主要的應(yīng)用是基于鍵值對的數(shù)據(jù)的運算,過濾,提取。但除此之外,我們可以順帶利用mapreduce高并發(fā)的特性做一些用常用方法難以處理的問題,比如大量數(shù)據(jù),大量文件的并發(fā)讀寫
    2014-04-04
  • 高性能分析數(shù)據(jù)庫StarRocks的安裝與使用詳解

    高性能分析數(shù)據(jù)庫StarRocks的安裝與使用詳解

    在大數(shù)據(jù)時代,選擇一個高性能的分析數(shù)據(jù)庫對業(yè)務(wù)的成功至關(guān)重要,StarRocks作為一款次世代MPP數(shù)據(jù)庫,以其卓越的實時分析和多維分析能力而聞名,下面小編就來和大家聊聊它的具體安裝與使用吧
    2025-03-03

最新評論

镇沅| 泰州市| 屏东市| 中西区| 手游| 灵台县| 绥阳县| 板桥市| 青田县| 赤壁市| 吉安县| 大余县| 武城县| 土默特右旗| 武川县| 上林县| 项城市| 巴彦淖尔市| 栖霞市| 桓台县| 宜章县| 襄汾县| 江门市| 北川| 新化县| 临邑县| 会东县| 和平区| 茌平县| 营口市| 巢湖市| 泸溪县| 梁平县| 广安市| 吴堡县| 伊金霍洛旗| 广水市| 巴塘县| 太仆寺旗| 万宁市| 中宁县|