程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 【翻譯自mos文章】oracle密碼管理策略

【翻譯自mos文章】oracle密碼管理策略

編輯:Oracle教程

【翻譯自mos文章】oracle密碼管理策略


oracle密碼管理策略

參考原文:
Oracle Password Management Policy (Doc ID 114930.1)

細節:
密碼管理通過使用profile來建立。

當密碼過期後,如果user有能力獨立地從 end-user application(前台業務軟件)修改密碼的話,通常的推薦是只指派給這些schemas 一個profile,該profile有 password aging an expiration features 。
通常這意味著application(前台業務軟件)必須正確的使用 OCIPasswordChange() OCI call ,比如sqlplus


一個profile 可以在指定password參數時被建立,然後把該profile指派給一個user

SQL> create profile custom limit failed_login_attempts 20;
Profile created.

SQL> alter user scott profile custom;
User altered.

oracle提供一個腳本( $ORACLE_HOME/rdbms/admin/utlpwdmg.sql)來實現 DEFAULT profile上的 密碼管理特性。
dba可以把它(該腳本)作為一個例子使用,以查看password management特性時怎麼被enabled的。
復制該腳本並根據你的需要自定義該腳本,請在上生產之前測試該腳本(或者你自己定義的腳本)

在oracle database profile中,有7個密碼管理的參數可以被指定。下面分別討論:

1. Account Locking

當一個user 超過了指派給他的失敗登陸次數(FAILED_LOGIN_ATTEMPTS),oracle db 會自動lock住該user的賬戶(account),該lock的持續時間為PASSWORD_LOCK_TIME(該PASSWORD_LOCK_TIME是profile裡邊的resource)指定的時間。

Profile parameters:
FAILED_LOGIN_ATTEMPTS
PASSWORD_LOCK_TIME

2. Password Aging and Expiration
當超過了PASSWORD_LIFE_TIME中指定的時間之後,密碼會expire,然後 user or dba 必須改掉該密碼。A grace period(以天為單位,也就是PASSWORD_GRACE_TIME指定的period)可以被設置,以允許user 在密碼expired之後直到 grace period 期間之內, 改變他們的密碼。
user 進入 grace period 期間的依據是:在他們的密碼expired後,並且他們第一次登陸到db中的那個時刻。在 grace period 期間之內, 在用戶每一次登陸到db之後,都會顯示一條warning的消息,該消息會持續出現,直到grace period expired。在grace period 期內,用戶必須修改密碼,如果在grace period 期內不修改密碼,則該account expired 並且不會被允許登陸,直到密碼被修改。

注意: 密碼不會也不能被locked,即使是由於 超過life time 和後來的 grace time。但是該user除非修改密碼,否則是不能login的。

Profile parameters:
PASSWORD_LIFE_TIME
PASSWORD_GRACE_TIME

3. Password History

user 不能重用原來密碼的時間間隔 就是 (PASSWORD_REUSE_TIME。該間隔可以以天為單位指定,
or a number of password changes the user must make before the current password can be reused (PASSWORD_REUSE_MAX).
--->看似這個PASSWORD_REUSE_MAX的含義是:在當前密碼能被重用之前,用戶必須改變許多次密碼,也就是說PASSWORD_REUSE_MAX是指定的改密碼的次數?

4. Password Complexity Verification
dba可以使用PL/SQL建立自己的 password verification routines (密碼驗證程序),然後就可以讓oracle db 使用該routine 來檢查密碼復雜度。

Profile parameter:
PASSWORD_VERIFY_FUNCTION

sys擁有的PL/SQL function 必須遵守 下面的格式:
routine_name( userid_parameter IN VARCHAR2, password_parameter IN VARCHAR2, old_password_parameter IN VARCHAR2) RETURN BOOLEAN

默認的密碼驗證函數在 $ORACLE_HOME/rdbms/admin/utlpwdmg.sql文件中。該文件可以作為一個例子或者根據你的需要進行修改。

該函數可以被profile關聯使用。
alter profile default limit password_verify_function <routine_name>;

禁用某 default profile上的密碼驗證函數的方法如下:
SQL> alter profile default limit password_verify_function null;

密碼復雜驗證一旦啟用,用戶可以通過很多方法來修改他們自己的密碼:

第一個方法: sqlplus的password命令
SQL> connect scott/tiger
Connected.
SQL> password
Changing password for SCOTT
Old password:
New password:
Retype new password:
Password changed
SQL>


第二個方法:alter user 命令:
SQL> ALTER USER &MYUSERNAME IDENTIFIED BY &NEWPASSWORD REPLACE &OLDPASSWORD;

使用replace 關鍵字的alter user 語法 是修復 bug 1231172方案的一部分,因此,該語法可以在當前所有支持的release上使用。

第三個方法:前台業務軟件使用 OCIPasswordChange() call。

下面是一個例子:
-- A default password complexity function is provided.
-- This sample function makes no checks and always returns true.
-- The logic in the function should be modified as required.
-- See $ORACLE_HOME/rdbms/admin/utlpwdmg.sql for an idea of kind
-- of logic that can be used.
-- This function must be created in SYS schema.
-- connect sys/ as sysdba before running this.

-- This function will not check the provided password. It is just an example and
-- will return true for any password. For a real password verification routine see
-- script $ORACLE_HOME/rdbms/admin/utlpwdmg.sql.


CREATE OR REPLACE FUNCTION always_true (username varchar2,
password varchar2, old_password varchar2) RETURN boolean IS
BEGIN
RETURN(TRUE);
END;
/

-- This script alters the default parameters for Password Management.
-- This means that all the users on the system have Password Management
-- enabled and set to the following values unless another profile is
-- created with parameter values set to different value or UNLIMITED
-- is created and assigned to the user.

ALTER PROFILE DEFAULT LIMIT
PASSWORD_LIFE_TIME 60 -- (days)
PASSWORD_GRACE_TIME 10 --(days)
PASSWORD_REUSE_TIME 1800
PASSWORD_REUSE_MAX UNLIMITED
FAILED_LOGIN_ATTEMPTS 3 --(times)
PASSWORD_LOCK_TIME 1/1440 --(days)
PASSWORD_VERIFY_FUNCTION always_true;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved