Oracle數(shù)據(jù)庫(kù)的安全性管理策略的解決方案
可以說(shuō)Oracle數(shù)據(jù)庫(kù)安全性的相關(guān)問(wèn)題是一直困擾著Oracle數(shù)據(jù)庫(kù)管理員的“八爪魚”,我們大家都知道數(shù)據(jù)庫(kù)的某些數(shù)據(jù)的丟失及數(shù)據(jù)庫(kù)被侵入這些相關(guān)的問(wèn)題,使得可憐的數(shù)據(jù)庫(kù)管理員身心疲憊不堪。
圍繞數(shù)據(jù)庫(kù)的安全性問(wèn)題提出了一些安全性策略,希望對(duì)數(shù)據(jù)庫(kù)管理員有所幫助。對(duì)于數(shù)據(jù)庫(kù)數(shù)據(jù)的安全問(wèn)題,數(shù)據(jù)庫(kù)管理員可以參考有關(guān)系統(tǒng)雙機(jī)熱備份功能以及數(shù)據(jù)庫(kù)的備份和恢復(fù)的資料。
一、組和安全性:
在操作系統(tǒng)下建立用戶組也是保證Oracle數(shù)據(jù)庫(kù)安全性的一種有效方法。Oracle程序?yàn)榱税踩阅康囊话惴譃閮深悾阂活愃械挠脩舳伎蓤?zhí)行,另一類只DBA可執(zhí)行。在Unix環(huán)境下組設(shè)置的配置文件是/etc/group,關(guān)于這個(gè)文件如何配置,請(qǐng)參閱Unix的有關(guān)手冊(cè)。
保證安全性的幾種方法:
(1) 在安裝OracleServer前,創(chuàng)建數(shù)據(jù)庫(kù)管理員組(DBA)而且分配root和Oracle軟件擁有者的用戶ID給這個(gè)組。DBA能執(zhí)行的程序只有710權(quán)限。在安裝過(guò)程中SQL*DBA系統(tǒng)權(quán)限命令被自動(dòng)分配給DBA組。
(2) 允許一部分Unix用戶有限制地訪問(wèn)Oracle服務(wù)器系統(tǒng),增加一個(gè)由授權(quán)用戶組的Oracle組,確保給Oracle服務(wù)器實(shí)用例程Oracle組ID,公用的可執(zhí)行程序,比如SQL*Plus,SQL*Fo
rms等,應(yīng)該可被這組執(zhí)行,然后該這個(gè)實(shí)用例程的權(quán)限為710,它將允許同組的用戶執(zhí)行,而其他用戶不能。
(3) 改那些不會(huì)影響Oracle數(shù)據(jù)庫(kù)安全性的程序的權(quán)限為711。注:在我們的系統(tǒng)中為了安裝和調(diào)試的方便,Oracle數(shù)據(jù)庫(kù)中 的兩個(gè)具有DBA權(quán)限的用戶Sys和System的缺省密碼是manager。為了您數(shù)據(jù)庫(kù)系統(tǒng)的安全,我們強(qiáng)烈建議您該掉這兩個(gè)用戶的密碼,具體操作如下:
在SQL*DBA下鍵入:
- alter user sys indentified by password;
- alter user system indentified by password;
其中password為您為用戶設(shè)置的密碼。
Oracle服務(wù)器實(shí)用例程的安全性:
以下是保護(hù)Oracle服務(wù)器不被非法用戶使用的幾條建議:
(1) 確保$ORACLE_HOME/bin目錄下的所有程序的擁有權(quán)歸Oracle軟件擁有者所有;
(2) 給所有用戶實(shí)用便程(sqiplus,sqiforms,exp,imp等)711權(quán)限,使服務(wù)器上所有的用戶都可訪問(wèn)Oracle服務(wù)器;
(3) 給所有的DBA實(shí)用例程(比如SQL*DBA)700權(quán)限。Oracle服務(wù)器和Unix組當(dāng)訪問(wèn)本地的服務(wù)器時(shí),您可以通過(guò)在操作系統(tǒng)下把Oracle服務(wù)器的角色映射到Unix的組的方式來(lái)使用Unix管理服務(wù)器的安全性,這種方法適應(yīng)于本地訪問(wèn)。
在Unix中指定Oracle服務(wù)器角色的格式如下:
- ora_sid_role[_dla]
其中sid是您Oracle數(shù)據(jù)庫(kù)的oracle_sid;
role 是Oracle服務(wù)器中角色的名字;
d (可選)表示這個(gè)角色是缺省值;
a (可選)表示這個(gè)角色帶有WITH ADMIN選項(xiàng),
您只可以把這個(gè)角色授予其他角色,不能是其他用戶。
以下是在/etc/group文件中設(shè)置的例子:
- ora_test_osoper_d:NONE:1:jim,narry,scott
- ora_test_osdba_a:NONE:3:pat
- ora_test_role1:NONE:4:bob,jane,tom,mary,jim
- bin: NONE:5:root,oracle,dba
- root:NONE:7:root
詞組“ora_test_osoper_d”表示組的名字;詞組“NONE”表示這個(gè)組的密碼;數(shù)字1表示這個(gè)組的ID;接下來(lái)的是這個(gè)組的成員。前兩行是Oracle服務(wù)器角色的例子,使用test作為sid,osoper和osdba作為Oracle服務(wù)器角色的名字。
osoper是分配給用戶的缺省角色,osdba帶有WITHADMIN選項(xiàng)。為了使這些數(shù)據(jù)庫(kù)角色起作用,您必須shutdown您的數(shù)據(jù)庫(kù)系統(tǒng),設(shè)置Oracle數(shù)據(jù)庫(kù)參數(shù)文件initORACLE_SID.ora中os_roles參數(shù)為True,然后重新啟動(dòng)您的Oracle數(shù)據(jù)庫(kù)。如果您想讓這些角色有connectinternal權(quán)限,運(yùn)行orapwd為這些角色設(shè)置密碼。當(dāng)您嘗試connect internal時(shí),您鍵入的密碼表示了角色所對(duì)應(yīng)的權(quán)限。
SQL*DBA命令的安全性:
如果您沒(méi)有SQL*PLUS應(yīng)用程序,您也可以使用SQL*DBA作SQL查權(quán)限相關(guān)的命令只能分配給Oracle軟件擁有者和DBA組的用戶,因?yàn)檫@些命令被授予了特殊的系統(tǒng)權(quán)限。
(1) startup
(2) shutdown
(3) connect internal
數(shù)據(jù)庫(kù)文件的安全性:
Oracle軟件的擁有者應(yīng)該這些Oracle數(shù)據(jù)庫(kù)文件($ORACLE_HOME/dbs/*.dbf)設(shè)置這些文件的使用權(quán)限為0600:文件的擁有者可讀可寫,同組的和其他組的用戶沒(méi)有寫的權(quán)限。Oracle軟件的擁有者應(yīng)該擁有包含數(shù)據(jù)庫(kù)文件的目錄,為了增加安全性,建議收回同組和其他組用戶對(duì)這些文件的可讀權(quán)限。
網(wǎng)絡(luò)安全性:
當(dāng)處理網(wǎng)絡(luò)安全性時(shí),以下是額外要考慮的幾個(gè)問(wèn)題。
(1)在網(wǎng)絡(luò)上使用密碼在網(wǎng)上的遠(yuǎn)端用戶可以通過(guò)加密或不加密方式鍵入密碼,當(dāng)您用不加密方式鍵入密碼時(shí),您的密碼很有可能被非法用 戶截獲,導(dǎo)致破壞了系統(tǒng)的安全性。
(2)網(wǎng)絡(luò)上的DBA權(quán)限控制您可以通過(guò)下列兩種方式對(duì)網(wǎng)絡(luò)上的DBA權(quán)限進(jìn)行控制:
A 設(shè)置成拒絕遠(yuǎn)程DBA訪問(wèn);
B 通過(guò)orapwd給DBA設(shè)置特殊的密碼。
【編輯推薦】