Oracle Admin 강좌 (Oracle9i)
비밀번호 관리 7 1 27,066

by 김정식 계정잠금 ACCONT LOCKING AGING EXPIRE 암호관리 ACCOUNT UNLOCK [2003.07.13]


암호관리란?

  더 뛰어난 데이터베이스 보안을 위해서 관리자가 프로파일로 오라클 암호를 관리 제어 할 수 있는 기능을 말합니다.

 

암호관리의 기능

  - 계정 잠금(Accont locking) : 계정잠금 이란 사용자가 지정된 시도 횟수 내에 시스템에 로그인하지 못한 경우 자동적으로 계정을 잠그는 기능을 말합니다.

  - 암호의 노화(aging)와 기간 만료(expire) : 암호가 수명을 갖도록 하여 그 기간이 지나면 암호를 변경 하도록 설정하는 기능 입니다.

  - 암호의 현재까지의 기록(Password history) : 암호를 검사하여 지정된 시간 동안이나 지정된 횟수 이상 사용되지 않도록 설정 할 수 있습니다.

  - 암호의 복잡성 검증(Password complexity verification) : 추측된 암호를 사용하지 못하도록 암호를 충분히 복잡하게 설정 할 수 있는 기능 입니다.

 

암호관리를 사용하는 방법

  - 프로파일을 사용자에게 지정하여 암호관리를 설정 합니다.

  - CREATE USERALTER USER 명령을 사용하여 계정을 잠그거나 잠금을 해제하고 기간을 만료 할 수 있습니다.

  - 인스턴스의 RESOURCE_LIMIT가 FALSE로 설정되어 있더라도 암호제한은 항상 시행 됩니다.

  - 자원 제한 설정과 비슷하게 CREATE나 ALTER USER 명령을 사용하여 암호 설정을 제한하도록 프로파일을 생성하여 사용자에게 지정할 수 있습니다.

  - SESSIONS_PER_USER 같은 다른 제한들은 초기화 파라미터나 ALTER SYSTEM 명령으로 자원 제한이 enable되어 있을 때에만 시행되는 반면, 프로파일의 암호 설정은 항상 시행 됩니다.

  - 암호 관리가 enable되면 사용자 계정은 CREATE USER나 ALTER USER 명령을 사용하여 잠그거나 잠금을 해제할 수 있습니다.

 

암호 설정 방법

  아래와 같이 프로파일을 생성 하고 그 프로파일을 암호설정을 적용할 유저에게 부여하면 됩니다.

 
SQL> CREATE PROFILE scott_password    
      LIMIT FAILED_LOGIN_ATTEMPTS 3    ---> 로그인 실패 횟수
      PASSWORD_LIFE_TIME 30            ---> 기간만료일
      PASSWORD_REUSE_TIME 30           ---> 암호가 재사용 될 때까지의 날 수    
      PASSWORD_VERIFY_FUNCTION verify_function  ---> 복합성 검사를 수행할 PL/SQL    
      PASSWORD_GRACE_TIME 5 ;          ---> 유예기간
    

 

암호 설정 관련 파라미터

Parameter 설 명
FAILED_LOGIN_ATTEMPTS
[계정잠금]
계정을 잠그기 전까지 로그인 시도하다 실패한 횟수.

오라클 서버는 FAILED_LOGIN_ATTEMPTS 값에 도달하면 자동적으로 계정을 잠근다.

계정은 지정된 시간(PASSWORD_LOCK_TIME)이 지난 후 자동적으로 잠금이 해제되거나 데이터베이스 관리자가 ALTER USER 명령으로 잠금을 해제해야 한다.

데이터베이스 계정은 ALTER USER 명령을 사용하여 명시적으로 잠글수도 있는데 이렇게 하면 계정은 자동적으로 잠금 해제되지 않는다
PASSWORD_LOCK_TIME
[계정잠금]
암호가 기간 만료되어 계정이 잠겨진 채로 남아 있었던 날 수
PASSWORD_LIFE_TIME
[노화와 기간만료]
날 수로 표시한 암호의 수명으로 이 기간이 지나면 기간 만료됨
PASSWORD_GRACE_TIME
[노화와 기간만료]
암호가 기간 만료된 후 첫번째 성공적인 로그인부터 암호 변경을 할 때까지의 유예기간
PASSWORD_REUSE_TIME
[현재까지의 기록]
암호가 재사용 될 때까지의 날 수
PASSWORD_REUSE_MAX
[현재까지의 기록]
암호가 재사용 될 수 있는 최대 회수
PASSWORD_VERIFY_FUNCTION
[복합성 검증]
암호를 할당 하기 전 복합성 검사를 수행할 PL/SQL 함수

 

