1. 程式人生 > 實用技巧 >簡單認識RBAC

簡單認識RBAC

RBAC是什麼

   RBAC是基於角色的訪問控制(Role-Based Access Control )在 RBAC中,許可權與角色相關聯,使用者通過成為適當角色的成員而得到這些角色的許可權。

   這就極大地簡化了許可權的管理。這樣管理都是層級相互依賴的,許可權賦予給角色,而把角色又賦予使用者,這樣的許可權設計很清楚,管理起來很方便。

   RBAC一般都是公司內部進行使用,如財務部成員擁有檢視財務報表的許可權,人事部的成員擁有檢視近期公司人員入職離職情況的許可權等。

前臺和後臺

   在前臺中,也就是面向使用者的資源中主要有三大許可權,如下:

   認證(是否登入)

   許可權(是否能檢視到該資源)

   頻率(請求是否過於頻繁)

   而在後臺中,也就是面向公司內部的人員擁有哪些許可權。

   就通過RBAC來進行管理。

   普通員工(只有檢視某一張表、某一條記錄的許可權)

   小組長(能修改,能新增)

   大BOSS(對任何表都具有增刪改查的許可權)

Django-Auth元件

   最基本的許可權管理其實三張表就夠了,如下所示:

  

   每個使用者所屬不同部門,那麼不同部門擁有哪些許可權則這些使用者就具有哪些許可權,這是非常廣泛的。

   但是三張表侷限性太過強烈,比如Jerry不屬於助教部,它也想獲取輔導的許可權該怎麼做呢(管理人員也可以來進行輔導呀)?所以這個時候三表許可權就顯得捉襟見肘。

  

   Django中所使用的是六表許可權,(基本上五表許可權就夠了),它包含了使用者與組的關係,使用者與許可權的關係(很重要),以及組與許可權的關係。

   那麼有六張表時,就可以通過修改使用者與許可權關係表來讓Jerry達到具有輔導的許可權,但是Jerry並不會屬於助教部,也就是額外的部門之外的許可權。

   這麼說可能有點抽象,舉一個更加形象的例子,如公司老闆不屬於任何部門,那麼他理應來說應該具有該公司所有許可權,所以三表不夠用,至少要五表才OK。

混合的許可權

   其實對於前臺和後臺使用者來說,一般要分為兩張表。

   比如前臺的是該站使用者,後臺是該站管理人員。’

   在Django

中,它只用了一張表,當然這也是可行的,我們來看一下admin中對超級管理員對於普通使用者的管理

  

   可以看見,Django會將前臺和後臺的使用者統一存放至auth_user表中,同時用欄位來區分到底是前臺還是後臺使用者。

   如果是後臺使用者,則才能夠分配許可權,當然Django提供的許可權分配相對來說還是比較粗糙的,對於許可權的區分甚至可以精確某一欄位或記錄。

   這裡不再過多闡述。