우리가 살다보면 많이 듣는 소리들이 있다. 예를 들어 '~는 하지마라', '~를 해라' 같은 것 말이다.
사람은 자신이 해야 할 일이 있고, 또한 하지 말아야 할 일이 있다.
오라클도 마찬가지이다. DBA가 사용자를 생성하면 그 사용자가 어떤 일을 하지 못하도록 막아야 할 때가 있을 것이다.
지금 논할 Profile은 어떤 일을 못하게 막는 기능이 있다.
Profile은 패스워드 관련된 Profile과 리소스 관련된 Profile이 있다.
DBA는 Profile을 원하는 기능을 넣어 만들줄 알고, 그런 후 사용자를 조회해서 적용할 줄 알아야 한다.
Profile은 법과 같은 개념이다.
Profile은 이중국적이 허용되지 않는다. 즉, 사용자 한명이 사용할 수 있는 Profile은 하나이다. 한 명이 여러 개의 Profile을 가질 수 없다.
◆ Password Management
- 패스워드를 잠그고 풀고 파기시키는 작업은 create user 또는 alter user 명령어를 통해 수행 가능하다.
- Profile은 항상 강제 적용된다.
- DB를 수동으로 생성시 패스워드 정책이 잘 적용되지 않을 때가 있는데, 그럴 때는 SYS계정으로 utlpwdmg.sql스크립트를 돌려주면 된다.
◆ 패스워드와 관련된 파라미터
◇ FAILED_LOGIN_ATTEMPTS
- 로그인 시도를 몇 번 실패하면 계정을 잠그겠느냐.
◇ PASSWORD_LOCK_TIME
- 계정이 잠겼는데 얼마동안 잠글거냐.
◇ PASSWORD_LIFE_TIME
- 계정의 패스워드가 살아있는 시간.
◇ PASSWORD_GRACE_TIME
- 계정의 패스워드 여유 시간. 패스워드는 life time + grace time이 최대 살아있는 시간이다. 축구에서의 인저리 타임과 비슷한 개념.
◇ PASSWORD_REUSE_TIME
- 이전 패스워드를 동일한 것으로는 얼마동안 바로 쓸 수 없게 하는 시간.
◇ PASSWORD_REUSE_MAX
- 같은 패스워드를 최대 몇 번까지 사용 가능하게 하는 것.
◇ PASSWORD_VERIFY_FUNCTION
- 패스워드를 복잡하게 만들어 주는 것.
- 패스워드는 무조건 4글자 이상.
- 계정명과 같으면 안됨.
- 알파벳이나 숫자, 특수문자가 적어도 하나 이상 들어가 있어야 함.
- 이전 패스워드와 적어도 3글자 이상 같으면 안됨.
SQL> create profile test_profile limit
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_LIFE_TIME 30
PASSWORD_REUSE_TIME 30
PASSWORD_VERIFY_FUNCTION verify_function
PASSWORD_GRACE_TIME 5;
위 명령은 test_profile이라는 프로필을 만들고, 로그인 실패 최대횟수는 3번이고 3번 이후엔 계정을 DBA가 풀어주기 전까지는 영원히 잠근다. 또 최대로 패스워드가 살아있을 수 있는 기간은 35일이고, 35일이 지나고 이후로 30일 동안은 같은 패스워드를 쓰지 못한다. 패스워드 생성시 지정한 verify_function을 통해서 암호화된다.FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_LIFE_TIME 30
PASSWORD_REUSE_TIME 30
PASSWORD_VERIFY_FUNCTION verify_function
PASSWORD_GRACE_TIME 5;
SQL> alter profile default limit
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LIFE_TIME 60
PASSWORD_GRACE_TIME 10;
위 명령은 default 프로필에서, 로그인 실패 횟수는 3번, 최대로 패스워드가 살아있을 수 있는 기간은 70일로 설정한다.FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LIFE_TIME 60
PASSWORD_GRACE_TIME 10;
◆ Resource Management
- 파라미터 파일에서 RESOURCE_LIMIT가 true로 되어 있어야 함.
- spfile 사용시 alter system 명령어로 적용하면 된다.
SQL> alter system set RESOURCE_LIMIT=TRUE;
- 리소스 관련된 프로필은 자칫 잘못했을 시 문제가 되기 쉽상이기 때문에 잘 안쓴다.◆ 리소스와 관련된 파라미터
◇ CPU_PER_SESSION
- 한 사용자(하나의 세션)가 cpu를 연속적으로 쓸 수 있는 최대시간 정하는 것.(단위 : 1/100초)
- 예를 들어 내가 평소에 3초 안에 결과가 나오던 쿼리를 날렸는데, 예상 밖으로 3초 이상 실행된다면 결과가 나오지 못하고 강제로 그 쿼리를 죽여버린다.
◇ SESSIONS_PER_USER
- 하나의 계정으로 몇 명의 사용자가 동시에 접속할 수 있는지 설정. (단위 : 명)
◇ CONNECT_TIME
- 하루종일 DB서버에 접속할 수 있는 총 시간 설정. (단위 : 분)
◇ IDLE_TIME
- 접속해놓고 아무것도 안하면 연속적인 휴면시간이 해당 값을 넘을시 접속 해제됨. (단위 : 분)
SQL> create profile test_profile limit
SESSIONS_PER_USER 2
CPU_PER_SESSION 10000
IDLE_TIME 60
CONNECT_TIME 480;
위 명령은 하나의 계정으로 최대 2명의 사용자가 동시에 접속할 수 있게 하는 것이고, 100초 이상 걸리는 쿼리는 강제로 킬시키고, 1시간 이상 아무것도 안하고 있으면 접속 해제되고, DB를 켠 후부터 최대 8시간동안만 DB를 이용 가능하다.SESSIONS_PER_USER 2
CPU_PER_SESSION 10000
IDLE_TIME 60
CONNECT_TIME 480;
◆ 사용자에게 프로필 부여
SQL> alter user 계정명 profile 프로필명;
◆ 프로필 삭제
단, default 프로필은 삭제 불가능.
SQL> drop profile 프로필명;
SQL> drop profile 프로필명 cascade;
CASCADE : 사용자가 해당 프로필을 쓰고 있을 때 강제로 삭제. 삭제되면 그 사용자는 default 프로필을 사용함.SQL> drop profile 프로필명 cascade;
◆ 프로필 관련 데이터 딕셔너리
- DBA_USERS
- DBA_PROFILES
◆ 현재 서버에 정의된 프로필 조회
SQL> select distinct profile
from dba_profiles;
from dba_profiles;
◆ SCOTT이 부여받은 프로필 조회
SQL> select username, profile
from dba_users
where username='SCOTT';
from dba_users
where username='SCOTT';
◆ 현재 서버에 정의된 test_profile안의 내용 조회
SQL> select *
from dba_profiles
where profile='TEST_PROFILE'
order by resource_type;
from dba_profiles
where profile='TEST_PROFILE'
order by resource_type;
'오라클 > Admin' 카테고리의 다른 글
[Admin] Privilege (0) | 2010.09.04 |
---|---|
[Admin] User and Schema (0) | 2010.09.04 |
[Admin] Table Reorganization (0) | 2010.09.03 |
[Admin] Extent와 Block과의 관계 (0) | 2010.09.02 |
[Admin] Rowid (0) | 2010.09.02 |