摘要:在ORACLE數(shù)據(jù)庫中存在的應(yīng)用系統(tǒng)用戶和數(shù)據(jù)庫系統(tǒng)用戶權(quán)限管理不統(tǒng)一的問題,給數(shù)據(jù)庫的安全帶來了安全隱患,通過RBAC技術(shù)實(shí)現(xiàn)了前臺(tái)應(yīng)用系統(tǒng)用戶與后臺(tái)ORACLE數(shù)據(jù)庫用戶權(quán)限的統(tǒng)一。
關(guān)鍵詞:ORACLE數(shù)據(jù)庫;RBAC;權(quán)限
中圖分類號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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 引言
數(shù)據(jù)庫安全涉及到許多方面的問題,比如針對(duì)某些信息訪問的法律、政策等方面的問題,以及不同級(jí)別的安全控制問題。數(shù)據(jù)庫安全是指防止利用軟、硬件技術(shù)對(duì)數(shù)據(jù)的非授權(quán)訪問、修改和破壞[1]。一個(gè)完善的安全解決方案需要具備以下三個(gè)方面的內(nèi)容:1)明確指出需要系統(tǒng)實(shí)現(xiàn)的安全策略;2)具體實(shí)施安全策略的機(jī)制;3)確保安全機(jī)制實(shí)現(xiàn)安全策略的方法[2]。
訪問控制限制了訪問者和執(zhí)行程序可以進(jìn)行的操作,這樣通過訪問控制可以防止安全漏洞隱患。訪問控制的目的就是要用戶只能進(jìn)行經(jīng)過授權(quán)的有關(guān)數(shù)據(jù)庫操作。傳統(tǒng)的訪問控制有兩種模型:自主訪問控制(Discretionary Access Control,DAC)和強(qiáng)制訪問控制(Mandatory Access Control,MAC)。DAC是基于訪問者身份或所屬工作組來進(jìn)行訪問控制的一種手段。訪問自主是指,具有某種訪問特權(quán)的訪問者可以向其他訪問者傳遞該種訪問許可(也許是非直接的)[3]。MAC則要求所有用戶遵守由數(shù)據(jù)庫管理員建立的規(guī)則[1],MAC也被稱作格式訪問控制(Lattice-BasedAccess Control),對(duì)于不同類型的信息采取不同層次的安全策略。針對(duì)不同類型的數(shù)據(jù)來進(jìn)行訪問授權(quán)。MAC是基于被訪問對(duì)象的信息敏感程度(如用標(biāo)簽來表示)以及這些敏感信息可以賦予該訪問主體的訪問權(quán)限來進(jìn)行權(quán)限控制的。另外一個(gè)近年得到廣泛關(guān)注的模型就是基于角色訪問控制(Role-Based Access Control,RBAC),現(xiàn)在普遍認(rèn)為RBAC比傳統(tǒng)的DAC和MAC更具發(fā)展前景。
2 基于角色訪問控制(RBAC)
RBAC不僅在研究領(lǐng)域,也在潛在用戶和軟件商中引起廣泛關(guān)注。RBAC被認(rèn)為是一種更普遍適用的訪問控制模型,可以有效表達(dá)和鞏固特定事務(wù)的安全策略,有效緩解傳統(tǒng)安全管理處理瓶頸問題。
RBAC的基本思想是:它包含三個(gè)實(shí)體,即用戶(user),角色(role)和權(quán)限(authority)。它通過角色將用戶和存取權(quán)限邏輯分離,根據(jù)用戶在組織中的不同工作崗位或職位設(shè)置角色,授予角色相應(yīng)的存取權(quán)限,再為用戶分配角色。用戶首先要成為相應(yīng)角色的成員,才能獲得該角色對(duì)應(yīng)的權(quán)限。這大大簡化了授權(quán)管理,角色可以根據(jù)組織中不同的工作創(chuàng)建,然后根據(jù)用戶的責(zé)任和資格分配角色。用戶可以輕松地進(jìn)行角色轉(zhuǎn)換,而隨著新應(yīng)用和新系統(tǒng)的增加,角色可以分配更多的權(quán)限,也可以根據(jù)需要撤銷相應(yīng)的權(quán)限。實(shí)際表明把管理員權(quán)限局限在改變用戶角色,比賦予管理員更改角色權(quán)限更安全。
用戶與角色、角色與權(quán)限之間都是n—n的關(guān)系。如圖1:
一個(gè)安全的數(shù)據(jù)庫系統(tǒng)需要可靠的訪問控制做為保障。在數(shù)據(jù)庫系統(tǒng)用戶增多、需求更復(fù)雜的情況下,傳統(tǒng)的DAC和MAC已經(jīng)不能滿足許多企業(yè)或組織的安全需求,基于角色的訪問控制RBAC便明顯地顯示出其優(yōu)越性。
RBAC最突出的優(yōu)點(diǎn)就在于系統(tǒng)管理員能夠按照部門、企業(yè)的安全政策劃分不同的角色,執(zhí)行特定的任務(wù)。一個(gè)RBAC系統(tǒng)建立起來后主要的管理工作即為授權(quán)或取消用戶的角色,用戶的職責(zé)變化時(shí)只需要改變角色即可改變其權(quán)限;當(dāng)組織的功能變化或演進(jìn)時(shí),則只需刪除角色的舊功能,增加新功能,或定義新角色,而不必更新每一個(gè)用戶的權(quán)限設(shè)置。這極大地簡化了授權(quán)管理,使對(duì)信息資源的訪問控制能更好地適應(yīng)特定單位的安全策略。
在實(shí)際應(yīng)用中,采用角色功能防止系統(tǒng)出現(xiàn)的安全“漏洞”,在這種方式下,用戶采用自己的標(biāo)識(shí)和口令注冊(cè),但未得到授權(quán)的角色前,沒有操縱數(shù)據(jù)庫的任何權(quán)限,而授權(quán)用戶使用的角色是埋在應(yīng)用程序中的,只有應(yīng)用程序才知道角色的名稱和口令。在應(yīng)用系統(tǒng)之外,用戶可以連接到Oracle,但沒有激活相應(yīng)的角色,也不能做任何事情,而開發(fā)人員不知道用戶的標(biāo)識(shí)和口令,他沒有辦法登錄到Oracle。下面給出具體實(shí)現(xiàn)過程。
3 用戶角色管理策略及其實(shí)現(xiàn)
3.1 用戶角色的創(chuàng)建和使用
假設(shè)用戶Yuan在工作中有對(duì)工資表account.Paytable (account是表Paytable的擁有者)查詢和更新的權(quán)限,而這些權(quán)限不直接授予Yuan,而是構(gòu)造一個(gè)角色(比如考勤員checkerrole),這個(gè)角色恰好適合于Yuan,再將角色授予Yuan,但角色在激活時(shí)需要口令,該口令不對(duì)Yuan公開。每個(gè)用戶需要一個(gè)缺省的角色,是用戶連接到Oracle時(shí)的缺省角色,這個(gè)角色只有CONNECT權(quán)限,假設(shè)為defaultrole。
a)設(shè)定各種角色及其權(quán)限
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)創(chuàng)建用戶
CREATE USER Yuan IDENTIFIED BY Yuan;
c)授權(quán)
GRANT checkerrole to Yuan;
GRANT defaultrole to Yuan;
d)設(shè)定用戶缺省的角色
ALTER USER Yuan DEFAULT Role defaultrole;
e)注冊(cè)過程
CONNECT Yuan/Yuan@oracle;
此時(shí)用戶只有缺省角色的權(quán)限。
f)激活角色
SET Role checkerrole IDENTIFIED BY Yuan1980;
操作成功后,Yuan擁有checkerrole的權(quán)限。
3.2 應(yīng)用系統(tǒng)用戶和數(shù)據(jù)庫用戶權(quán)限的統(tǒng)一
利用Power Bulider開發(fā)用戶安全管理界面,要求在應(yīng)用系統(tǒng)中建立用戶表、功能項(xiàng)表、權(quán)限分配表。但是所建立的用戶不是獨(dú)立的,而是與數(shù)據(jù)庫安全管理機(jī)制中的用戶相關(guān)聯(lián),即在應(yīng)用系統(tǒng)中向用戶表中添加用戶的同時(shí),在數(shù)據(jù)庫中也創(chuàng)建一個(gè)相應(yīng)的與之對(duì)應(yīng)的用戶,使用戶的登錄及用戶權(quán)限的驗(yàn)證通過數(shù)據(jù)庫系統(tǒng)來完成。這樣,不僅能充分利用數(shù)據(jù)庫本身所提供的強(qiáng)大的安全管理機(jī)制,又將數(shù)據(jù)庫的安全管理集成于應(yīng)用系統(tǒng)中。
其安全管理功能結(jié)構(gòu)示意圖如圖2:
用PB實(shí)現(xiàn)用戶安全管理,主要是如何實(shí)現(xiàn)PB與ORACLE DBMS接口,并通過PB界面來設(shè)置ORACLE DBMS。但是,由于PB腳本不支持ORACLE提供的Grant授權(quán)命令,動(dòng)態(tài)的SQL語句也不支持帶有變量的Grant命令。故采用如下技巧實(shí)現(xiàn)在PB腳本下編程,以實(shí)現(xiàn)PB與ORACLE DBMS接口。為簡單起見,只用上面提到的checkerrole和defaultrole兩種角色。
1)在應(yīng)用系統(tǒng)中建立一個(gè)新用戶,并將此用戶注冊(cè)到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一用戶權(quán)限
ds=\"CREATE USER\"+yhmc+\"IDENTIFIED BY\"+yhcl
EXECUTE IMMEDIATE :ds;//將用戶名和口令注冊(cè)到ORACLE
if yhqx='defaultrole' then //為用戶授權(quán)角色
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刪除一個(gè)用戶,腳本如下:
yhmc=datawindowname.getitemstring(row,'yhmc')
ds=\"drop user\"+yhmc
execute immediate:ds;
上述腳本在建立一個(gè)用戶的同時(shí),也為其賦予了相應(yīng)的角色。刪除一個(gè)用戶只需將該用戶名刪除即可,修改一個(gè)用戶名、口令或其權(quán)限時(shí),為簡單起見,先將該用戶刪除,再重新建立即可。系統(tǒng)開發(fā)人員利用上述程序片斷,根據(jù)您想開發(fā)系統(tǒng)的需求對(duì)其進(jìn)行適當(dāng)?shù)匦薷?,即可開發(fā)出極其漂亮的數(shù)據(jù)庫安全管理界面,使數(shù)據(jù)庫安全管理界面與PB應(yīng)用融為一體。
4 結(jié)束語
本文針對(duì)ORACLE數(shù)據(jù)庫系統(tǒng)中存在的應(yīng)用系統(tǒng)用戶和數(shù)據(jù)庫系統(tǒng)用戶權(quán)限管理不統(tǒng)一的問題,通過角色管理技術(shù)實(shí)現(xiàn)了前臺(tái)應(yīng)用系統(tǒng)用戶與后臺(tái)ORACLE數(shù)據(jù)庫用戶權(quán)限的統(tǒng)一,從而增強(qiáng)了ORACLE數(shù)據(jù)庫的安全性。
參考文獻(xiàn):
[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],計(jì)算機(jī)應(yīng)用研究,2005(4):125-127.
[5] 曹天杰、張永平,管理信息系統(tǒng)中基于角色的訪問控制[J],計(jì)算機(jī)應(yīng)用,2001,21(8):21-23.