我目前正在爲本地協會開發一個成員管理,我正在開發數據庫模式。我想與大家分享它來改進它,並給出其他基於角色的訪問模型(RBAC)的示例。我會很感激任何建設性的批評,特別是關於我在表格之間使用的關係。基於角色的訪問控制的DB模式
鏈接HIGHRES:http://i.stack.imgur.com/WG3Vz.png
繼承人的模式:
工作原理:
我映射現有客戶(該協會的成員竟)從外部應用程序爲我的政府應用。 (客戶表)
該關聯在Division,Subdivisions等(intern_structures表)中構造。每個客戶都可以成爲多個部門,細分部門,部門等的成員。
每個客戶都可以在總統,精算師,司庫等成員(部門,...)中擁有一個或多個角色,並且每個角色都有一定的角色的所有者可以在他的部門,細分部門,部門等中應用其他人的特權。
憑證連接到應用程序的某個操作。憑證的所有者可以在其範圍內的其他成員上執行此操作。可以有多個「獨立」應用程序,但它們都共享相同的認證/授權系統。
應用程序在模塊/子模塊/操作等中構造。一個示例可以是「個人詳細信息」模塊,此模塊包含一個稱爲「圖片」的子模塊,您可以在「查看,刪除,編輯」這張照片。但是你不能刪除任何圖片,除非你試圖刪除圖片的人在你有足夠角色的部門/部分。
內部和應用程序結構都是樹,實現爲鄰接列表和嵌套集。鄰接列表確保完整性,並且嵌套集允許我快速遍歷樹。
一個例外是,您可以直接給某人某些憑證(client_credentials)。如果有人需要對不在分區/部分的人執行某些操作,則需要此操作。
因此,某人可以成爲多個divsions/sections中的成員,並且在他所屬的每個部門/部門中獲得多個角色。我將通過他的多個角色合併所有憑據。證書總是正面的,意味着限制性證書是不可能的。
下面是一個簡單的RBAC系統的概念:http://stackoverflow.com/questions/28157798/is-my-role-based-access-control-a-feasible-solution/28159647#28159647 – sled 2015-02-05 16:03:57