熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle9i密碼策略--密碼重用規則

2013-11-13 22:07:50  來源: Oracle 

  Oracle通過PROFILE中的PASSWORD_REUSE_TIME和PASSWORD_REUSE_MAX來確定密碼是否可以重用以及密碼重用的限制

  

  但是經過測試發現Oracle的ADMINISTRATOR GUIDE裡面的描述是錯誤的我查閱了一下METALINKMETALINK上的一篇文章雖然對這兩個參數進行了比較詳細的說明但是仍然有一部分描述是錯誤

  

  PASSWORD_REUSE_TIME是重用密碼的最小時間間隔單位是天可以給出整數或分數/表示分鐘(出於效率的考慮oracle不會每分鐘都去進行檢查一般來說分鐘左右的誤差因此如果這個數小於/則沒有多大的意義)

  

  PASSWORD_REUSE_MAX是重用密碼前更換密碼的最小次數這兩項本身沒有任何異議關鍵是兩項如何配合使用可以分為種情況進行描述

  

  一PASSWORD_REUSE_MAX和PASSWORD_REUSE_TIME都為UNLIMITED

  

  這時密碼可以任意重用沒有限制這也是DEFAULT profile的默認值當這兩項都為UNLIMITED時認為這兩個參數沒有使用因此密碼重用沒有任何限制

  

  SQL> create profile prof_test limit password_reuse_max unlimited password_reuse_time unlimited; 配置文件已創建 SQL> create user test identified by test profile prof_test; 用戶已創建 SQL> alter user test identified by test; 用戶已更改 SQL> alter user test identified by test; 用戶已更改

  

  

  

  二PASSWORD_REUSE_MAX和PASSWORD_REUSE_TIME中有一個為UNLIMITED另一個為其他值

  

  這個時候你的密碼將永遠無法重用

  

  看看administrator guide上是怎麼說的

  

  Use the CREATE PROFILE statement to specify a time interval during which users cannot reuse a password In the following statement a profile is defined where the PASSWORD_REUSE_TIME clause specifies that the user cannot reuse the password for days CREATE PROFILE prof LIMIT PASSWORD_REUSE_TIME PASSWORD_REUSE_MAX UNLIMITED; In the next statement the PASSWORD_REUSE_MAX clause specifies that the number of password changes the user must make before the current password can be used again is three CREATE PROFILE prof LIMIT PASSWORD_REUSE_MAX PASSWORD_REUSE_TIME UNLIMITED; Note: If you specify PASSWORD_REUSE_TIME or PASSWORD_REUSE_MAX you must set the other to UNLIMITED or not specify it at all

  

  

  文檔告訴我們只使用其中一個把另外一個設置為UNLIMITED但是這是不正確的這樣會導致你的密碼永遠無法重用

  

  SQL> alter profile prof_test limit password_reuse_max ; 配置文件已更改 SQL> select resource_name limit from dba_profiles where profile = PROF_TEST and resource_type = PASSWORD; RESOURCE_NAMELIMIT FAILED_LOGIN_ATTEMPTSDEFAULT PASSWORD_LIFE_TIMEDEFAULT PASSWORD_REUSE_TIMEUNLIMITED PASSWORD_REUSE_MAX PASSWORD_VERIFY_FUNCTIONDEFAULT PASSWORD_LOCK_TIMEDEFAULT PASSWORD_GRACE_TIMEDEFAULT 已選擇 SQL> alter user test identified by test; 用戶已更改 SQL> alter user test identified by test; alter user test identified by test * ERROR 位於第 行: ORA: 無法重新使用口令 SQL> alter user test identified by t; 用戶已更改 SQL> alter user test identified by t; 用戶已更改 SQL> alter user test identified by t; 用戶已更改 SQL> alter user test identified by test; alter user test identified by test * ERROR 位於第 行: ORA: 無法重新使用口令

  修改profile後只對test用戶的後續操作有效第一次可以修改密碼為test是因為oracle沒有記錄初始密碼而第二次修改就會失敗因為密碼已經不能重用了

  

  根據文檔我們只需要修改密碼三次就可以重用但是測試的結果確是密碼無法在重用

  

  

  SQL> alter profile prof_test limit password_reuse_max unlimited; 配置文件已更改 SQL> alter user test identified by test; 用戶已更改 SQL> alter profile prof_test limit password_reuse_time /; 配置文件已更改 SQL> select resource_name limit from dba_profiles where profile = PROF_TEST and resource_type = PASSWORD; RESOURCE_NAMELIMIT FAILED_LOGIN_ATTEMPTSDEFAULT PASSWORD_LIFE_TIMEDEFAULT PASSWORD_REUSE_TIME PASSWORD_REUSE_MAXUNLIMITED PASSWORD_VERIFY_FUNCTIONDEFAULT PASSWORD_LOCK_TIMEDEFAULT PASSWORD_GRACE_TIMEDEFAULT 已選擇 SQL> set time on :: SQL> alter user test identified by test; alter user test identified by test * ERROR 位於第 行: ORA: 無法重新使用口令 :: SQL> :: SQL> :: SQL> alter user test identified by test; alter user test identified by test * ERROR 位於第 行: ORA: 無法重新使用口令 :: SQL> :: SQL> alter user test identified by test; alter user test identified by test * ERROR 位於第 行: ORA: 無法重新使用口令 :: SQL> set time off

  

  

  

  修改PASSWORD_REUSE_TIME為/也就是說大概分鐘的時間考慮的oracle的誤差我們在分鐘和分鐘後分別進行測試結果發現密碼仍然無法重用

  

  三PASSWORD_REUSE_MAX和PASSWORD_REUSE_TIME都不為UNLIMITED

  

  這時只需滿足任意一個條件就可以重用密碼

  

  Metalink上的文章在這裡描述有誤密碼重用不需要同時滿足兩個條件只要滿足一個既可

  

  SQL> alter profile prof_test limit password_reuse_time unlimited; 配置文件已更改 SQL> alter user test identified by test; 用戶已更改 SQL> alter profile prof_test limit password_reuse_max password_reuse_time /; 配置文件已更改 SQL> set time on :: SQL> alter user test identified by test; 用戶已更改 :: SQL> alter user test identified by test; alter user test identified by test * ERROR 位於第 行: ORA: 無法重新使用口令 :: SQL> alter user test identified by t; 用戶已更改 :: SQL> alter user test identified by t; 用戶已更改 :: SQL> alter user test identified by t; 用戶已更改 :: SQL> alter user test identified by test; 用戶已更改 :: SQL> :: SQL> alter user test identified by test; alter user test identified by test * ERROR 位於第 行: ORA: 無法重新使用口令 :: SQL> :: SQL> :: SQL> alter user test identified by test; 用戶已更改

  

  

  

  第一次重用test密碼才過了分鐘左右而在第二次重用test密碼之前並沒有使用過其他密碼可見只需滿足PASSWORD_REUSE_MAX和PASSWORD_REUSE_TIME中的任意一個條件就可以


From:http://tw.wingwit.com/Article/program/Oracle/201311/18309.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.