我想通過這篇文章,提醒Oracle數據庫管理員,在規劃與實現Oracle數據庫安全性方面需要注意的地方,向他們提一些可行的建議。希望這些內容能夠幫助他們提高Oracle數據庫的安全性。
一、 鎖定不用的帳戶。
在Oracle安裝的時候,會自動建立幾個默認的數據庫服務器帳戶。當Oracle數據庫安裝完成后,系統會自動把某些帳戶鎖定或者設置為過期;但同時也會打開一些有用的帳戶,如SYS、SYSTEM、SYSMAN等等。如果安裝了數據庫實例,可能還會建立scott帳戶。為了Oracle數據庫的安全性考慮,我們最好能夠把一些不用的帳戶鎖定掉。一般來說,若是系統提供的帳戶,我們只需要保留SYS、SYSTEM、SYSMAN這三個用戶名即可,其他的系統自建的用戶名可以鎖定掉。
另外,在數據庫維護中,我們還會建立自己的管理員帳戶。如筆者在維護數據庫系統的時候,就不喜歡用系統提供的管理員帳戶。而是會先利用他們的帳戶登陸進去,然后建立自己喜歡的用戶名與密碼。所以,當數據庫系統理有你前任數據庫管理員留下來的用戶名而你又不想用的時候,請各位高抬貴手,及早把它鎖定掉。這可以提高數據庫的安全性。可惜的是,筆者有時候給客戶進行數據庫有償維護的時候,發現數據庫中有很多莫名其妙的管理員帳戶。問他們數據庫管理員這些帳戶有什么用時,他們說是前任留下來的,他們也不知道。對于這些帳戶,筆者的建議是,盡快的把他們鎖定掉或者過期掉。不然的話,對于Oracle系統來說,是一顆定時炸彈。一旦爆炸,就會給這個數據庫帶來不可換回的損失。
二、 實施口令管理。
這準確來說,不是筆者的建議,而是Oracle官方的建議。我在參加Oracle培訓的時候,他們的教授就跟我們說,應該將數據庫所提供的基本口令管理準則,如口令長度歷史紀錄、復雜性等等,應用于所有的用戶密碼中,并要求所有的管理員帳戶養成定期更改密碼的習慣。
依賴于密碼管理的數據庫系統來說,需要保證密碼在任何時候都是保密的。可是在實際工作中,密碼可能會泄露,如在輸入密碼的時候被人看到或者被人利用密碼竊取工具竊取到密碼等等。故為了更好的控制數據庫的安全,Oracle數據庫中通過概要文件來保障數據庫口令的安全。這可以說是Oracle數據庫的一個獨創的功能了。
具體的來說,Oracle在口令管理上,有如下規則。
1、口令歷史。這跟微軟操作系統中的口令歷史一致。主要是用來指定在一個時間間隔內用戶不能使用相同的密碼。我們可以利用CREATE語句創建一個用戶概要文件,雖然利用REUSE_TIME與REUSE_MAX參數指定間隔天數。TIME參數用來指定在多久后可以采用相同的密碼;而MAX參數則指定,在可以再次使用當前口令之前,用戶必須改變該口令的次數。
2、口令的期限。若一個密碼時間越長,其泄露的幾率越長。最理想的狀態是,每用過一次后,就修改一次密碼。但是,這顯然不怎么容易實現。所以,我們需要根據一定的情況,設置一個密碼有效的最長期限。當這個期限過后,原來的密碼就失效,用戶必須重新修改密碼。我們可以利用CREATE語句為某一個用戶創建一個概要文件,然后利用LIFE?_TIME參數指定口令的最長有效時間。當然,也可以為到期的密碼指定延長期。當用戶的口令到期后,用戶第一次登陸數據庫的時候,用戶需要輸入延長期。在這個延長期內,用戶仍然可以使用原有的密碼,只是每次登錄數據庫,系統都會提醒用戶修改密碼,直到延長期結束。當延長期滿后,用戶必須更改原有的口令。否則的話,系統會一直提醒用戶更改密碼,而拒絕登陸系統。另外,口令的期限往往跟上面的口令歷史一起使用,從而把密碼的安全性提高到一個新的層次。
3、密碼的復雜性管理。我們都知道,純數字的密碼要比數字、字符混合的密碼好破解的多。故為了加強用戶名密碼的安全性,設置一定的復雜性密碼管理規則是必須的。Oracle數據庫系統中,提供了很多的密碼復雜性檢查。如可以規定密碼的最小長度;可以設置密碼不能與用戶名相同;可以規定密碼中必須包含字符、數字、標點符號等等;還可以設定密碼不能為簡單的單詞以及密碼的前面幾個字符不能夠相同等等。通過這些復雜性管理,可以最大程度的保障密碼的安全性。如此的話,若想要通過數字字典破解密碼的話,難度就會比較大。不過,密碼雖然復雜了,但是用戶最好不要隨便拿張紙記一下,這樣的話,密碼仍然容易泄露。最好把密碼記熟了,然后把紙撕掉或者燒掉,以確保密碼不會被泄露。
三、 帳戶自動鎖定。
我們在利用銀行卡帳戶的時候,當密碼輸入錯誤超過一定的次數時,這卡就會被鎖住。其實,在Oracle數據庫中,也可以實現這個目的。當某個管理員帳戶,或者普通的帳戶,其失敗的登陸次數超過了我們指定的次數時,服務器就會自動鎖定那個用戶帳號。
一般來說,我們只需要給管理員帳戶設置自動鎖定策略即可。因為相對于普通用戶來說,由于其不怎么熟悉操作,所以密碼輸入錯誤的幾率會比較高。若我們為他們設置密碼鎖定策略的話,那我們很大一部分工作就是給他們進行解鎖。所以,沒有特殊必要的話,不要給普通帳戶設置自動鎖定策略,或者說,至少要把這個密碼輸入錯誤次數設置的高一點。
另外,若是前臺應用程序直接連接到數據庫的話,也會有用戶名與密碼。這個用戶名與密碼筆者建議是不要設置密碼鎖定策略,否則的話,我們維護起來會很麻煩。
四、 合理分配終端用戶的權限。
終端用戶就是企業員工實際用的帳戶。針對普通員工的權限控制,一般有兩種方式。一是通過前臺的應用軟件來控制;二是通過數據庫的用戶權限來實現。
如果我們是利用數據庫自身的權限管理器來管理帳戶權限的話,則我們需要考慮對終端用戶進行分組,然后為這些用戶組創建不同的角色。數據庫管理員可以先給每個角色賦予必要的權限,然后再將這些角色賦予相應的用戶組。也就是說,我們不建議直接給用戶賦予相關的權限,而是通過角色與組來管理數據庫的訪問權限。在特殊的情況下,如某個權限只有一個特定的帳戶具有時,則可以直接把權限賦予這個帳戶。否則的話,我們不建議給用戶直接賦予權限。
上一篇 新手站長應該從借鑒中快速成長