招生熱線
0755-86191118 0755-86191118
我的位置: 首頁 > 學(xué)習(xí)專區(qū) > 數(shù)據(jù)庫技術(shù) > Oracle數(shù)據(jù)庫安全

Oracle數(shù)據(jù)庫安全

2013-07-01 10:53:08
來源:
[導(dǎo)讀] 導(dǎo)讀:隨著計算機的普及以及網(wǎng)絡(luò)的發(fā)展,數(shù)據(jù)庫已經(jīng)不再僅僅是那些程序員所專有的話題,更是被很多人所熟悉的,數(shù)據(jù)安全已經(jīng)不再是以前的老

導(dǎo)讀:隨著計算機的普及以及網(wǎng)絡(luò)的發(fā)展,數(shù)據(jù)庫已經(jīng)不再僅僅是那些程序員所專有的話題,更是被很多人所熟悉的,數(shù)據(jù)安全已經(jīng)不再是以前的“老生長談”,也更不是以前書本上那些“可望不可及”的條條框框。同時,安全問題也是現(xiàn)今最為熱門的話題,也是企業(yè)比較關(guān)心的問題,可見安全問題的重要性,那就大家一起來探討一下Oracle數(shù)據(jù)庫安全問題。

以下就數(shù)據(jù)庫系統(tǒng)不被非法用戶侵入這個問題作進一步的闡述。

一、組和安全性:

在操作系統(tǒng)下建立用戶組也是保證數(shù)據(jù)庫安全性的一種有效方法。Oracle程序為了安全性目的一般分為兩類:一類所有的用戶都可執(zhí)行,另一類只DBA可執(zhí)行。在Unix環(huán)境下組設(shè)置的配置文件是/etc/group,關(guān)于這個文件如何配置,請參閱Unix的有關(guān)手冊,以下是保證安全性的幾種方法:

(1)在安裝Oracle Server前,創(chuàng)建數(shù)據(jù)庫管理員組(DBA)而且分配root和Oracle軟件擁有者的用戶ID給這個組。DBA能執(zhí)行的程序只有710權(quán)限。在安裝過程中SQL*DBA系統(tǒng)權(quán)限命令被自動分配給DBA組。

(2)允許一部分Unix用戶有限制地訪問Oracle服務(wù)器系統(tǒng),增加一個由授權(quán)用戶組的Oracle組,確保給Oracle服務(wù)器實用例程Oracle組ID,公用的可執(zhí)行程序,比如SQL*Plus,SQL*forms等,應(yīng)該可被這組執(zhí)行,然后該這個實用例程的權(quán)限為710,它將允許同組的用戶執(zhí)行,而其他用戶不能。

