天天看點

oracle11g資料庫安全加強須謹慎

oracle11g資料庫安全加強須謹慎

資料庫安全配置中,需要做相關的安全加強工作。以确認資料庫的安全,但是,有些時候,操作不當或者資料庫業務賬号修改密碼後,而程式的連接配接資料庫的配置封裝在jar裡,如果jar内的連接配接資料庫的配置資訊沒有做相應的修改的話。就會對資料庫的此業務賬号造成嚴重的後果。

是以,真正了解Oracle安全資料庫使用者的狀态,就顯得尤為重要了。下面我們就看一下oracle資料庫中的多種使用者狀态。

ORACLE資料庫使用者有多種狀态,可檢視視圖USER_ASTATUS_MAP。

SQL> col status for a30

SQL> select * from user_astatus_map;

   STATUS#  STATUS

----------  ------------------------------

         0   OPEN

         1   EXPIRED

         2   EXPIRED(GRACE)

         4   LOCKED(TIMED)

         8   LOCKED

         5   EXPIRED & LOCKED(TIMED)

         6   EXPIRED(GRACE) & LOCKED(TIMED)

         9   EXPIRED & LOCKED

        10   EXPIRED(GRACE) & LOCKED

9 rows selected.

通過上面的查詢我們可以看到在Oracle中account總共有9種不同的狀态,對應dba_users視圖中的account_status字段。

下面我分别就每種狀态的含義和出現的情況做個簡單的說明,以便于今後的系統管理和維護。

分析上面的9種狀态不難看出,其實獨立的狀态隻有OPEN、EXPIRED、LOCKED、EXPIRED(GRACE)、LOCKED(TIMED) 5種形式。其他4種不過是前面幾種形式的組合而已。

或者也可以這樣了解:

以上的9種狀态可以分為兩大類:

1、基本狀态(前五種為基本狀态:0 OPEN、1 EXPIRED、2 EXPIRED(GRACE)、4 LOCKED(TIMED)、8 LOCKED);

2、組合狀态(後四種為組合狀态:5 EXPIRED & LOCKED(TIMED)、6 EXPIRED(GRACE) & LOCKED(TIMED)、9 EXPIRED & LOCKED、10 EXPIRED(GRACE) & LOCKED);

後四種的組合狀态可通過狀态号STATUS#獲得其狀态的兩個組合。掌握前五種即可。

具體詳細解釋請參考如下:

OPEN:   這個是大家最常見的,就是表示這個是可用的,沒有任何限制的帳戶

LOCKED:  表示這個帳戶被DBA鎖定. 一般通過alter user username account lock(unlock);

EXPIRED:  表示該帳戶被設定為密碼到期,要求使用者在下次logon的時候修改密碼(系統會在該account被設定為expire後的第一次登陸是提示你修改密碼)

EXPIRED(GRACE): 當設定了grace以後(第一次成功登入後到密碼到期後有多少天時間可改變密碼,在這段時間内,帳戶被提醒修改密碼并可以正常登陸,

    account_status顯示為EXPIRED(GRACE).

LOCKED(TIMED): 這種狀态表示失敗的login次數超過了FAILED_LOGIN_ATTEMPTS,被系統自動鎖定,需要注意的是,在Oracle 10g中,預設的DEFAULT值是10次.

EXPIRED & LOCKED:    表示此賬戶被設定為密碼到期且被鎖定。

EXPIRED(GRACE) & LOCKED(TIMED): 當account_stutus為EXPIRED(GRACE)的時候,使用者又嘗試失敗的login次數超過了FAILED_LOGIN_ATTEMPTS,被系統自動鎖定

EXPIRED & LOCKED(TIMED):  當設定了account expire後,使用者又失敗的login次數超過了FAILED_LOGIN_ATTEMPTS,被系統自動鎖定

EXPIRED(GRACE) & LOCKED:  使用者account_status為EXPIRED(GRACE)後,又被DBA 手工鎖定帳戶後的狀态

下面通過執行個體操作來說明:

本人對oracle資料庫的profile檔案進行如下安全設定:(其中的FAILED_LOGIN_ATTEMPTS 6是對使用者嘗試失敗的登入最大次數的限制,這裡隻允許最多嘗試失敗6次)

SQL>ALTER PROFILE DEFAULT LIMIT

 FAILED_LOGIN_ATTEMPTS 6

 PASSWORD_LIFE_TIME 60

 PASSWORD_REUSE_TIME 60

 PASSWORD_REUSE_MAX 5

 PASSWORD_VERIFY_FUNCTION verify_function_11g

 PASSWORD_LOCK_TIME 1/24

 PASSWORD_GRACE_TIME 90;

通過以下語句查詢目前使用者的狀态:

SQL> select username,account_status from dba_users;

USERNAME                        ACCOUNT_STATUS

------------------------------ --------------------------------

DBA_USER                         OPEN

DBSNMP                           OPEN

SYSMAN                           OPEN

SCOTT                             OPEN

FLOWS_FILES                     EXPIRED & LOCKED

MDSYS                            EXPIRED & LOCKED

WMSYS                            EXPIRED & LOCKED

ORDDATA                         EXPIRED & LOCKED

CTXSYS                           EXPIRED & LOCKED

ANONYMOUS                       EXPIRED & LOCKED

接下來使用賬号dba_user和scott,以錯誤的密碼嘗試連接配接數庫6次以上後,再檢視資料庫使用者狀态:

DBA_USER                         EXPIRED(GRACE) & LOCKED(TIMED)

SCOTT                             EXPIRED(GRACE) & LOCKED(TIMED)

事實證明,當使用者DBA_USER和SCOTT為EXPIRED(GRACE)的時候,使用者又嘗試失敗的login次數超過了FAILED_LOGIN_ATTEMPTS,被系統自動鎖定.

如果這兩個使用者為生産現網的業務賬戶的話,管理者不能及時發現問題或報警的話,将會造成業務中斷等嚴重的後果。

     本文轉自vcdog 51CTO部落格,原文連結:http://blog.51cto.com/255361/1039645,如需轉載請自行聯系原作者