더 뛰어난 데이터베이스 보안을 위해서 관리자가 프로파일로 오라클 암호를 관리 제어 할 수 있는 기능을 말합니다.
- 계정 잠금(Accont locking) : 계정잠금 이란 사용자가 지정된 시도 횟수 내에 시스템에 로그인하지 못한 경우 자동적으로 계정을 잠그는 기능을 말합니다.
- 암호의 노화(aging)와 기간 만료(expire) : 암호가 수명을 갖도록 하여 그 기간이 지나면 암호를 변경 하도록 설정하는 기능 입니다.
- 암호의 현재까지의 기록(Password history) : 암호를 검사하여 지정된 시간 동안이나 지정된 횟수 이상 사용되지 않도록 설정 할 수 있습니다.
- 암호의 복잡성 검증(Password complexity verification) : 추측된 암호를 사용하지 못하도록 암호를 충분히 복잡하게 설정 할 수 있는 기능 입니다.
- 프로파일을 사용자에게 지정하여 암호관리를 설정 합니다.
- CREATE USER나 ALTER 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 함수 |
- PASSWORD_LIFE_TIME 파라미터는 패스워드의 수명을 설정 합니다. 이 기간이 지나면 암호를 변경해야 합니다.
- 데이터베이스 관리자는 유예 기간(PASSWORD_GRACE_TIME)을 지정할 수 있습니다. 이 기간은 암호가 기간 만료된 후 데이터베이스에 처음 접속한 때부터 시작 됩니다.
- 유예 기간이 끝날 때까지는 사용자가 매번 접속하려 할 때마다 경고 메시지가 발생 하며, 사용자는 유예 기간 내에 암호를 변경해야 합니다. 암호가 변경되지 않으면 계정은 잠깁니다.
- 암호를 기간 만료된 것으로 명시적으로 설정하면 사용자의 계정 상태는 EXPIRED로 변경됩니다. 이렇게 되면, 사용자가 로그인 할 때 계정은 유예 기간으로 넘어 갑니다.
- 암호의 현재까지의 기록은 사용자가 지정된 기간 동안 암호를 재사용하지 못하게 합니다. 아래의 한 가지 방법으로 구현할 수 있습니다.
- PASSWORD_REUSE_TIME : 주어진 날 수 동안 암호를 재사용할 수 없도록 지정.
- PASSWORD_REUSE_MAX : 예전에 사용한 암호와 동일한 것을 사용하지 못하도록 시행.
- 사용자에게 암호를 할당하기 전에 암호의 유효성을 검증 할 수 있습니다.
- 암호의 최소길이는 네문자 입니다.
- 암호는 사용자 이름과 같아서는 안된다.
- 암호는 최소한 하나의 알파벳,하나의 수자,그리고 하나의 특수 문자를 가져야한다.
- 암호는 예전에 사용했던 암호와 최소한 세문자는 달라야한다.
- utlpwdmg.sql 스크립트에 의해 VERIFY_FUNCTION이라는 디폴트 PL/SQL 함수 형태로 제공되며 반드시 SYS 스키마에서 실행되어야 합니다.
- 디폴트 profile의 PASSWORD_VERIFY_FUNCTION 기능을 사용하지 않으려면 아래의 명령어를 실행하면 됩니다.
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL;
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
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.