RBAC在CSD下的參考實現

2021-06-04 22:55:15 字數 2026 閱讀 5273

許可權模組是mis系統中不可或缺的重要組成。員工在進行正常的訪問前,伺服器往往都需要認證員工的身份。確認員工是否授權,也就是進行訪問控制。訪問控制管理允許被授權的主體(個體或團體組織)對某些資源的訪問,同時拒絕向非授權的主體提供服務。許可權模組的邏輯模型一般形式如下:

誰(員工/角色)對什麼(應用模組)是否具有某種操作的授權(授權狀態:grant、deny、revoke等)。即who + what + how操作模型。

目前業界比較流行的授權模型有rbac、acl等。本文主要闡述csd許可權控制模組的邏輯組成,童鞋們可以根據專案的實際情況和具體架構,在可維護性、靈活性、完整性等方面對目前的許可權模型進行自己的靈活定製。

關於訪問控制,人們提出了各種保護資料並加以控制的安全模型,如自主訪問控制(discretionary access control,dac)、強制訪問控制(mandatoryaccess control,mac),它們通常都是基於員工-組的安全模型。而rbac(role-based access control)具有簡化管理的優越性,它更適合大型系統的管理應用。訪問控制策略體現在rbac模型裡是員工-角色、角色-許可權和角色-角色之間的關係。nist(national institute ofstandards and technology)制定的rbac模型體系由4個模型組成,分別是基本模型rbac0,角色分級模型rbac1,角色限制模型rbac2和統一模型rbac3。

(1). u:表示使用者集;r:表示角色集;p:表示許可權集;s:表示會話集:

(2). pr:p×r,是許可權到角色的多對多指派:

(3). ua:u×r,是使用者到角色的多對多指派:

(4). su:s→u,會話和使用者的單一對映,user(sn)表示建立會話sn的使用者;

(5). sr:s→r,會話和角色子集的對映,roles(sn)表示會話sn對應的角色集合;

(6). 會話sn具有的許可權集 p(sn)。

rbac1引入角色繼承關係,(一般繼承關係,受限繼承關係),rbac2模型增加了責任分離關係,它規定了角色被授予員工,或者許可權被授予角色時,以及當員工在某一時刻啟用某一角色時,所應遵循的強制性規則。

rbac3包含了rbac1和rbac2,既提供了角色間的繼承關係,又提供了責任分離關係

這裡,主要從授權模型許可權校驗兩部分來討論實現思路。

建立如下授權模型:

下面,針對授權模型中的幾個關鍵部分進行一下描述:

按照rbac模型,在授權時分為配置資源以及資源的操作、授予角色對資源的操作許可權,分配角色給員工這幾步來完成,其中:

a. 資源配置以及資源的操作需要維護資源與資源操作之間的關聯模型。

b. 授予角色對資源的的操作許可權需要維護資源與角色之間的關聯模型。

c. 分配角色給員工需要維護角色與員工之間的關聯模型。

d. 許可權的繼承通過角色的自關聯完成,即角色可擁有子角色,子角色繼承父角色的許可權

許可權的排斥與包含,是通過在資源的操作許可權模型中,增加自關聯模型以及定義哪些資源的操作許可權是排斥和包含的,在授權時可以看到同樣需要維護的只是資源許可權的自關聯模型。

根據上面的授權模型,在作資源許可權校驗的時候需要經過以下幾個步驟:

a.  判斷員工所在的角色是否擁有對資源進行操作的許可權;

b. 遞迴遍歷員工所在角色的父角色,判斷是否擁有對資源進行操作的許可權;

備註:整個過程是乙個遞迴過程,當遍歷員工本身的角色找不到相應的操作許可權時,開始進行父類角色的遞迴查詢。可以看出,它和jvm載入class前進行唯一載入判斷的法則有著一致的順序:自底向下判斷是否載入過(是否具有操作許可權)。

c. 資料許可權的校驗

rbac模型將資料對映為rbac中的資源,對資料的操作則對映為資源的操作,然後將此資源以及資源的操作構成的許可權授予角色,將角色分配給員工完成資料許可權的授權過程。

備註:該模型包含資料許可權的繼承(自關聯資源模型),資料許可權授予主體的多樣性。

csd許可權控制引入了員工和組織機構之間的關聯模型,但角色之間的簡單繼承關係帶來了大量的資料冗餘,下面是csd的許可權控制er模型:

備註:

涉及到的資料表如下:

Python在windows下實現簡單的伺服器

coding utf 8 import socket import threading import time def dealclient sock addr 第四步 接收傳來的資料,並傳送給對方資料 print accept new connection from s s addr sock s...

在 DOS 下實現多執行緒

在 dos 下實現多執行緒 程式在 turbo c 3.0 下除錯通過,採用了最簡單的時間片輪轉法,實現了多執行緒的系統,程式盡量採用了最簡潔的技術來實現多工的系統,主要使用到了c標準庫中的setjmp和longjmp兩個函式,程式絕大部分都是採用c c 語言書寫,但是仍然不可避免的採用了三句內嵌彙...

ecshop在nginx下實現負載均衡

ecshop在負載方面的功能是十分弱小的。當你的ip每個小時到達了一萬ip。如果在頻寬和伺服器硬體有限的情況下。你的伺服器很快就會崩潰的。直接掛掉。為了增強ecshop在負載均衡方面的能力。我們可以借助nginx來實現簡單的ecshop負載均衡.首先我們在伺服器上安裝nginx php mysql ...