본문 바로가기

oracle

[ORACLE] PASSWORD_VERIFY_FUNCTION

728x90

PASSWORD_VERIFY_FUNCTION 
 
사용자에게 새로운 암호를 할당하기 전에 암호의 타당성을 인증하는 PL/SQL 함수를 사용할 수 있다. 
오라클 서버는 기본 함수를 제공하며 데이터베이스 관리자가 PL/SQL 함수를 만들 수 있다.

- 파라미터 : PASSWORD_VERIFY_FUNCTION
 

-  PASSWORD_VERIFY_FUNCTION 설정 방법
사용자 암호를 설정하는 과정에서 단순한 문자나 숫자 등으로 암호를 설정하지 못하도록 
암호를 검증하는 방법이 제공되는데, 
이는 $ORACLE_HOME/rdbms/admin/utlpwdmg.sql 스크립트이다. 
이 스크립트를 실행하면 VERIFY_FUNCTION 함수가 생성되고 사용자가 암호를 4자(버전에 따라 8자) 이하로 
설정하거나 특정 패턴을 사용하게 설정하거나 사용자 ID와 암호를 동일 값으로 설정하는 경우에 에러 메시지를 표시하고 
암호를 생성하지 못하도록 한다.

 

- VERIFY_FUNCTION_11G 함수 생성(LINUX/UNIX)
SQL> @$ORACLE_HOME/rdbms/admin/utlpwdmg.sql

- VERIFY_FUNCTION_11G 함수 생성(NT)
SQL> @"D:\app\Oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlpwdmg.sql"

 

※ utlpwdmg.sql 함수 생성 SQL을 수행시 DEFAULT profile 이 기본값으로 변경 되므로 
   VERIFYT_FUNCTION 을 사용하시려면 함수 생성 SQL을 수행 한뒤에 PROFILE을 변경 하거나 
   PROFILE 이 설정 되어있는 대로 사용 하시려면 utlpwdmg.sql 내용 중 사용기간 관련된 파라미터를 수정해야 한다.

 
utlpwdmg.sql 내 해당부분 수정하거나 주석처리 필요
   ALTER PROFILE DEFAULT LIMIT
   PASSWORD_LIFE_TIME 180
   PASSWORD_GRACE_TIME 7
   PASSWORD_REUSE_TIME UNLIMITED
   PASSWORD_REUSE_MAX UNLIMITED
   FAILED_LOGIN_ATTEMPTS 10
   PASSWORD_LOCK_TIME 1
   PASSWORD_VERIFY_FUNCTION verify_function_11G; 
 

   10g는 기본이 복잡도가 4자 11g는 8자 입니다.
   10g에서 복잡도를 8자로 하려면 utlpwdmg.sql 쿼리 안에서 내용을 변경 해줘야 합니다.

 

utlpwdmg.sql 복잡도 설정 방법

--10g-------------------------------------------------------------------------------------------------------------------

   -- Check for the minimum length of the password

   IF length(password) < 4 THEN -- 해당 부분 수정으로 자리수 복잡도 설정 가능(4자리 설정)

      raise_application_error(-20001, 'Password length less than 4');

   END IF;

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

 

utlpwdmg.sql

--11g-------------------------------------------------------------------------------------------------------------------

   -- Check for the minimum length of the password

   IF length(password) < 8 THEN -- 해당 부분 수정으로 자리수 복잡도 설정 가능(8자리 설정)

      raise_application_error(-20001, 'Password length less than 8');

   END IF;

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

 

 

- VERIFY_FUNCTION 설정

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION verify_function; -- 10g
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION verify_function_11G; -- 11g


- VERIFY_FUNCTION 사용 안하게 설정(원복)
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL;

 - VERIFY_FUNCTION 설정 확인 방법 
SQL> SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME='PASSWORD_VERIFY_FUNCTION ';
 

- FAILED_LOGIN_ATTEMPTS : 로그인 실패 가능 횟수
- PASSWORD_LOCK_TIME : 암호가 사용기간 만료되어 계정이 잠겨진 채로 남아 있었던 일 수 (단위:일)
- PASSWORD_LIFE_TIME : 암호의 만료 기간을 일 수로 나타냄 (단위:일)
- PASSWORD_GRACE_TIME : 암호의 사용기간이 만료된 후 첫 번째 성공적인 로그인부터 암호변경을 할 때까지의 유예기간 (단위:일)
- PASSWORD_REUSE_TIME : 이전 암호가 재사용 가능할 때까지의 일 수 (단위:일)
- PASSWORD_REUSE_MAX : 이전 암호가 재사용 가능한 최대 횟수
- PASSWORD_VERIFY_FUNCTION : 암호를 할당하기 전 복잡성 검사를 수행할 PL/SQL 함수  

728x90