RBAC許可權模型及資料許可權擴充套件的實踐

2021-09-08 22:56:15 字數 1534 閱讀 4114

原文:

rbac許可權模型及資料許可權擴充套件的實踐

話說大家對rbac許可權模型應該是耳熟能詳了。但真正用的好的並不多。並且原始的rbac模型並不包括資料許可權的管理,網上也差點兒沒有相關的文章可以參考。本人經過幾個專案的實戰,在其基礎上擴充套件出一套可行的、簡單的資料許可權模型,希望可以幫助大家解決資料許可權管理上的老大難問題。

至於什麼是資料許可權,請移步我的其它文章,這裡不再敷述。

1、關於角色的繼承:

在上圖描寫敘述的模型中,並沒有實現角色的繼承。既然乙個使用者能夠分配多個角色,那麼角色是否能繼承還有什麼必要呢?實現這個毫無必要的功能須要大大新增應用的複雜度,可謂是得不償失。

2、關於資源和功能:

大家能夠從圖中看到僅僅有一張表的乙個字段用來描寫敘述資源或功能的授權。在大多數場景中,資源和功能實際上無法進行嚴格的區分。有所差別的僅僅是顆粒度的不同而已。乙個業務組能夠算是一種顆粒度最粗的資源。乙個頁面或視窗相對就精細一些了;到頁面內選單、工具欄button,就更精細了。假設控制的顆粒度達到頁面元素或介面控制項的程度,就是最細顆粒度的許可權控制了。所以不管你叫資源還是功能、操作。都沒有差別。你要控制的就是那些東西,僅僅須要你描寫敘述出來,就能夠被控制。

3、關於資料許可權:

資料許可權的授權相對功能許可權來說,是全然不同的兩種型別。怎樣為資料授權,這必須從資料許可權的本質出發,從怎樣鑑別資料出發,僅僅有可以像鑑別資源一樣對資料加以鑑別,我們才幹對資料進行正確的授權。

假設我們拋開資料值的不同(值的不同不是本質的不同)來分析資料,就會發如今一般場景中,資料的不同首先是業務型別的不同。譬如:訂單資料、結算資料、生產計畫資料等等。

對於同一型別資料,還能夠以產生資料的物件:業務部門、業務人員加以區分。這也是常常遇到的需求:經理能夠看到所有的訂單,業務員僅僅能看自己的。

什麼叫所有?什麼叫自己的?前乙個概念對於不同的業務部門,實際的內容往往並不相同。a經理的所有訂單指的是a部門的訂單;而b經理的所有訂單則是b部門的訂單。

至於所謂的「自己的」。就更加明顯是乙個相對概念了。張三的和李四的一般來說是不存在交集的。但有時候。也有一些絕對性的需求。譬如要求c部門的張三要管a部門訂單的審核,相同c部門的王五則負責b部門。

這樣,資料許可權的授權必需要從相對和絕對兩個維度進行定義,才幹做到邏輯完備。所以模型中也通過兩張表來描寫敘述資料許可權,在相對模式中,用mode欄位來描寫敘述不同的顆粒度,而在絕對模式中使用者能夠直接指定部門或使用者的id。此外,用moduleid欄位來定義資料的型別,也就是產生業務的模組。這個欄位所包括的邏輯不僅是差別資料的業務型別,更重要的是為應用資料許可權提供根據。

4、關於許可權的應用:

本人在專案中,功能許可權和資料許可權都應用在資料訪問層。利用資料庫函式返回給應用程式被授權的資源或功能的id集合。

應用程式依據id集合通過反射載入資源或功能,達到使用者不能訪問非授權資源的目的。資料許可權的應用方法也差點兒相同,將資料庫函式join到業務表上去,未授權的業務資料就會被過濾掉。通過join新增的permission列,則描寫敘述了該行資料的讀寫許可權為僅僅讀還是讀寫。

RBAC許可權模型及資料許可權擴充套件的實踐

原文 rbac許可權模型及資料許可權擴充套件的實踐 話說大家對rbac許可權模型應該是耳熟能詳了。但真正用的好的並不多。並且原始的rbac模型並不包括資料許可權的管理,網上也差點兒沒有相關的文章可以參考。本人經過幾個專案的實戰,在其基礎上擴充套件出一套可行的 簡單的資料許可權模型,希望可以幫助大家解...

RBAC許可權模型

rbac role based access control,基於角色的訪問控制 就是使用者通過角色與許可權進行關聯。簡單地說,乙個使用者擁有若干角色,每乙個角色擁有若干許可權。這樣,就構造成 使用者 角色 許可權 的授權模型。在這種模型中,使用者與角色之間,角色與許可權之間,一般者是多對多的關係。...

許可權控制模型 RBAC

rbac role based accesscontrol,基於角色的訪問控制 就是使用者通過角色與許可權進行關聯。簡單地說,乙個使用者擁有若干角色,每乙個角色擁有若干許可權。這樣,就構造成 使用者 角色 許可權 的授權模型。與acl實現的區別在於,不能直接為使用者分配許可權,只能從角色那裡繼承而來...