(3)改那些不會影響數(shù)據(jù)庫安全性的程序的權(quán)限為711。(注:在我們的系統(tǒng)中為了安裝和調(diào)試的方便,Oracle數(shù)據(jù)庫中的兩個具有DBA權(quán)限的用戶Sys和System的缺省密碼是manager。為了您數(shù)據(jù)庫系統(tǒng)的安全,我們強烈建議您該掉這兩個用戶的密碼,具體操作如下:

在SQL*DBA下鍵入:

alter user sys indentified by password;

alter user system indentified by password;

其中password為您為用戶設(shè)置的密碼。

二、Oracle服務(wù)器實用例程的安全性:

以下是保護Oracle服務(wù)器不被非法用戶使用的幾條建議:

(1) 確保$ORACLE_HOME/bin目錄下的所有程序的擁有權(quán)歸Oracle軟件擁有者所有;

(2) 給所有用戶實用便程(sqiplus,sqiforms,exp,imp等)711權(quán)限,使服務(wù)器上所有的用戶都可訪問Oracle服務(wù)器;

(3) 給所有的DBA實用例程(比如SQL*DBA)700權(quán)限。Oracle服務(wù)器和Unix組當(dāng)訪問本地的服務(wù)時,您可以通過在操作系統(tǒng)下把Oracle服務(wù)器的角色映射到Unix的組的方式來使用Unix管理服務(wù)器的安全性,這種方法適應(yīng)于本地訪問。

在Unix中指定Oracle服務(wù)器角色的格式如下:

ora_sid_role[_dla]

其中 sid 是您Oracle數(shù)據(jù)庫的oracle_sid;

role 是Oracle服務(wù)器中角色的名字;

d (可選)表示這個角色是缺省值;a (可選)表示這個角色帶有WITH ADMIN選項,您只可以把這個角色授予其他角色,不能是其他用戶。

以下是在/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”表示這個組的密碼;數(shù)字1表示這個組的ID;接下來的是這個組的成員。前兩行是Oracle服務(wù)器角色的例子,使用test作為sid,osoper和osdba作為Oracle服務(wù)器角色的名字。osoper是分配給用戶的缺省角色,osdba帶有WITH ADMIN選項。為了使這些數(shù)據(jù)庫角色起作用,您必須shutdown您的數(shù)據(jù)庫系統(tǒng),設(shè)置Oracle數(shù)據(jù)庫參數(shù)文件initORACLE_SID.ora中os_roles參數(shù)為True,然后重新啟動您的數(shù)據(jù)庫。如果您想讓這些角色有connect internal權(quán)限,運行orapwd為這些角色設(shè)置密碼。當(dāng)您嘗試connect internal時,您鍵入的密碼表示了角色所對應(yīng)的權(quán)限。

SQL*DBA命令的安全性:

如果您沒有SQL*PLUS應(yīng)用程序,您也可以使用SQL*DBA作SQL查權(quán)限相關(guān)的命令只能分配給Oracle軟件擁有者和DBA組的用戶,因為這些命令被授予了特殊的系統(tǒng)權(quán)限。

(1) startup

(2) shutdown

(3) connect internal

數(shù)據(jù)庫文件的安全性:

Oracle軟件的擁有者應(yīng)該這些數(shù)據(jù)庫文件($ORACLE_HOME/dbs/*.dbf)設(shè)置這些文件的使用權(quán)限為0600:文件的擁有者可讀可寫,同組的和其他組的用戶沒有寫的權(quán)限。

Oracle軟件的擁有者應(yīng)該擁有包含數(shù)據(jù)庫文件的目錄,為了增加安全性,建議收回同組和其他組用戶對這些文件的可讀權(quán)限。

網(wǎng)絡(luò)安全性:

當(dāng)處理網(wǎng)絡(luò)安全性時,以下是額外要考慮的幾個問題。

(1) 在網(wǎng)絡(luò)上使用密碼在網(wǎng)上的遠端用戶可以通過加密或不加密方式鍵入密碼,當(dāng)您用不加密方式鍵入密碼時,您的密碼很有可能被非法用戶截獲,導(dǎo)致破壞了系統(tǒng)的安全性。

(2) 網(wǎng)絡(luò)上的DBA權(quán)限控制您可以通過下列兩種方式對網(wǎng)絡(luò)上的DBA權(quán)限進行控制:

A 設(shè)置成拒絕遠程DBA訪問;

B 通過orapwd給DBA設(shè)置特殊的密碼。[nextpage]

三、建立安全性策略:

系統(tǒng)安全性策略

(1)管理數(shù)據(jù)庫用戶:數(shù)據(jù)庫用戶是訪問Oracle數(shù)據(jù)庫信息的途徑,因此,應(yīng)該很好地維護管理數(shù)據(jù)庫用戶的安全性。按照數(shù)據(jù)庫系統(tǒng)的大小和管理數(shù)據(jù)庫用戶所需的工作量,數(shù)據(jù)庫安全性管理者可能只是擁有create,alter,或drop數(shù)據(jù)庫用戶的一個特殊用戶,或者是擁有這些權(quán)限的一組用戶,應(yīng)注意的是,只有那些值得信任的個人才應(yīng)該有管理數(shù)據(jù)庫用戶的權(quán)限。

(2) 用戶身份確認:數(shù)據(jù)庫用戶可以通過操作系統(tǒng),網(wǎng)絡(luò)服務(wù),或數(shù)據(jù)庫進行身份確認,通過主機操作系統(tǒng)進行用戶身份認證的優(yōu)點有:

A 用戶能更快,更方便地聯(lián)入數(shù)據(jù)庫;

B 通過操作系統(tǒng)對用戶身份確認進行集中控制:如果操作系統(tǒng)與數(shù)據(jù)庫用戶信息一致,Oracle無須存儲和管理用戶名以及密碼;

C 用戶進入數(shù)據(jù)庫和操作系統(tǒng)審計信息一致。

(3) 操作系統(tǒng)安全性

A 數(shù)據(jù)庫管理員必須有create和delete文件的操作系統(tǒng)權(quán)限;

B 一般數(shù)據(jù)庫用戶不應(yīng)該有create或delete與數(shù)據(jù)庫相關(guān)文件的操作系統(tǒng)權(quán)限;

C 如果操作系統(tǒng)能為數(shù)據(jù)庫用戶分配角色,那么安全性管理者必須有修改操作系統(tǒng)帳戶安全性區(qū)域的操作系統(tǒng)權(quán)限。

數(shù)據(jù)的安全性策略:

數(shù)據(jù)的生考慮應(yīng)基于數(shù)據(jù)的重要性。如果數(shù)據(jù)不是很重要,那么數(shù)據(jù)的安全性策略可以稍稍放松一些。然而,如果數(shù)據(jù)很重要,那么應(yīng)該有一謹慎的安全性策略,用它來維護對數(shù)據(jù)對象訪問的有效控制。

用戶安全性策略:

(1) 一般用戶的安全性:

A 密碼的安全性:如果用戶是通過數(shù)據(jù)庫進行用戶身份的確認,那么建議使用密碼加密的方式與數(shù)據(jù)庫進行連接。這種方式的設(shè)置方法如下:

在客戶端的oracle.ini文件中設(shè)置ora_encrypt_login數(shù)為true;

在服務(wù)器端的initORACLE_SID.ora文件中設(shè)置dbling_encypt_login參數(shù)為true。

B 權(quán)限管理:對于那些用戶很多,應(yīng)用程序和數(shù)據(jù)對象很豐富的數(shù)據(jù)庫,應(yīng)充分利用“角色”這個機制所帶的方便性對權(quán)限進行有效管理。對于復(fù)雜的系統(tǒng)環(huán)境,“角色”能大大地簡化權(quán)限的理。

(2) 終端用戶的安全性:

您必須針對終端用戶制定安全性策略。例如,對于一個有很多用戶的大規(guī)模數(shù)據(jù)庫,安全性管理者可以決定用戶組分類為這些用戶組創(chuàng)建用戶角色,把所需的權(quán)限和應(yīng)用程序角色授予每一個用戶角色,以及為用戶分配相應(yīng)的用戶角色。當(dāng)處理特殊的應(yīng)用要求時,安全性管理者也必須明確地把一些特定的權(quán)限要求授予給用戶。您可以使用“角色”對終端用戶進行權(quán)限管理。

數(shù)據(jù)庫管理者安全性策略:

(1) 保護作為sys和system用戶的連接:

當(dāng)數(shù)據(jù)庫創(chuàng)建好以后,立即更改有管理權(quán)限的sys和system用戶的密碼,防止非法用戶訪問數(shù)據(jù)庫。當(dāng)作為sys和system用戶連入數(shù)據(jù)庫后,用戶有強大的權(quán)限用各種方式對數(shù)據(jù)庫進行改動。

(2) 保護管理者與數(shù)據(jù)庫的連接:

應(yīng)該只有數(shù)據(jù)庫管理者能用管理權(quán)限連入數(shù)據(jù)庫,當(dāng)以sysdba或startup,shutdown,和recover或數(shù)據(jù)庫對象(例如create,drop,和delete等)進行沒有任何限制的操作。

(3) 使用角色對管理者權(quán)限進行管理

應(yīng)用程序開發(fā)者的安全性策略:

(1) 應(yīng)用程序開發(fā)者和他們的權(quán)限數(shù)據(jù)庫應(yīng)用程序開發(fā)者是唯一一類需要特殊權(quán)限組完成自己工作的數(shù)據(jù)庫用戶。開發(fā)者需要諸如create table,create,procedure等系統(tǒng)權(quán)限,然而,為了限制開發(fā)者對數(shù)據(jù)庫的操作,只應(yīng)該把一些特定的系統(tǒng)權(quán)限授予開發(fā)者。

(2) 應(yīng)用程序開發(fā)者的環(huán)境:

A 程序開發(fā)者不應(yīng)與終端用戶競爭數(shù)據(jù)庫資源;

B 用程序開發(fā)者不能損害數(shù)據(jù)庫其他應(yīng)用產(chǎn)品。

(3) free和controlled應(yīng)用程序開發(fā)應(yīng)用程序開發(fā)者有一下兩種權(quán)限:

A free development

應(yīng)用程序開發(fā)者允許創(chuàng)建新的模式對象,包括table,index,procedure,package等,它允許應(yīng)用程序開發(fā)者開發(fā)獨立于其他對象的應(yīng)用程序。

B controlled development

應(yīng)用程序開發(fā)者不允許創(chuàng)建新的模式對象。所有需要table,indes procedure等都由數(shù)據(jù)庫管理者創(chuàng)建,它保證了數(shù)據(jù)庫管理者能完全控制數(shù)據(jù)空間的使用以及訪問數(shù)據(jù)庫信息的途徑。但有時應(yīng)用程序開發(fā)者也需這兩種權(quán)限的混和。

(4) 應(yīng)用程序開發(fā)者的角色和權(quán)限數(shù)據(jù)庫安全性管理者能創(chuàng)建角色來管理典型的應(yīng)用程序開發(fā)者的權(quán)限要求。

A create系統(tǒng)權(quán)限常常授予給應(yīng)用程序開發(fā)者,以至于他們能創(chuàng)建他的數(shù)據(jù)對象。

B 數(shù)據(jù)對象角色幾乎不會授予給應(yīng)用程序開發(fā)者使用的角色。

(5) 加強應(yīng)用程序開發(fā)者的空間限制作為數(shù)據(jù)庫安全性管理者,您應(yīng)該特別地為每個應(yīng)用程序開發(fā)者設(shè)置以下的一些限制:

A 開發(fā)者可以創(chuàng)建table或index的表空間;

B 在每一個表空間中,開發(fā)者所擁有的空間份額。應(yīng)用程序管理者的安全在有許多數(shù)據(jù)庫應(yīng)用程序的數(shù)據(jù)庫系統(tǒng)中,您可能需要一應(yīng)用程序管理者,應(yīng)用程序管理者應(yīng)負責(zé)起以下的任務(wù):

a)為每一個應(yīng)用程序創(chuàng)建角色以及管理每一個應(yīng)用程序的角色;

b)創(chuàng)建和管理數(shù)據(jù)庫應(yīng)用程序使用的數(shù)據(jù)對象;

c)需要的話,維護和更新應(yīng)用程序代碼和Oracle的存儲過程和程序包。

我相信有了以上的這些建議,作為一個Oracle的管理者絕對可以做好他本職的工作了。可是,我們再怎么努力,都始終得面對這樣一個現(xiàn)實,那就是Oracle畢竟是其他人開發(fā)的,而我們卻在使用。所以,Oracle到底有多少漏洞--我想這個不是你和我所能解決的。不過既然作為一篇討論Oracle數(shù)據(jù)安全的文章,我認為有必要把漏洞這一塊也寫進去,畢竟這也是“安全”必不可少的一部分。呵呵!

所以……

Oracle漏洞舉例:

1.Oracle9iAS Web Cache遠程拒絕服務(wù)攻擊漏洞

2.Oracle 8.1.6的oidldapd中的漏洞

3.Oracle 9iAS OracleJSP 泄漏JSP文件信息漏洞

4.Linux ORACLE 8.1.5漏洞

總而言之一句話--“Oracle數(shù)據(jù)安全是一個博大而又精深的話題;如果你沒有耐心,就永遠不會得到它的精髓之所在。”希望大家能深入的去學(xué)習(xí)這篇文章,學(xué)好了也是百一而無一害。

評論
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
久久中文字幕无吗一二区 | 在线播放国产精品大片 | 中文字幕视频综合网 | 婷婷六月亚洲中文字幕不卡 | 日本在线看片免费人成视频 | 日本韩国床震无遮挡高潮hd |