[Admin] Profile

오라클/Admin 2010. 9. 4. 13:34

우리가 살다보면 많이 듣는 소리들이 있다. 예를 들어 '~는 하지마라', '~를 해라' 같은 것 말이다.
사람은 자신이 해야 할 일이 있고, 또한 하지 말아야 할 일이 있다.
오라클도 마찬가지이다. 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을 통해서 암호화된다.

SQL> alter profile default limit
   FAILED_LOGIN_ATTEMPTS 3
   PASSWORD_LIFE_TIME 60
   PASSWORD_GRACE_TIME 10;
위 명령은 default 프로필에서, 로그인 실패 횟수는 3번, 최대로 패스워드가 살아있을 수 있는 기간은 70일로 설정한다.



◆ 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를 이용 가능하다.



◆ 사용자에게 프로필 부여
SQL> alter user 계정명 profile 프로필명;


◆ 프로필 삭제
단, default 프로필은 삭제 불가능.
SQL> drop profile 프로필명;

SQL> drop profile 프로필명 cascade;
CASCADE : 사용자가 해당 프로필을 쓰고 있을 때 강제로 삭제. 삭제되면 그 사용자는 default 프로필을 사용함.


◆ 프로필 관련 데이터 딕셔너리
  - DBA_USERS
  - DBA_PROFILES


◆ 현재 서버에 정의된 프로필 조회
SQL> select distinct profile
   from dba_profiles;


◆ SCOTT이 부여받은 프로필 조회
SQL> select username, profile
   from dba_users
   where username='SCOTT';


◆ 현재 서버에 정의된 test_profile안의 내용 조회
SQL> select *
   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
Posted by 겨울섬
,