隨著電腦的普及以及網路的發展,資料庫已經不再僅僅是那些程式員所專有的話題,更是被很多人所熟悉的,資料安全已經不再是以前的“老生長談”,也更不是以前書本上那些“可望不可及”的條條框框。同時,安全問題也是現今最為熱門的話題,也是企業比較關心的問題,可見安全問題的重要性,那就大家一起來探討一下Oracle資料庫安全問題。
以下就資料庫系統不被非法使用者侵入這個問題作進一步的闡述。
一、組和安全性:
在作業系統下建立使用者組也是保證資料庫安全性的一種有效方法。Oracle程式為了安全性目的一般分為兩類:一類所有的使用者都可執行,另一類只DBA可執行。在Unix環境下組設定的設定檔是/etc/group,關於這個檔案如何配置,請參閱Unix的有關手冊,以下是保證安全性的幾種方法:
(1)在安裝Oracle Server前,建立資料庫管理員組(DBA)而且分配root和Oracle軟體擁有者的使用者ID給這個組。DBA能執行的程式只有710許可權。在安裝過程中SQL*DBA系統許可權命令被自動分配給DBA組。
(2)允許一部分Unix使用者有限制地訪問Oracle伺服器系統,增加一個由授權使用者組的Oracle組,確保給Oracle伺服器實用常式Oracle組ID,公用的可執行程式,比如SQL*Plus,SQL*forms等,應該可被這組執行,然後該這個實用常式的許可權為710,它將允許同組的使用者執行,而其他使用者不能。
(3)改那些不會影響資料庫安全性的程式的許可權為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管理伺服器的安全性,這種方法適應於本地訪問。
1、在Unix中指定Oracle伺服器角色的格式如下:
ora_sid_role[_dla]
其中 sid 是您Oracle資料庫的oracle_sid;
role 是Oracle伺服器中角色的名字;
d (可選)表示這個角色是預設值;a (可選)表示這個角色帶有WITH ADMIN選項,您只可以把這個角色授予其他角色,不能是其他使用者。
2、以下是在/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帶有WITH ADMIN選項。為了使這些資料庫角色起作用,您必須shutdown您的資料庫系統,設定Oracle資料庫參數檔案initORACLE_SID.ora中os_roles參數為True,然後重新啟動您的資料庫。如果您想讓這些角色有connect internal許可權,運行orapwd為這些角色設定密碼。當您嘗試connect internal時,您鍵入的密碼錶示了角色所對應的許可權。
3、SQL*DBA命令的安全性:
如果您沒有SQL*PLUS應用程式,您也可以使用SQL*DBA作SQL查許可權相關的命令只能分配給Oracle軟體擁有者和DBA組的使用者,因為這些命令被授予了特殊的系統許可權。
(1) startup
(2) shutdown
(3) connect internal
4、資料庫檔案的安全性:
Oracle軟體的擁有者應該這些資料庫檔案($ORACLE_HOME/dbs/*.dbf)設定這些檔案的使用許可權為0600:檔案的擁有者可讀可寫,同組的和其他組的使用者沒有寫的許可權。
Oracle軟體的擁有者應該擁有包含資料庫檔案的目錄,為了增加安全性,建議收回同組和其他組使用者對這些檔案的可讀許可權。
5、網路安全性:
當處理網路安全性時,以下是額外要考慮的幾個問題。
(1) 在網路上使用密碼在網上的遠端使用者可以通過加密或不加密方式鍵入密碼,當您用不加密方式鍵入密碼時,您的密碼很有可能被非法使用者截獲,導致破壞了系統的安全性。
(2) 網路上的DBA許可權控制您可以通過下列兩種方式對網路上的DBA許可權進行控制:
A 設定成拒絕遠程DBA訪問;
B 通過orapwd給DBA設定特殊的密碼。[nextpage]
三、建立安全性策略:
1、系統安全性策略
(1)管理資料庫使用者:資料庫使用者是訪問Oracle資料庫資訊的途徑,因此,應該很好地維護管理資料庫使用者的安全性。按照資料庫系統的大小和管理資料庫使用者所需的工作量,資料庫安全性管理者可能只是擁有create,alter,或drop資料庫使用者的一個特殊使用者,或者是擁有這些許可權的一組使用者,應注意的是,只有那些值得信任的個人才應該有管理資料庫使用者的許可權。
(2) 使用者身份確認:資料庫使用者可以通過作業系統,網路服務,或資料庫進行身份確認,通過主機作業系統進行使用者身份認證的優點有:
A 使用者能更快,更方便地聯入資料庫;
B 通過作業系統對使用者身份確認進行集中控制:如果作業系統與資料庫使用者資訊一致,Oracle無須儲存和系統管理使用者名以及密碼;
C 使用者進入資料庫和作業系統審計資訊一致。
(3) 作業系統安全性
A 資料庫管理員必須有create和delete檔案的作業系統許可權;
B 一般資料庫使用者不應該有create或delete與資料庫相關檔案的作業系統許可權;
C 如果作業系統能為資料庫使用者指派角色,那麼安全性管理者必須有修改作業系統帳戶安全性地區的作業系統許可權。
2、資料的安全性策略:
資料的生考慮應基於資料的重要性。如果資料不是很重要,那麼資料的安全性策略可以稍稍放鬆一些。然而,如果資料很重要,那麼應該有一謹慎的安全性策略,用它來維護對資料對象訪問的有效控制。
3、使用者安全性策略: