2020. 1. 16. 16:23ㆍSecurity/oracle database
* 프로 파일
- 암호 및 자원 제한을 명명한 집합
- CREATE USER, ALTER USER 명령을 사용해서 사용자에게 할당
- 활성화 또는 비활성화 가능
- DEFAULT 프로파일과 연관 가능
*암호 관리
계정 잠금(account locking)
- 이 정책의 적용을 받는 사람들은 일정 횟수 이상 패스워드를 잘못 입력할시 lock 걸리게 설정이 가능
- password_lock_time은 일단위로 적용되며 1/24와 같은 방식으로도 설정 가능
- 그러나 실제로 사용할 일은 없다.
암호 기록(password history)
- password_reuse_time : 암호 재사용 불가 기간
- password_reuse_max : 암호 재사용 최대 횟수
암호 확인(password verification)
- 암호의 복잡성 확인
- 오라클에서 verify function이라는 함수 제공. 그러나 최근에는 폐기.
암호 만기일 기능 및 암호 만기
- password_life_time : 패스워드를 사용할 수 있는 기간.
- password_grace_time : 암호 만기 후 변경까지의 유예 기간
- 암호의 사용 기간은 두 매개변수의 합한 기간
사용자 암호 제공 암호 함수
-return되는 boolean값이 1이면 사용 가능하고 0이면 사용이 불가능
프로파일 생성(암호 설정)
프로파일 변경(암호 설정)
- ALTER PROFILE을 명령을 통해 암호 제한을 변경할 수 있음
- 실제로 실무에서 사용하는 일은 없음.
프로파일 삭제(암호 설정)
- default profile은 삭제가 불가능
- cascade 명령을 사용하지 않으면 사용중인 유저가 있을 경우 삭제가 불가능하다.
- cascade 명령을 통해 할당한 사용자로부터 프로파일을 취소. 즉 사용중인 유저가 있어도 삭제가 가능하며 사용중인 유저의 프로파일은 default 프로파일로 변경된다.
리소스(자원) 관리
- call(호출) 레벨 : 1회 문장 수행시 사용할 수 있는 리소스에 대한 설정
- session 레벨 : 1회 접속시 사용할 수 있는 리소스에 대한 설정
자원 제한 활성화
- 초기 설정이 이미 true로 완성되어 있다.
- false로 설정 되어있으면 명령이 적용되지 않기때문에 true인지 false인지를 사전에 확인한다.
세션 레벨에서 자원 제한 설정
- CPU_PER_CALL : CPU 시간(1/100초)
- SESSIONS_PER_USER : 동시 세션 허용 수
- CONNECT_TIME : 접속 유지 시간. 설정된 시간이 지나면 연결이 끊긴다.
- IDLE_TIME : 접속 후 아무것도 안하는 시간
- LOGICAL_READS_PERSESSION : 물리적 및 논리적으로 읽을 수 있는 데이터 블록 수
- PRIVATE_SGA : client-server통신이 1대1이 아닌 1대 다 통신이 가능하게 만들어준다.
호출 레벨에서 자원 제한 설정
- CPU_PER_CALL : CPU 시간(1/100초)
- LOGICAL_READS_PER_CALL : 한 문장당 읽을 수 있는 데이터 블록 수
-LOGICAL_READ_PER_SESSION, LOGICAL_READ_PER_CALL를 이용해 full scan시에도 블록을 전부 읽지 않게 한다. 이 매개변수를 설정을 사용하여 쓸모없는 블록을 읽는 수행을 막는다.
암호 및 자원 제한 정보가 저장되어 있는 곳
- DBA_USERS
- DBA_PROFILES
[실습]Profile 조회
<사용 명령어>
SELECT DISTINCT profile FROM DBA_PROFILES;
- profile의 목록만 확인하고 싶을때는 distinct를 이용
SELECT * FROM DBA_PROFILES
ORDER BY RESOUECE_TYPE;
- 각 Profile에 정의된 설정 값을 확인한다.
SELECT username, profile FROM DBA_USERS;
- 각 user에게 할당된 profile을 조회.
DESC dba_profiles;
// profile 목록이 저장된 구조를 확인.
SELECT DISTINCT profile FROM dba_profiles;
// profile의 목록 확인
SELECT * FROM dba_profiles
WHERE profile = 'DEFAULT'
ORDER BY resource_type;
// 각 profile에 정의된 제한 사항을 확인.
SELECT username, profile FROM dba_users;
// 각 user에게 할당된 profile을 조회
[실습]Profile 생성과 제한 설정
Profile 설정은 password와 리소스 두 부분으로 나누어지는데 이중에 리소스 관련 설정은 resource_limit가 반드시 tr
ue로 정의되었을때 유효. 실습을 통해 profile을 생성하고 제한을 설정해 보자.
<사용 명령어>
CREATE PROFILE LIMITED
COMPOSITE_LIMIT [<설정값> | UNLIMITED | DEFAULT]
SESSIONS_PER_USER [<설정값> | UNLIMITED | DEFAULT]
PRIVATE_SGA [<설정값> | UNLIMITED | DEFAULT]
CONNECT_TIME [<설정값> | UNLIMITED | DEFAULT]
IDLE_TIME [<설정값> | UNLIMITED | DEFAULT]
LOGICAL_READS_PER_CALL [<설정값> | UNLIMITED | DEFAULT]
LOGICAL_READS_PER_SESSION [<설정값> | UNLIMITED | DEFAULT]
CPU_PER_CALL [<설정값> | UNLIMITED | DEFAULT]
CPU_PER_SESSION [<설정값> | UNLIMITED | DEFAULT]
PASSWORD_VERIFY_FUNCTION [<설정값> | NULL | DEFAULT]
PASSWORD_REUSE_MAX [<설정값> | UNLIMITED | DEFAULT]
PASSWORD_REUSE_TIME [<설정값> | UNLIMITED | DEFAULT]
PASSWORD_LIFE_TIME [<설정값> | UNLIMITED | DEFAULT]
FAILED_LOGIN_ATTEMPTS [<설정값> | UNLIMITED | DEFAULT]
PASSWORD_LOCK_TIME [<설정값> | UNLIMITED | DEFAULT]
PASSWORD_GRACE_TIME [<설정값> | UNLIMITED | DEFAULT];
- Profile을 생성한다.
- UNLIMITED : 제한하지 않는다.
- DEFAULT : DEFAULT profile과 동일한 값을 가진다.
- COMPOSITE_LIMIT : CONNECT_TIME, PRIVATE_SGA, CPU_PER_SESSION, READ_PER_SESSION 등의
값을 통합해서 제한한다.
- SESSIONS_PER_USER : 계정당 접속 가능한 세션 숫자.
- PRIVATE_SGA : Shared server환경에서 SGA에 사용가능한 SP 전용 메모리 크기 (MB)
- CONNECT_TIME : 접속 유효 시간 (분)
- IDLE_TIME : 비활성 접속 한계 (분)
- LOGICAL_READS_PER_CALL : 한 문장에서 읽기 가능한 block 개수
- LOGICAL_READS_PER_SESSION : 한 session에서 읽기 가능한 block 개수
- CPU_PER_CALL : 한 문장에서 사용 가능한 CPU 시간 (1/100 초)
- CPU_PER_SESSION : 한 session에서 사용 가능한 CPU 시간 (1/100 초)
- PASSWORD_VERIFY_FUNCTION : Password 복잡성을 확인하는 함수
- PASSWORD_REUSE_MAX : Password 재사용까지 변경 횟수
- PASSWORD_REUSE_TIME : Password 재사용까지 제한 시간
- PASSWORD_LIFE_TIME : Password 유효 기간
- FAILED_LOGIN_ATTEMPTS : Password 오류 허용 횟수
- PASSWORD_LOCK_TIME : Password 오류에 의해 lock 유지 시간 (일)
- PASSWORD_GRACE_TIME : Password 만료이후 암호 변경까지 유예 기간
- Profile에 대한 ALTER 문장은 CREATE 문장과 동일하다.
SHOW PARAMETER resource_limit
// false일 경우 무시 됨. TRUE인것을 반드시 확인
CREATE PROFILE insa LIMIT
SESSIONS_PER_USER 1
IDLE_TIME 5
CONNECT_TIME 10;
// insa profile을 생성. (지정하지 않은 항목은 default로 정의.)
SESSIONS_PER_USER가 1이기 때문에 특정 user가 접속하면 아무도 접속하지 못 함.
SELECT * FROM dba_profiles
WHERE PROFILE = 'INSA'
ORDER BY 3;
// 직접 지정해주지 않은 설정은 default profile과 동일한 제한을 받음.
ALTER PROFILE insa LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME 1;
// 제한 항목의 일부를 수정한다. (문법은 CREATE 문장과 동일하다.)
SELECT * FROM dba_profiles
WHERE PROFILE = 'INSA'
ORDER BY 3;
// 변경된 FAILED_LOGIN_ATTEMPTS, PASSWORD_LOCK_TIME 설정을 확인
[실습]Profile 할당과 적용
<사용 명령어>
ALTER USER
PROFILE ;
- 사용자에게 profile을 할당한다.
- CREATE USER 명령을 통해 할당하는 것도 가능하다.
- User에 profile을 지정하지 않으면 defaule profile에 적용을 받는다.
CREATE USER emp
IDENTIFIED BY emp
DEFAULT TABLESPACE usr
TEMPORARY TABLESPACE tmp
QUOTA UNLIMITED ON usr;
GRANT connect, resource TO emp;
// emp계정이 이미 존재하는 경우 생략
SELECT username, profile
FROM dba_users
WHERE username = 'EMP';
// user의 profile 확인
ALTER USER emp
PROFILE insa;
// insa profile을 할당
SELECT username, profile
FROM dba_users
WHERE username = 'EMP';
// insa가 할당되어 변경된 것을 확인
세션창 2개를 킨 후 둘 다 접속을 시도하면 하나는 1로 제한되어있어 접속이 불가능하다.
CONN emp/in
CONN emp/in
CONN emp/in
CONN emp/emp
// 비밀번호를 3번 틀린 후에는 정확한 비밀번호를 쳐도 접속이 되지 않는다.
CONN / as sysdba
// 사용자 계정 접속
SELECT username, account_status FROM dba_users
WHERE username = 'EMP';
// 하루 지나면 lock이 풀림. account_status가 timed으로 되어있으면 잠겨있는 상태이다.
ALTER USER emp
ACCOUNT unlock;
SELECT username, account_status FROM dba_users
WHERE username = 'EMP';
// emp 계정을 락을 풀어준 후에 다시 account_status를 확인해보면 open으로 변경된 것을 확인할 수 있다.
CONN emp/emp
// 문제없이 접속 되는 것을 확인.
'Security > oracle database' 카테고리의 다른 글
오라클 데이터베이스 관리자 기초- (13)인덱스 관리 (0) | 2020.01.22 |
---|---|
오라클 데이터베이스 관리자 기초- (12)테이블 관리 (0) | 2020.01.21 |
오라클 데이터베이스 관리자 기초- (10)권한 관리 및 롤 관리 (0) | 2020.01.14 |
오라클 데이터베이스 관리자 기초- (9)사용자 관리 (0) | 2020.01.14 |
오라클 데이터베이스 관리자 기초- (8)저장 영역 구조 및 관계 2 (0) | 2020.01.13 |