摘要 本文介紹了作者為了提高Oracle數據庫安全所進行 的一些有益嘗試。
要害詞 Oracle數據庫 安全
1. Oracle數據庫安全的幾個基本概念
1.1帳戶安全(Account Security)
要在數據庫中訪問數據,就必須訪問該數據庫的一個帳戶。每個帳戶必須指定一個口令。口 令是在帳戶建立的時候設置的,可由DBA或用戶進行修改。
1.2系統級權限(System-level PRivilege)
系統級權限可以建立從系統級權限全集到擴展的基本系統級的各類角色。比如,Connect,Re source和DBA就是分別提供給用戶,開發者及DBA的標準角色。
1.3對象安全性(Object Security)
用戶可以通過grant命令將自己創建的一些權限授予其他用戶使用,也可以給其他用戶授予 對對象授權的權限。例如,可以授予一個用戶擁有對本用戶表授予select 權限的權限。
1.4審計(Auditing)
Oracle具有審計發生在其內部的所有操作——包括注冊企圖,對象訪問和數據庫操作——的 能力。審計的結果存儲在數據庫的審計表中。
2. 應用實例與分析
在一些較大規模的Client/Server系統中,Client端的應用程序一般是通過主程序中的語句 實現與數據庫的連接。這種情況下,任何人打開源程序便能清楚了解數據庫的連接口令,這 就可能導致安全性問題。經常改變數據庫密碼是一個辦法,而若要改變數據庫用戶的密碼, 就需重新編寫相關程序,并對Client端的有關程序進行更新,對于Client端多而分散的系統 ,實際運作很不方便。能不能讓這些工作簡單易行一些呢?我們在工作中進行了一些嘗試。
我單位數據庫環境為Oracle7.3,開發工具是Develope2000。收費系統是我單位的核心系統之 一,占有極其重要的地位,其Client端分散在市區的數個營業點,通過城域網與主機(小型 機)相連。收費系統在數據庫中的用戶名為SFYY(收費應用)。
試驗的步驟是這樣的:
2.1在收費小型機Oracle系統的system用戶(DBA)下,創建新用戶test;
create user test
identified by carton
default tablespace dataspace1
quota 100K
2.2對test用戶授以權限;
grant create session to test;
grant resource to test;
2.3在test用戶下建立一個存儲函數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:=kkchr(100+to_number(substr(m,i,1)));
elsif instr('wxyz',substr(m,i,1),1,1)>0 then
kk:=kkchr(-8+ascii(substr(m,i,1)));
else
kk:=kkchr(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執行以下語句
SQL>select mmtranslate('eds2') from dual;
MMTRANSLATE('EDS2')
----------------------------------------
ihwf
利用DBA權限更改sfyy的密碼為上面語句的執行結果:
alter user sffy
identified by ihwf; ;
2.6修改應用程序,對于開發環境是Develope2000的程序來說,主要是修改主程序的on-lo gon觸發器:
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;
然后再利用觸發器WHEN-NEW-FROM-INSTANCE執行Callfrom或Newform等 命令,進入業務處理程序。這個主程序應當僅僅由治理員來把握,編譯之后將執行文件下發 到各收費點的Client端。
2.7在System用戶下,利用Oracle提供的pupbld.sql,建立表ProdUCtuserprofile,執行下面這樣的命令,限制在非開發狀態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狀態下,根本無法連接到TEST用 戶,而在 sfyy用戶下,delete命令將不能執行。當然,DBA可以改變這些設置。
3.
可以看出,通過上述的一系列處理,無須更新程序便能實現應用系統數據庫(本例中的sfyy) 密碼的定期或經常的改動,大大提高了維護效率。Test用戶的口令只有DBA把握;過程mmtra nslate的加密方式也可以經常改變。這些都保證了安全性。
另一方面,還要加強對源程序的治理,在Client端只存放執行程序。加強審計,發現異常現 象,及時處理。
通過這些手段,數據庫安全得到了更好保證。
MVision解決方案創新創先
Micron將于7月正式推出一套MVision計劃,專門幫助行業用戶和政府部門進行以下活 動:提 高他們的IT人員的能力,增加他們的財政來源,以及從事高收益的科技。MVision計劃的第 一階段包括:16項提高IT人員生產力的新的產品和服務;新的增加財政來源計劃和提供高科 技幫助。通常計算機供給商提供的以上各種項目只為被美國《財富》雜志評為的全美前500 名企業服務。而Micron為滿足行業用戶和政府部門的需求而為他們提供了上述項目,從而成 為這一行業中領導者。
Micron董事長兼CEO Jeol Krocher先生說:“Micron的MVision計劃的第一步的基礎是IT專 業人士和高級治理的直接輸入。它主要是為了讓行業部門和政府機構中的IT人員更加有步驟 、有效率的工作。通過MVision計劃,我們希望幫助我們的客戶減少配置PC機的運轉費用, 并利用高科技來進行他們的合作項目。這意味著用在用戶支持和治理上的IT預算和人員將會 減少。同時,也意味著將幫助我們的客戶提高技術水準。而這些技術能減少開支并提高機構 的效率。