Oracle資料安全面面觀(二)
最後更新:2017-02-28
來源:互聯網
上載者:User
oracle|安全|資料 (二)來自內部的另外一個隱患--使用者管理以及密碼問題
在這裡,其實作為一個差不多點的資料庫管理員都很清楚,Oracle資料庫本身就使用了很多種手段來加強資料庫的安全性,經常見到的就有密碼,角色,許可權等等。那麼我們就從最簡單的DBSNMP說起:
Oralce資料庫如果採用典型安裝後,自動建立了一個叫做DBSNMP的使用者,該使用者負責運行Oracle系統的智能代理(Intelligent Agent),該使用者的預設密碼也是“DBSNMP”。如果忘記修改該使用者的口令,任何人都可以通過該使用者存取資料庫系統。現在我們來看一下該使用者具有哪些許可權和角色,然後來分析一下該使用者對資料庫系統可能造成的損失。
啟動SQL/PLUS程式,使用該使用者登入進入:
SQL> select * from session_privs; CREATE SESSION ALTER SESSION UNLIMITED TABLESPACE CREATE TABLE CREATE CLUSTER CREATE SYNONYM CREATE PUBLIC SYNONYM CREATE VIEW CREATE SEQUENCE CREATE DATABASE LINK CREATE PROCEDURE CREATE TRIGGER ANALYZE ANY CREATE TYPE CREATE OPERATOR CREATE INDEXTYPE
可以看到該使用者不是SYS或SYSTEM系統管理使用者,然而,它卻具有兩個系統級許可權:UNLIMITED TABLESPACE和CREATE PUBLIC SYNONYM。
看到這兩個許可權你應該馬上想到,這些都是安全隱患,尤其是UNLIMITED TABLESPACE,它是破壞資料庫系統的攻擊點之一。如果這時候你還依然認為,即使有人利用這個沒有修改的口令登入進資料庫也造成不了什麼損失的話,我就不得不提醒你:該使用者具有UNLIMITED TABLESPACE的系統許可權,它可以寫一個小的指令碼,然後惡意將系統用垃圾資料填滿,這樣資料庫系統也就無法運行,並將直接導致最終的癱瘓。目前很多資料庫系統都要求7X24的工作,如果出現了系統用垃圾資料填滿的情況,那麼,等資料庫系統復原時,恐怕不可挽回的損失已經造成了。
可是除了DBSNMP還有很多其他的使用者,怎麼辦呢?讓我們先看一下目前普遍存在於Oracle資料庫中的使用者管理問題:
(1)許可權過大:對ORACLE資料庫編程和瀏覽的一般使用者常常具有DBA (資料庫管理員許可權),能對資料庫系統做任何修改或刪除。
(2)安全性差:很多ORACLE使用者預設儲存位置都在系統資料表空間,這樣不僅影響系統的正常工作,而且不同使用者的資料資訊互相影響、透明,保密性差。隨著資料的不斷加入,有可能使整個資料庫系統崩潰。
(3)密碼有規律:在ORACLE調試初期形成的使用者名稱和密碼一致的不良習慣保留到現在;系統使用者SYS和SYSTEM的密碼也眾所皆知。
知道了這些普遍的“毛病”,我們怎麼做呢?下面是我的一些建議:
(1)ORACLE DBA (資料庫管理員)的規範
·SUN Solaris作業系統下ORACLE使用者密碼應嚴格保密,絕不該把密碼設成ORACLE;並指定專門的資料庫管理員定期修改。
·ORACLE初始化建立的SYS和SYSTEM系統管理員使用者密碼應由原來MANAGER改成別的不易被記憶的字串。
·ORACLE WEB SERVER的管理連接埠具備DBA瀏覽資料庫的能力,因此其管理者ADMIN的密碼也應保密,不該把密碼設成MANAGER;並指定專門的資料庫管理員定期修改。
·ORACLE DBA最好在SUN SPARC伺服器控制台上用視窗式介面實現管理。前提是ORACLE使用者啟動伺服器,然後在視窗式命令列下輸入SVRMGRM,即啟動了ORACLE SERVER MANAGER菜單式管理;用SYSDBA身份登入後,就可做資料庫系統維護工作了
(2)SQL*PLUS編程使用者的規範
·儲存結構的規範
考慮到用SQL*PLUS編程可實現各行各業、各公司、各部門多種多樣的應用需求,我們的SQL*PLUS編程使用者也應該朝這個方向規範:不同種類的應用必須有不同的使用者;不同種類的應用必須有不同的儲存位置,包括物理檔案、預設資料表空間、暫存資料表空間的建立和規劃:當準備編寫某一較大規模(從ORACLE資料量和面向使用者量考慮)應用程式時,首先應該建立一個邏輯的儲存位置-資料表空間,同時定義物理檔案的存放路徑和所佔硬碟的大小。
①、物理檔案預設的存放路徑在/oracle_home/dbs下,在命令列下用UNIX指令df -k 可查看硬碟資來源資料分割的使用方式。如果oracle_home使用率達90‰以上,而且有一個或多個較為空白閑的硬碟資來源資料分割可以利用,我們最好把物理檔案預設的存放路徑改到較為空白閑的硬碟資來源資料分割路徑下。在此路徑下我們可以這樣規劃資源物理檔案的儲存:
xxx資料表空間
xxx行業/ xxx公司/ xxx 部門/ xxx 服務.dbf
DEMO資料表空間
default_datafile_home1/col /elec/sys4/demo1.dbf
default_datafile_home1/col /elec/sys4/demo2.dbf
公司系統四部摹擬示範系統物理檔案
HUMAN資料表空間
default_datafile_home1/col/elec/human/human.dbf
公司人事部人事管理系統物理檔案
BOOK資料表空間
default_datafile_home1/col/elec/book/book.dbf
公司資料室圖書管理系統物理檔案
QUESTION資料表空間
default_datafile_home1/col/elec/client/question.dbf
公司客戶服務部問題庫系統物理檔案
PC資料表空間
default_datafile_home1/col/chaoxun/client/pc.dbf
公司PC機售後服務系統物理檔案
……資料表空間
default_datafile_home2/……………………………
等等
說明:其中default_datafile_home1指oracle_home/dbs;default_datafile_home2指較為空白閑的硬碟資來源資料分割路徑。
②、物理檔案的大小根據應用系統的資料量、資料對象、程式包的多少來定。一般用於摹擬示範的小系統,資料表空間初始的物理檔案為2M即能滿足要求,如果資訊量滿,還可以增加物理檔案,擴充資料表空間(每次擴充大小也可暫訂為2M);一般實際啟動並執行應用系統可適當增加資料表空間初始的物理檔案大小,但也不要一次分配太大(因為不易回收空間,卻易擴充空間),這也需要根據具體情況具體分析:資訊量大、需長時間儲存的應用在條件允許情況下,資料表空間可以大到幾百M甚至上G;資訊量小、短期經常重新整理的應用,資料表空間可以控制在2M以下。
③、資料表空間的名稱應該採用同系統應用相似的英文字元或字元縮寫,資料表空間所對應的一個或多個物理檔案名稱也應有相關性。不同使用者所處的預設資料表空間不同,儲存的資訊就不能互相訪問。這比把所有使用者資訊都儲存在系統資料表空間,安全性大大提高了。如果用ORACLE WEB SERVER管理連接埠建立的使用者,其預設和暫存資料表空間一定是系統資料表空間,DBA切記要改變使用者的預設資料表空間。暫存資料表空間存放臨時資料區段,處理一些排序、合并等中間操作,根據實際應用的需求可以把它們放在專門建立的資料表空間裡;如果系統資料表空間大,也可以把它們放在系統資料表空間。使用者建立的資料索引最好和資料檔案分開存放在不同資料表空間,以減少資料爭用和提高響應速度。