프로파일은 제한하는 것으로 정책에 관한 내용을 설정한다.
프로파일은 CREATE USER나 ALTER USER에서 사용하여 프로파일을 적용하며, DEFAULT프로파일을 기본적으로 사용한다.
프로파일에서 설정하는 것은 암호에 관한 정책과 리소스(자원)에 관한 설정이 있다.
암호에 관한 정책은 크게 4가지가 있다. 암호기록, 계정잠금, 암호 만기일 기능 및 암호 만기, 암호확인이 있는데 암호기록과 계정잠금 중 하나만 설정을 해주어야 한다. 둘다 설정하게 되면 서로 간섭이 일어나 설정값이 적용됬다 안됬다 한다. 계정잠금은 password 몇회 오류시 lock이 걸림에 대한 설정을 하는 것인데 실무에서는 사용하지 않는다. 왜냐하면 어플리케이션에 계정명과 password가 지정되어 입력하지 않기때문에 오류가 생길수가 없다. 이 설정을 사용하는 이유는 외부에서 접속하여 데이터 유출 등을 방지하기 위해서 사용한다.
암호기록은 이전에 사용했던 password를 사용하지 못하게 하는 설정이다.
암호 만기일 기능 및 암호만기는 암호를 사용 할 수 있는 기간을 정하거나 암호를 변경하도록 강제로 만료시키는 것이다.
암호확인은 암호를 설정할때 사용하는 조건에 대한 설정이다. 유저가 함수를 생성할 수 있지만 PL/SQL등 다른 프로그램을 이용하므로 오라클에서도 기본 암호확인 함수를 제공한다.
암호관련 매개변수
구분 |
매개변수 |
설명 |
암호 계정 잠금 |
FAILED_LOGIN_ATTEMPTS |
로그인 실패 횟수/계정잠금 |
PASSWORD_LOCK_TIME |
로그인 실패시 계정잠금 유지 기간(일) |
|
암호 만기일 기능 및 암호 만기 |
PASSWORD_LIFE_TIME |
암호 사용기간(일) |
PASSWORD_GRACE_TIME |
암호 만기후 암호변경 유예기간(일) |
|
암호기록 |
PASSWORD_REUSE_TIME |
암호 재사용 불가 기간 |
PASSWORD_REUSE_MAX |
암호 재사용 최대 횟수 |
|
암호확인 |
PASSWORD_VERIFY_FUNCTION |
암호 할당전 복잡성검사 PL/SQL함수 |
암호확인에서
funtion_name (
userid_parameter IN VARCHAR2 (30),
password_parameter IN VARCHAR2 (30),
old_password_parameter IN VARCHAR2 (30))
RETURN BOOLEAN
이때 return되는 Boolean값이 1이면 사용가능하고 0이면 사용이 불가능하다.
oracle 기본 암호확인 함수인 verify_function의 조건은 최소 4글자 이상이며 최소한 영문자 한 개, 숫자 한 개, 특수문자 한 개를 포함해야 한다. 또한 암호는 사용자 이름과 동일하지 않아야 하며 최소 세 자까지 이전암호화 같으면 안된다.
암호설정변경은 ALTER PROFILE을 이용한다.
리소스 관리는 세션레벨, 호출레벨에서 수행이 가능하다. 세션레벨에서의 설정은 1회 접속시 사용할수있는 리소스에 대한 설정이고 호출레벨에서의 설정은 1한 문장 수행시 사용할수있는 리소스에 대한 설정이다.
RESOURCE_LIMIT 초기화매개변수; //
ALTER SYSTEM SET RESOURCE_LIMIT=TRUE; // TRUE가 활성화한 상태인데 비활성화시 RESOURCE_LIMIT=FALSE면 리소스 사용이 불가능하다.
구분 |
자원 |
설명 |
세션레벨 |
CPU_PER_SESSION |
CPU시간 (1/100초) |
SESSIONS_PER_USER |
동시 세션 허용수 |
|
CONNECT_TIME |
연결 유지 시간(분) |
|
IDLE_TIME |
비활성 시간(분) |
|
LOGICAL_READ_PER_SESSION |
물리적 및 논리적 읽는 데이터 블록 수 |
|
PRIVATE_SGA |
바이트 단위 측정 SGA전용 공간 |
|
호출레벨 |
CPU_PER_CALL |
CPU시간 (1/100초) |
LOGICAL_READ_PER_CALL |
호출당 읽는 데이터 블록수 |
LOGICAL_READ_PER_SESSION, LOGICAL_READ_PER_CALL를 이용해 full scan시에도 블록을 전부 읽지 않게 한다. 이 매개변수를 설정을 사용하여 쓸모없는 블록을 읽는 수행을 막는다.
PRIVATE_SGA는 Apache의multithread와 같이 client-server가 1:1 통신이 아닌 1:다수 통신이 가능하게 만들어준다.
DROP PROFILE 프로파일_이름; // 프로파일을 삭제하는데 사용중일 경우 삭제가 불가능하다.
DROP PROFILE 프로파일_이름 CASCADE; // 사용중인 사람이 있어도 삭제가 가능하고 사용중인 사람의 프로파일은 DEFAULT프로파일로 변경된다.
암호 및 자원 제한에 대한 정보는 DBA_USERS나 DBA_PROFILES에 있다.
이때 PASSWORD는 PASSWORD에 있지만 RESOURCE는 KERNEL에 있다.
'교육 > Oracle' 카테고리의 다른 글
Day 43 (UTF-8 Oracle, Php) (0) | 2020.01.17 |
---|---|
Day 43 (DB 보안 구축 문제) (0) | 2020.01.17 |
Day 41 (DB - Privilege, role) (0) | 2020.01.15 |
Day 41 (DB - User, Quota) (0) | 2020.01.15 |
Day 40 (DB) (0) | 2020.01.14 |