向蘭宣
摘要:基于角色的訪問控制(RBAC)模型是權限管理中應用比較多的一個模型,它主要通過將權限授予角色或用戶組來完成對每一個用戶訪問許可資源的控制。在RBAC模型主要通過對角色,資源,用戶,以及角色和用戶的對象關系數(shù)據(jù)類的處理,結合位操作運算來完成權限的授予與撤銷。因而應用RBAC模型的教室動態(tài)管理工作平臺,權限設置變得非常簡單和靈活。
關鍵詞:RBAC;權限;角色;動態(tài)
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)34-0122-02
Abstract: Role-based access control (RBAC) model is a model of privilege management application more, mainly by granting permissions to roles or user groups to complete control over each user access to resources.In the RBAC model, through the role, resources, users, as well as the role and user object-relational data processing, combined with bit manipulation operations to complete the grant and revoke permissions.Thus RBAC model classroom dynamic management platform, permissions are set very easy and flexible.
Key words:rbac; authority; role; automatic
1 RBAC簡介
RBAC英文全稱是Role-Based Access Control,也就是我們平時經(jīng)常說的基于角色的訪問控制。它主要應用于計算機操作系統(tǒng)的安全控制,核心操作就是對相應的權限賦予相應的對象,從而使相對應的對象可訪問許可的相關資源。
RBAC支持三個著名的原則,也就是最小權限、責任分離和數(shù)據(jù)抽象三個原則。因此它廣泛地應用于各大應用系統(tǒng)中權限管理模型中。而當中最主要的就是權限的管理,說得簡單就是“WWH”問題,即Who對What進行How操作,其中的Who就是權限的擁有者,What就是權限相對應的資源或?qū)ο?,How就是指具體的權限(授予權限和撤銷權限)。
2 教室動態(tài)管理工作平臺中的權限分析
在教室動態(tài)管理工作平臺中主要涉及的用戶主要有學生、教師、管理員、而在教師中又分為普通教師、部門領導、學院領導等,而每種角色具有不同的權限。
2.1 學生
學生具有的權限相當較少,主要可以瀏覽全院教室列表,以及查詢某個時間段空閑教室。這樣學生在上自習時,不用像以前那樣在教學樓一間一間的搜尋沒有上課的教室。
2.2 普通教師
普通教師具有的權限主要有瀏覽全院教室列表,查詢某個時間段空閑教室,還有就是申請使用教室。這樣教師申請教室補課時,不用本人必須到學院教務處申請,再開具申請后教室使用審批單,減少了教師來回跑,提高了工作效率。
2.3 部門領導
部門領導具有普通教師所有的權限,另外他還有具有審批普通教師申請使用教室的初級權限。特別是申請教室來除補課外的活動,首先要部門領導同意后,教務處管理員再做審批。
2.4 學院領導
學院領導具有普通教師所有的權限,另外還具有查詢各種生成報表的權限。例如教室使用率,教室空置情況,教室維護狀態(tài)等報表。
2.5 管理員
管理員是管理工作平臺最高權限的角色,他具有學生、普通教師、部門領導、學院領導所有角色的權限,還具有管理角色,分配權限,審批教室等功能。
3 RBAC模型在教室動態(tài)管理工作平臺中的具體實現(xiàn)
RBAC模型實現(xiàn)主要涉及角色(Role),資源(Resource),用戶(User),操作(Operator)以及角色和用戶的對象關系(UserRole)五大數(shù)據(jù)類的處理。
3.1 角色(Role)
角色(Role)主要完成管理工作平臺使用用戶的分組。這樣在給用戶授予權限時不用為每一個用戶授予權限,只需為一個用戶組授予權限就可以了。角色數(shù)據(jù)類中主要有角色號,角色名,角色描述三個屬性。如表1角色(Role)數(shù)據(jù)類所示:
3.3 用戶(User)
用戶(User)主要是使用管理工作平臺中的每一個用戶。用戶數(shù)據(jù)類中主要有用戶ID,用戶姓名,用戶密碼等屬性。如表3用戶(User)數(shù)據(jù)類所示:
3.4 操作(Operator)
操作(Operator)主要完成的是管理工作平臺中的每一個角色對資源進行增刪改查操作的對應。其中增刪改查又是通過位操作來完成了,也就是說我們在設計操作時通過一個數(shù)值來標識所具有的權限。因此主要有操作ID,角色ID,資源ID,操作數(shù)等屬性。如表3.4操作(Operator)數(shù)據(jù)類所示:
3.5 角色用戶(UserRole)
角色用戶(UserRole)主要完成的是管理工作平臺中的每一個用戶所屬的角色。因此角色用戶(UserRole)數(shù)據(jù)類有主要有角色用戶ID,角色ID,UID,操作數(shù)等屬性。如表5操作(Operator)數(shù)據(jù)類所示:
3.6 具體實現(xiàn)
根據(jù)設計的五大數(shù)據(jù)類分別編寫基本的增、刪、改、查四大操作,用戶利用用戶名登錄后,在角色用戶類中找到相對應的角色ID,然后再根據(jù)角色ID在操作數(shù)據(jù)類中對應的可操作的資源ID,最后在資源數(shù)據(jù)類中找到可操作資源信息,最后就得到了用戶實際可操作的資源,完成了數(shù)據(jù)權限的動態(tài)讀取。其實現(xiàn)的部分核心代碼如下:
//mysql數(shù)據(jù)類,完成數(shù)據(jù)庫的連接,基本操作的實現(xiàn)
include_once 'MySQLDAL/MySQL.class.php';
//c代表添加權限,r代表讀取權限,u代表修改權限,d代表刪除權限
$sql = "select RID, aclState&1 c, aclState&2 r, aclState&4 u, aclState&8 d from t_acl where role_id='".$_GET["RoleID"]."'";
$mysql = CreateMySQL();
$res = $mysql->crud($sql);
$result = "";
while ($r=mysql_fetch_array($res))
{
$result .= $r["RID"] . ":" . $r["c"] . ":" . $r["r"] . ":" . $r["u"] . ":" . $r["d"] . ",";
}
$result = substr($result,0,strlen($result)-1);
echo $result;
4 結束語
根據(jù)程序運行結果可以看出,設計的程序能實現(xiàn)權限的自動讀取的需求,能完成基于角色的權限管理。大大提高了系統(tǒng)的靈活性和可控性,可實現(xiàn)基于細粒度的權限管理。
參考文獻:
[1] Bootstrap 3中文文檔.Bootstrap的使用 [EB/OL]. http://v3.bootcss.com/css/.
[2] Luke Welling, Laura Thomsona. PHP and MySQL Web Developent[M]. 吳欣, 譯. 北京: 機械工業(yè)出版社, 2009: 100-115.
[3] 百度百科. 位運算 [EB/OL]. http://baike.baidu.com/view /379209.htm.