數據庫安全性問題一直是圍繞著數據庫管理員的惡夢,數據庫數據的丟失
以及數據庫被非法用戶的侵入使得數據庫管理員身心疲憊不堪。本文圍繞數據
庫的安全性問題提出了一些安全性策略,希望對數據庫管理員有所幫助,不再
夜夜惡夢。數據庫安全性問題應包括兩個部分:
一、數據庫數據的安全
它應能確保當數據庫系統DownTime時,當數據庫數據存儲媒體被破
壞時以及當數據庫用戶誤操作時,數據庫數據信息不至丟失。
二、數據庫系統不被非法用戶侵入
它應盡可能地堵住潛在的各種漏洞,防止非法用戶利用它們侵入數據
庫系統。
對數據庫數據的安全問題,數據庫管理員可以參考有關系統雙機
熱備份功能以及數據庫的備份和恢復的資料。
以下就數據庫系統不被非法用戶侵入這個問題作進一步的闡述。
組和安全性:
在操作系統下建立用戶組也是保証數據庫安全性的一種有效方法。
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*Fo
rms等,應該可被這組執行,然該這個實用例程的權限為
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管理服
務器的安全性,這種方法適應本地訪問。
在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
帶有WITH ADMIN選項。為了使這些數據庫角色起作用,您必須shutdown
您的數據庫系統,設置Oracle數據庫參數文件initORACLE_SID.ora中
os_roles參數為True,然重新啟動您的數據庫。如果您想讓這些角色
有connect internal權限,運行orapwd為這些角色設置密碼。當您嘗
試connect internal時,您鍵入的密碼表示了角色所對應的權限。
SQL*DBA命令的安全性:
如果您沒有SQL*PLUS應用程序,您也可以使用SQL*DBA作SQL查權
限相關的命令只能分配給Oracle軟件擁有者和DBA組的用戶,因為這些
命令被授予了特殊的系統權限。
(1) startup
(2) shutdown
(3) connect internal
數據庫文件的安全性:
Oracle軟件的擁有者應該這些數據庫文件
($ORACLE_HOME/dbs/*.dbf)設置這些文件的使用權限為0600:文件的
擁有者可讀可寫,同組的和其他組的用戶沒有寫的權限。
Oracle軟件的擁有者應該擁有包含數據庫文件的目錄,為了增加
安全性,建議收回同組和其他組用戶對這些文件的可讀權限。
網絡安全性:
當處理網絡安全性時,以下是額外要考慮的幾個問題。
(1) 在網絡上使用密碼
在網上的遠端用戶可以通過加密或不加密方式鍵入密碼,
當您用不加密方式鍵入密碼時,您的密碼很有可能被非法用
戶截獲,導致破壞了系統的安全性。
(2) 網絡上的DBA權限控制
您可以通過下列兩種方式對網絡上的DBA權限進行控制:
A 設置成拒絕遠程DBA訪問;
B 通過orapwd給DBA設置特殊的密碼。
建立安全性策略:
系統安全性策略
(1) 管理數據庫用戶
數據庫用戶是訪問Oracle數據庫信息的途徑,因此,
應該很好地維護管理數據庫用戶的安全性。按照數據庫系統
的大小和管理數據庫用戶所需的工作量,數據庫安全性管理
者可能只是擁有create,alter,或drop數據庫用戶的一個
特殊用戶,或者是擁有這些權限的一組用戶,應注意的是,只
有那些值得信任的個人才應該有管理數據庫用戶的權限。
(2) 用戶身份確認
數據庫用戶可以通過操作系統,網絡服務,或數據庫進行
身份確認,通過主機操作系統進行用戶身份認証的優點有:
A 用戶能更快,更方便地聯入數據庫;
B 通過操作系統對用戶身份確認進行集中控制:如果操作
系統與數據庫用戶信息一致,那Oracle無須存儲和管
理用戶名以及密碼;
C 用戶進入數據庫和操作系統審計信息一致。
(3) 操作系統安全性
A 數據庫管理員必須有create和delete文件的操作系統權限;
B 一般數據庫用戶不應該有create或delete與數據庫相關文
件的操作系統權限;
C 如果操作系統能為數據庫用戶分配角色,那安全性管理者
必須有修改操作系統帳戶安全性區域的操作系統權限。
數據的安全性策略:
數據的生考慮應基數據的重要性。如果數據不是很重要,那數
據的安全性策略可以稍稍放鬆一些。然而,如果數據很重要,那應該
有一謹慎的安全性策略,用它來維護對數據對象訪問的有效控制。
用戶安全性策略:
(1) 一般用戶的安全性
A 密碼的安全性
如果用戶是通過數據庫進行用戶身份的確認,那建議
使用密碼加密的方式與數據庫進行連接。這種方式的設置方
法如下:
在客戶端的oracle.ini文件中設置
ora_encrypt_login數為true;
在服務器端的initORACLE_SID.ora文件中設置
dbling_encypt_login參數為true。
B 權限管理
對那些用戶很多,應用程序和數據對象很豐富的數據
庫,應充分利用“角色”這個機制所帶的方便性對權限進行
有效管理。對復雜的系統環境,“角色”能大大地簡化權
限的管理。
(2) 終端用戶的安全性
您必須針對終端用戶制定安全性策略。例如,對一個有
很多用戶的大規模數據庫,安全性管理者可以決定用戶組分類,
為這些用戶組創建用戶角色,把所需的權限和應用程序角色授
予每一個用戶角色,以及為用戶分配相應的用戶角色。當處理
特殊的應用要求時,安全性管理者也必須明確地把一些特定的
權限要求授予給用戶。您可以使用“角色”對終端用戶進行權
限管理。
數據庫管理者安全性策略:
(1) 保護作為sys和system用戶的連接
當數據庫創建好以,立即更改有管理權限的sys和system用
戶的密碼,防止非法用戶訪問數據庫。當作為sys和system用戶
連入數據庫,用戶有強大的權限用各種方式對數據庫進行改動。
(2) 保護管理者與數據庫的連接
應該只有數據庫管理者能用管理權限連入數據庫,當以sysdba
或startup,shutdown,和recover或數據庫對象(例如create,
drop,和delete等)進行沒有任何限制的操作。
(3) 使用角色對管理者權限進行管理
應用程序開發者的安全性策略:
(1) 應用程序開發者和他們的權限
數據庫應用程序開發者是唯一一類需要特殊權限組完成自己
工作的數據庫用戶。開發者需要諸如create table,create
procedure等系統權限,然而,為了限制開發者對數據庫的操作,
只應該把一些特定的系統權限授予開發者。
(2) 應用程序開發者的環境
A 程序開發者不應與終端用戶競爭數據庫資源;
B 用程序開發者不能損害數據庫其他應用產品。
(3) free和controlled應用程序開發
應用程序開發者有一下兩種權限:
A free development
應用程序開發者允許創建新的模式對象,包括table,index,
procedure,package等,它允許應用程序開發者開發獨立其
他對象的應用程序。
B controlled development
應用程序開發者不允許創建新的模式對象。所有需要table,
indes procedure等都由數據庫管理者創建,它保証了數據
庫管理者能完全控制數據空間的使用以及訪問數據庫信息的
途徑。但有時應用程序開發者也需這兩種權限的混和。
(4) 應用程序開發者的角色和權限
數據庫安全性管理者能創建角色來管理典型的應用程序開
發者的權限要求。
A create系統權限常常授予給應用程序開發者,以到
他們能創建他的數據對象。
B 數據對象角色幾乎不會授予給應用程序開發者使用的
角色。
(5) 加強應用程序開發者的空間限制
作為數據庫安全性管理者,您應該特別地為每個應用程
序開發者設置以下的一些限制:
A 開發者可以創建table或index的表空間;
B 在每一個表空間中,開發者所擁有的空間份額。應用程
序管理者的安全在有許多數據庫應用程序的數據庫系統
中,您可能需要一應用程序管理者,應用程序管理者應
負責以下的任務:
C 為每一個應用程序創建角色以及管理每一個應用程序
的角色;
D 創建和管理數據庫應用程序使用的數據對象;
E 需要的話,維護和更新應用程序代碼和Oracle的存儲
過程和程序包。
(http://www.fanqiang.com)
進入【UNIX論壇】
|