- 相關(guān)推薦
提高Oracle數(shù)據(jù)庫應(yīng)用系統(tǒng)安全的舉例與分析?
趙晉 王維民?
(合肥市電信局計算中心)??
摘要 本文介紹了作者為了提高Oracle數(shù)據(jù)庫安全所進行 的一些有益嘗試。?
關(guān)鍵詞 Oracle數(shù)據(jù)庫 安全??
1. Oracle數(shù)據(jù)庫安全的幾個基本概念?
1.1帳戶安全(Account Security)?
要在數(shù)據(jù)庫中訪問數(shù)據(jù),就必須訪問該數(shù)據(jù)庫的一個帳戶。每個帳戶必須指定一個口令。口 令是在帳戶建立的時候設(shè)置的,可由DBA或用戶進行修改。?
1.2系統(tǒng)級權(quán)限(System-level Privilege)?
系統(tǒng)級權(quán)限可以建立從系統(tǒng)級權(quán)限全集到擴展的基本系統(tǒng)級的各類角色。比如,Connect,Re source和DBA就是分別提供給用戶,開發(fā)者及DBA的標準角色。?
1.3對象安全性(Object Security)?
用戶可以通過grant命令將自己創(chuàng)建的一些權(quán)限授予其他用戶使用,也可以給其他用戶授予 對對象授權(quán)的權(quán)限。例如,可以授予一個用戶擁有對本用戶表授予select 權(quán)限的權(quán)限。?
1.4審計(Auditing)?
Oracle具有審計發(fā)生在其內(nèi)部的所有操作——包括注冊企圖,對象訪問和數(shù)據(jù)庫操作——的 能力。審計的結(jié)果存儲在數(shù)據(jù)庫的審計表中。?
2. 應(yīng)用實例與分析?
在一些較大規(guī)模的Client/Server系統(tǒng)中,Client端的應(yīng)用程序一般是通過主程序中的語句 實現(xiàn)與數(shù)據(jù)庫的連接。這種情況下,任何人打開源程序便能清楚了解數(shù)據(jù)庫的連接口令,這 就可能導(dǎo)致安全性問題。經(jīng)常改變數(shù)據(jù)庫密碼是一個辦法,而若要改變數(shù)據(jù)庫用戶的密碼, 就需重新編寫相關(guān)程序,并對Client端的有關(guān)程序進行更新,對于Client端多而分散的系統(tǒng) ,實際運作很不方便。能不能讓這些工作簡單易行一些呢?我們在工作中進行了一些嘗試。 ?
我單位數(shù)據(jù)庫環(huán)境為Oracle7.3,開發(fā)工具是Develope2000。收費系統(tǒng)是我單位的核心系統(tǒng)之 一,占有極其重要的地位,其Client端分散在市區(qū)的數(shù)個營業(yè)點,通過城域網(wǎng)與主機(小型 機)相連。收費系統(tǒng)在數(shù)據(jù)庫中的用戶名為SFYY(收費應(yīng)用)。?
試驗的步驟是這樣的:?
2.1在收費小型機Oracle系統(tǒng)的system用戶(DBA)下,創(chuàng)建新用戶test;?
create user test?
identified by carton?
default tablespace dataspace1?
quota 100K?
2.2對test用戶授以權(quán)限;?
grant create session to test;?
grant resource to test;?
2.3在test用戶下建立一個存儲函數(shù)mmtranslate,它其實是一個加密程序。下面是一個簡 單的例子。?
function mmtranslate(m varchar2)?
return varchar2?
as?
i number(2);?
kk varchar2(10);?
begin?
kk:=′′;?
i:=1;?
loop?
if i<=length(m) then?
if instr(′1234567890′,substr(m,i,1),1,1)>0 then?
kk:=kk||chr(100+to_number(substr(m,i,1)));?
elsif instr('wxyz',substr(m,i,1),
1,1)>0 then?
kk:=kk||chr(-8+ascii(substr(m,i,1)));?
else?
kk:=kk||chr(4+ascii(substr(m,i,1)));?
end if;?
else?
exit;?
end if;?
i:=i+1;?
end loop;?
return kk;?
exception?
when others then?
return ′-1′;?
end;?
2.4在test用戶下建表mmtest并插入記錄。?
create table mmtest?
(usnamevarchar2(6),------用戶名稱?
mimavarchar2(6)------加密前的密碼?
);?
insert into mmtest values( 'sfyy','eds2');?
commit;
2.5執(zhí)行以下語句?
SQL>select mmtranslate('eds2') from dual;?
MMTRANSLATE('EDS2')?
----------------------------------------?
ihwf?
利用DBA權(quán)限更改sfyy的密碼為上面語句的執(zhí)行結(jié)果:?
alter user sffy?
identified by ihwf; ;?
2.6修改應(yīng)用程序,對于開發(fā)環(huán)境是Develope2000的程序來說,主要是修改主程序的on-lo gon觸發(fā)器:?
declare?
mm varchar2(6);?
begin?
logon('test','carton');?
select mima into mm from mmtest where usname='sfyy';?
mm:=mmtranslate(mm);?
logout;?
logon('sfyy',mm);?
end;?
然后再利用觸發(fā)器WHEN-NEW-FROM-INSTANCE執(zhí)行Callfrom或Newform等 命令,進入業(yè)務(wù)處理程序。這個主程序應(yīng)當僅僅由管理員來掌握,編譯之后將執(zhí)行文件下發(fā) 到各收費點的Client端。?
2.7在System用戶下,利用Oracle提供的pupbld.sql,建立表Productuserprofile,執(zhí)行下面這樣的命令,限制在非開發(fā)狀態(tài)Sql命令的使用,例如?
insert into productuserprofile?
(product,userid,attribute,charvalue) values?
('SQL*Plus','TEST','CONNECT','DISABLED');?
insert into productuserprofile?
(product,userid,attribute,charvalue) values?
('SQL*Plus','SFYY','DELETE','DISABLED');這樣,在SQL狀態(tài)下,根本無法連接到TEST用 戶,而在 sfyy用戶下,delete命令將不能執(zhí)行。當然,DBA可以改變這些設(shè)置。?
3.?
可以看出,通過上述的一系列處理,無須更新程序便能實現(xiàn)應(yīng)用系統(tǒng)數(shù)據(jù)庫(本例中的sfyy) 密碼的定期或經(jīng)常的改動,大大提高了維護效率。Test用戶的口令只有DBA掌握;過程mmtra nslate的加密方式也可以經(jīng)常改變。這些都保證了安全性。?
另一方面,還要加強對源程序的管理,在Client端只存放執(zhí)行程序。加強審計,發(fā)現(xiàn)異,F(xiàn) 象,及時處理。?
通過這些手段,數(shù)據(jù)庫安全得到了更好保證。?
MVision解決方案創(chuàng)新創(chuàng)先?
Micron將于7月正式推出一套MVision計劃,專門幫助行業(yè)用戶和政府部門進行以下活 動:提 高他們的IT人員的能力,增加他們的財政來源,以及從事高收益的科技。MVision計劃的第 一階段包括:16項提高IT人員生產(chǎn)力的新的產(chǎn)品和服務(wù);新的增加財政來源計劃和提供高科 技幫助。通常計算機供應(yīng)商提供的以上各種項目只為被美國《財富》雜志評為的全美前500 名企業(yè)服務(wù)。而Micron為滿足行業(yè)用戶和政府部門的需求而為他們提供了上述項目,從而成 為這一行業(yè)中領(lǐng)導(dǎo)者。?
Micron董事長兼CEO Jeol Krocher先生說:“Micron的MVision計劃的第一步的基礎(chǔ)是IT專 業(yè)人士和高級管理的直接輸入。它主要是為了讓行業(yè)部門和政府機構(gòu)中的IT人員更加有步驟 、有效率的工作。通過MVision計劃,我們希望幫助我們的客戶減少配置PC機的運轉(zhuǎn)費用, 并利用高科技來進行他們的合作項目。這意味著用在用戶支持和管理上的IT預(yù)算和人員將會 減少。同時,也意味著將幫助我們的客戶提高技術(shù)水準。而這些技術(shù)能減少開支并提高機構(gòu) 的效率。
【提高Oracle數(shù)據(jù)庫應(yīng)用系統(tǒng)安全的舉例與分析?】相關(guān)文章:
函數(shù)的應(yīng)用舉例08-17
解直角三形應(yīng)用舉例08-17
數(shù)學(xué)教案-函數(shù)的應(yīng)用舉例08-17
上學(xué)期 2.9 函數(shù)的應(yīng)用舉例08-17
如何提高學(xué)生應(yīng)用題分析解答能力08-05
Oracle觸發(fā)器在MIS 開發(fā)中的應(yīng)用08-06
淺談提高學(xué)生分析和解答應(yīng)用題的能力08-24