可以說Oracle數據庫安全性的相關問題是一直困擾著Oracle數據庫管理員的“八爪魚”,我們大家都知道數據庫的某些數據的丟失及數據庫被侵入這些相關的問題,使得可憐的數據庫管理員身心疲憊不堪。
圍繞數據庫的安全性問題提出了一些安全性策略,希望對數據庫管理員有所幫助。對於數據庫數據的安全問題,數據庫管理員可以參考有關系統雙機熱備份功能以及數據庫的備份和恢復的資料。
一、組和安全性:
在操作系統下建立用戶組也是保證Oracle數據庫安全性的一種有效方法。Oracle程序為了安全性目的一般分為兩類:一類所有的用戶都可執行,另一類只DBA可執行。在Unix環境下組設置的配置文件是/etc/group,關於這個文件如何配置,請參閱Unix的有關手冊。
保證安全性的幾種方法:
(1) 在安裝OracleServer前,創建數據庫管理員組(DBA)而且分配root和Oracle軟件擁有者的用戶ID給這個組。DBA能執行的程序只有710權限。在安裝過程中SQL*DBA系統權限命令被自動分配給DBA組。
(2) 允許一部分Unix用戶有限制地訪問Oracle服務器系統,增加一個由授權用戶組的Oracle組,確保給Oracle服務器實用例程Oracle組ID,公用的可執行程序,比如SQL*Plus,SQL*Fo
rms等,應該可被這組執行,然後該這個實用例程的權限為710,它將允許同組的用戶執行,而其他用戶不能。
(3) 改那些不會影響Oracle數據庫安全性的程序的權限為711。注:在我們的系統中為了安裝和調試的方便,Oracle數據庫中 的兩個具有DBA權限的用戶Sys和System的缺省密碼是manager。為了您數據庫系統的安全,我們強烈建議您該掉這兩個用戶的密碼,具體操作如下:
在SQL*DBA下鍵入:
- alter user sys indentifIEd by passWord;
- alter user system indentifIEd by passWord;
其中passWord為您為用戶設置的密碼。
Oracle服務器實用例程的安全性:
以下是保護Oracle服務器不被非法用戶使用的幾條建議:
(1) 確保$ORACLE_HOME/bin目錄下的所有程序的擁有權歸Oracle軟件擁有者所有;
(2) 給所有用戶實用便程(sqiplus,sqiforms,exp,imp等)711權限,使服務器上所有的用戶都可訪問Oracle服務器;
(3) 給所有的DBA實用例程(比如SQL*DBA)700權限。Oracle服務器和Unix組當訪問本地的服務器時,您可以通過在操作系統下把Oracle服務器的角色映射到Unix的組的方式來使用Unix管理服務器的安全性,這種方法適應於本地訪問。
在Unix中指定Oracle服務器角色的格式如下:
- ora_sid_role[_dla]
其中sid是您Oracle數據庫的Oracle_sid;
role 是Oracle服務器中角色的名字;
d (可選)表示這個角色是缺省值;
a (可選)表示這個角色帶有WITH ADMIN選項,
您只可以把這個角色授予其他角色,不能是其他用戶。
以下是在/etc/group文件中設置的例子:
- 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”表示這個組的密碼;數字1表示這個組的ID;接下來的是這個組的成員。前兩行是Oracle服務器角色的例子,使用test作為sid,osoper和osdba作為Oracle服務器角色的名字。
osoper是分配給用戶的缺省角色,osdba帶有WITHADMIN選項。為了使這些數據庫角色起作用,您必須shutdown您的數據庫系統,設置Oracle數據庫參數文件initORACLE_SID.ora中os_roles參數為True,然後重新啟動您的Oracle數據庫。如果您想讓這些角色有connectinternal權限,運行orapwd為這些角色設置密碼。當您嘗試connect internal時,您鍵入的密碼表示了角色所對應的權限。
SQL*DBA命令的安全性:
如果您沒有SQL*PLUS應用程序,您也可以使用SQL*DBA作SQL查權限相關的命令只能分配給Oracle軟件擁有者和DBA組的用戶,因為這些命令被授予了特殊的系統權限。
(1) startup
(2) shutdown
(3) connect internal
數據庫文件的安全性:
Oracle軟件的擁有者應該這些Oracle數據庫文件($ORACLE_HOME/dbs/*.dbf)設置這些文件的使用權限為0600:文件的擁有者可讀可寫,同組的和其他組的用戶沒有寫的權限。Oracle軟件的擁有者應該擁有包含數據庫文件的目錄,為了增加安全性,建議收回同組和其他組用戶對這些文件的可讀權限。
網絡安全性:
當處理網絡安全性時,以下是額外要考慮的幾個問題。
(1)在網絡上使用密碼在網上的遠端用戶可以通過加密或不加密方式鍵入密碼,當您用不加密方式鍵入密碼時,您的密碼很有可能被非法用 戶截獲,導致破壞了系統的安全性。
(2)網絡上的DBA權限控制您可以通過下列兩種方式對網絡上的DBA權限進行控制:
A 設置成拒絕遠程DBA訪問;
B 通過orapwd給DBA設置特殊的密碼。