암호 노화(Aging) 기간 만료

  - PASSWORD_LIFE_TIME 파라미터는 패스워드의 수명을 설정 합니다. 이 기간이 지나면 암호를 변경해야 합니다.

  - 데이터베이스 관리자는 유예 기간(PASSWORD_GRACE_TIME)을 지정할 수 있습니다. 이 기간은 암호가 기간 만료된 후 데이터베이스에 처음 접속한 때부터 시작 됩니다.

  - 유예 기간이 끝날 때까지는 사용자가 매번 접속하려 할 때마다 경고 메시지가 발생 하며, 사용자는 유예 기간 내에 암호를 변경해야 합니다. 암호가 변경되지 않으면 계정은 잠깁니다.

  - 암호를 기간 만료된 것으로 명시적으로 설정하면 사용자의 계정 상태는 EXPIRED로 변경됩니다. 이렇게 되면, 사용자가 로그인 할 때 계정은 유예 기간으로 넘어 갑니다.

 

암호의 현재까지의 기록

  - 암호의 현재까지의 기록은 사용자가 지정된 기간 동안 암호를 재사용하지 못하게 합니다. 아래의 한 가지 방법으로 구현할 수 있습니다.

  - PASSWORD_REUSE_TIME : 주어진 날 수 동안 암호를 재사용할 수 없도록 지정.

  - PASSWORD_REUSE_MAX : 예전에 사용한 암호와 동일한 것을 사용하지 못하도록 시행.

 

Password Verification Function VERIFY_FUNCTION

  - 사용자에게 암호를 할당하기 전에 암호의 유효성을 검증 할 수 있습니다.

  - 암호의 최소길이는 네문자 입니다.

  - 암호는 사용자 이름과 같아서는 안된다.

  - 암호는 최소한 하나의 알파벳,하나의 수자,그리고 하나의 특수 문자를 가져야한다.

  - 암호는 예전에 사용했던 암호와 최소한 세문자는 달라야한다.

  - utlpwdmg.sql 스크립트에 의해 VERIFY_FUNCTION이라는 디폴트 PL/SQL 함수 형태로 제공되며 반드시 SYS 스키마에서 실행되어야 합니다.

  - 디폴트 profile의 PASSWORD_VERIFY_FUNCTION 기능을 사용하지 않으려면 아래의 명령어를 실행하면 됩니다.

 
SQL> ALTER PROFILE DEFAULT LIMIT  PASSWORD_VERIFY_FUNCTION  NULL;  
    

 

계정 잠금과 암호 제어(Controlling Account Lock and Password)

  ALTER USER 명령을 사용하여 암호를 변경하고 계정을 잠글 수 있습니다. 이와 같은 작업이 필요한 경우는 다음과 같습니다.

  • - 사용자가 암호를 잃어버려서 암호를 재설정하고자 할 때
  • - 시스템에 의해 잠겨진 사용자 계정을 풀 때
  • - 계정을 명시적으로 잠글 때
  • - 수동으로 암호를 만료되게 할 때, 사용자 암호를 재설정할 때 유용합니다.

암호 만료후 재설정 문법
 
 ALTER USER user
    [ IDENTIFIED {BY password | EXTERNALLY } ]
    [ PASSWORD EXPIRE ]
    [ ACCOUNT { LOCK | UNLOCK } ] ;  
    

암호 만료후 재설정 예제
 
SQL> ALTER USER scott
     IDENTIFIED BY puhaha
     PASSWORD EXPIRE ;
    

  사용자가 로그인한 상태라면 암호 변경, 만료, 잠금은 현재의 세션에는 영향을 주지 않습니다. 사용자 계정이 잠겨져 있는데 접속하려 하면 아래와 같은 메세지가 출력 됩니다

 
     ERROR:
     ORA-28000: the account is locked
     Warning: You are no longer connected to ORACL
    

- 강좌 URL : http://www.gurubee.net/lecture/1725

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 하혜진 [2008.05.14 17:53:39]
좋은 정보 감사합니다 ^^ 열공하겠습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입