摘要:在ORACLE數據庫中存在的應用系統用戶和數據庫系統用戶權限管理不統一的問題,給數據庫的安全帶來了安全隱患,通過RBAC技術實現了前臺應用系統用戶與后臺ORACLE數據庫用戶權限的統一。
關鍵詞:ORACLE數據庫;RBAC;權限
中圖分類號:TP311.13 文獻標識碼:A 文章編號:1009-3044(2009)05-1041-03
Using Management of Role to Enhance The Security of ORACLE Database
YUAN Si-da
(Zhejiang Industry Polytechnic College,Shaoxing 312000,China)
Abstract:The question of the inconsistency of users anthority management for application system and database management system in ORACLE database,bring insecurity to database,through the using of RBAC technology,implements consistant users authority for front and back system.
Key words:oracle database;rbac; anthority
1 引言
數據庫安全涉及到許多方面的問題,比如針對某些信息訪問的法律、政策等方面的問題,以及不同級別的安全控制問題。數據庫安全是指防止利用軟、硬件技術對數據的非授權訪問、修改和破壞[1]。一個完善的安全解決方案需要具備以下三個方面的內容:1)明確指出需要系統實現的安全策略;2)具體實施安全策略的機制;3)確保安全機制實現安全策略的方法[2]。
訪問控制限制了訪問者和執行程序可以進行的操作,這樣通過訪問控制可以防止安全漏洞隱患。訪問控制的目的就是要用戶只能進行經過授權的有關數據庫操作。傳統的訪問控制有兩種模型:自主訪問控制(Discretionary Access Control,DAC)和強制訪問控制(Mandatory Access Control,MAC)。DAC是基于訪問者身份或所屬工作組來進行訪問控制的一種手段。訪問自主是指,具有某種訪問特權的訪問者可以向其他訪問者傳遞該種訪問許可(也許是非直接的)[3]。MAC則要求所有用戶遵守由數據庫管理員建立的規則[1],MAC也被稱作格式訪問控制(Lattice-BasedAccess Control),對于不同類型的信息采取不同層次的安全策略。針對不同類型的數據來進行訪問授權。MAC是基于被訪問對象的信息敏感程度(如用標簽來表示)以及這些敏感信息可以賦予該訪問主體的訪問權限來進行權限控制的。另外一個近年得到廣泛關注的模型就是基于角色訪問控制(Role-Based Access Control,RBAC),現在普遍認為RBAC比傳統的DAC和MAC更具發展前景。
2 基于角色訪問控制(RBAC)
RBAC不僅在研究領域,也在潛在用戶和軟件商中引起廣泛關注。RBAC被認為是一種更普遍適用的訪問控制模型,可以有效表達和鞏固特定事務的安全策略,有效緩解傳統安全管理處理瓶頸問題。
RBAC的基本思想是:它包含三個實體,即用戶(user),角色(role)和權限(authority)。它通過角色將用戶和存取權限邏輯分離,根據用戶在組織中的不同工作崗位或職位設置角色,授予角色相應的存取權限,再為用戶分配角色。用戶首先要成為相應角色的成員,才能獲得該角色對應的權限。這大大簡化了授權管理,角色可以根據組織中不同的工作創建,然后根據用戶的責任和資格分配角色。用戶可以輕松地進行角色轉換,而隨著新應用和新系統的增加,角色可以分配更多的權限,也可以根據需要撤銷相應的權限。實際表明把管理員權限局限在改變用戶角色,比賦予管理員更改角色權限更安全。
用戶與角色、角色與權限之間都是n—n的關系。如圖1:
一個安全的數據庫系統需要可靠的訪問控制做為保障。在數據庫系統用戶增多、需求更復雜的情況下,傳統的DAC和MAC已經不能滿足許多企業或組織的安全需求,基于角色的訪問控制RBAC便明顯地顯示出其優越性。
RBAC最突出的優點就在于系統管理員能夠按照部門、企業的安全政策劃分不同的角色,執行特定的任務。一個RBAC系統建立起來后主要的管理工作即為授權或取消用戶的角色,用戶的職責變化時只需要改變角色即可改變其權限;當組織的功能變化或演進時,則只需刪除角色的舊功能,增加新功能,或定義新角色,而不必更新每一個用戶的權限設置。這極大地簡化了授權管理,使對信息資源的訪問控制能更好地適應特定單位的安全策略。
在實際應用中,采用角色功能防止系統出現的安全“漏洞”,在這種方式下,用戶采用自己的標識和口令注冊,但未得到授權的角色前,沒有操縱數據庫的任何權限,而授權用戶使用的角色是埋在應用程序中的,只有應用程序才知道角色的名稱和口令。在應用系統之外,用戶可以連接到Oracle,但沒有激活相應的角色,也不能做任何事情,而開發人員不知道用戶的標識和口令,他沒有辦法登錄到Oracle。下面給出具體實現過程。
3 用戶角色管理策略及其實現
3.1 用戶角色的創建和使用
假設用戶Yuan在工作中有對工資表account.Paytable (account是表Paytable的擁有者)查詢和更新的權限,而這些權限不直接授予Yuan,而是構造一個角色(比如考勤員checkerrole),這個角色恰好適合于Yuan,再將角色授予Yuan,但角色在激活時需要口令,該口令不對Yuan公開。每個用戶需要一個缺省的角色,是用戶連接到Oracle時的缺省角色,這個角色只有CONNECT權限,假設為defaultrole。
a)設定各種角色及其權限
CREATE Role checkerrole IDENTIFIED BY Yuan1980;
CREATE Role defaultrole IDENTIFIED BY defaultrole;
GRANT SELECT,UPDATE ON account.paytable To checkerrole;
GRANT CONNECT TO defaultrole;
b)創建用戶
CREATE USER Yuan IDENTIFIED BY Yuan;
c)授權
GRANT checkerrole to Yuan;
GRANT defaultrole to Yuan;
d)設定用戶缺省的角色
ALTER USER Yuan DEFAULT Role defaultrole;
e)注冊過程
CONNECT Yuan/Yuan@oracle;
此時用戶只有缺省角色的權限。
f)激活角色
SET Role checkerrole IDENTIFIED BY Yuan1980;
操作成功后,Yuan擁有checkerrole的權限。
3.2 應用系統用戶和數據庫用戶權限的統一
利用Power Bulider開發用戶安全管理界面,要求在應用系統中建立用戶表、功能項表、權限分配表。但是所建立的用戶不是獨立的,而是與數據庫安全管理機制中的用戶相關聯,即在應用系統中向用戶表中添加用戶的同時,在數據庫中也創建一個相應的與之對應的用戶,使用戶的登錄及用戶權限的驗證通過數據庫系統來完成。這樣,不僅能充分利用數據庫本身所提供的強大的安全管理機制,又將數據庫的安全管理集成于應用系統中。
其安全管理功能結構示意圖如圖2:
用PB實現用戶安全管理,主要是如何實現PB與ORACLE DBMS接口,并通過PB界面來設置ORACLE DBMS。但是,由于PB腳本不支持ORACLE提供的Grant授權命令,動態的SQL語句也不支持帶有變量的Grant命令。故采用如下技巧實現在PB腳本下編程,以實現PB與ORACLE DBMS接口。為簡單起見,只用上面提到的checkerrole和defaultrole兩種角色。
1)在應用系統中建立一個新用戶,并將此用戶注冊到ORACLE DBMS,其腳本如下:
String ds,yhmc,yhcl,yhqx
yhmc=datawindowname.getitemstring(row,'yhmc') // yhmc—用戶名稱
yhcl=datawindowname.getitemstring(row,'yhcl')// yhkl一用戶口令
yhqx=datawindowname.getitemstring(row,'yhqx')// yhqx一用戶權限
ds=\"CREATE USER\"+yhmc+\"IDENTIFIED BY\"+yhcl
EXECUTE IMMEDIATE :ds;//將用戶名和口令注冊到ORACLE
if yhqx='defaultrole' then //為用戶授權角色
ds=\"grant CONNECT to\"+yhmc+“IDENTIFIED BY\"+yhcl
execute immediate:ds;
end if
if yhqx='checkerrole' then
ds=\"grant select,update to\"+yhmc+\"IDENTIFIED BY\"+yhcl
execute immediate:ds;
end if
2)從ORACLE DBMS刪除一個用戶,腳本如下:
yhmc=datawindowname.getitemstring(row,'yhmc')
ds=\"drop user\"+yhmc
execute immediate:ds;
上述腳本在建立一個用戶的同時,也為其賦予了相應的角色。刪除一個用戶只需將該用戶名刪除即可,修改一個用戶名、口令或其權限時,為簡單起見,先將該用戶刪除,再重新建立即可。系統開發人員利用上述程序片斷,根據您想開發系統的需求對其進行適當地修改,即可開發出極其漂亮的數據庫安全管理界面,使數據庫安全管理界面與PB應用融為一體。
4 結束語
本文針對ORACLE數據庫系統中存在的應用系統用戶和數據庫系統用戶權限管理不統一的問題,通過角色管理技術實現了前臺應用系統用戶與后臺ORACLE數據庫用戶權限的統一,從而增強了ORACLE數據庫的安全性。
參考文獻:
[1] Feilcis J.Secure database management syslerns[J],IEEE Pulenlials,1999,18(1):17-19.
[2] Jajudia S.Dalabase SecurilY and Privacy[J],ACM Computing Surveys,1996,28(1):129-131.
[3] Trusled Computer Security Evaluation Criteria[S],DOD 5200.28-STD,Department of Defense,1985.
[4] 汪厚祥、李卉,基于角色的訪問控制研究[J],計算機應用研究,2005(4):125-127.
[5] 曹天杰、張永平,管理信息系統中基于角色的訪問控制[J],計算機應用,2001,21(8):21-23.