2022. 11. 22. 17:48ㆍ데이터베이스
프로파일
- 암호 및 자원 제한을 명명한 집합
- CREATE USER 또는 ALTER USER 명령을 사용하여 사용자에게 할당함
- 활성화 또는 비활성화 가능
- DEFALUT 프로파일과 연관 가능
암호관리
- 계정 잠금 : 사용자가 지정한 시도 횟수 내에 시스템에 로그인하지 못하면 계정을 자동으로 잠금 할 수 있습니다.
- 암호 만기일 기능 및 암호 만기 : 암호에 실행주기가 있어 암호가 만료되면 바꾸어야 합니다.
- 암호 기록 : 지정한 암호 변경 횟수동안 암호를 재사용하지 않았는지 확인하기 위해 새 암호를 검사합니다.
- 암호 복잡성 확인 : 암호를 추측하여 시스템에 침입하려고 하는 침입자를 방지할 수 있을 만큼 암호가
복잡한지 확인하기 위해 암호의 복잡성을 검사합니다.
암호 관리 활성화
- 프로파일을 사용하여 암호 관리를 설정하고 사용자에게 할당합니다.
- CREATE USER 또는 ALTER USER명령을 사용하여 계정을 잠그거나 잠금을 해제하고 만료합니다.
- 암호 제한은 항상 시행합니다.
- 암호 관리를 활성화하려면 SYS 사용자로 utlpwdmg.sql 스크립트를 실행합니다.
암호 계정 잠금
- FAILED_LOGIN_ATTEMPTS : 계정 잠금 전에 가능한 로그인 시도 실패 횟수
- PASSWORD_LOCK_TIME : 지정된 로그인 시도 실패 횟수 이후에 계정이 잠기는 일 수
암호 만기일 기능 및 암호 만기
- PASSWORD_LIFE_TIME : 암호를 변경해야 하는 최대 실행 주기
- PASSWORD_GRACE_TIME : 암호 만기 후 처음 로그인할 때부터 시작되는 암호 변경을 위한 유예 기간
암호 기록
- PASSWORD_REUSE_TIME : 주어진 일 수 동안 암호를 재사용할 수 없도록 지정
- PASSWORD_REUSE_MAX : 암호를 재사용할 수 있는 최대 횟수
암호확인
- PASSWORD_VERIFY_FUNCTION : 암호 할당 전에 암호 복잡성을 검사하는 PL/SQL 함수
사용자 제공 암호 함수
- SYS 스키마에 작성되어야 하고 다음의 사양을 갖고 있어야 합니다.
function_name(
userid_parameter IN VARCHAR2(30),
password_parameter IN VARCHAR2(30),
old_password_parameter IN VARCHAR2(30))
RETURN BOOLEAN
암호 확인 함수 VERIFY_FUNCTION
- 최소 길이는 네 자입니다.
- 암호는 사용자 이름과 동일하지 않아야 합니다.
- 암호는 최소한 영문자 한 개, 숫자 한 개 및 특수 문자 한 개로 구성되어야 합니다.
- 암호는 최소한 세 자가지 이전 암호와 달라야 합니다.
프로파일 생성 : 암호 설정
CREATE PROFILE grace_5 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;
프로파일 변경 : 암호 설정
- ALTER PROFILE을 사용하여 암호 제한을 변경합니다.
ALTER PROFILE default LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LIFE_TIME 60
PASSWORD_GRACE_TIME 10;
프로파일 삭제 : 암호 설정
- DROP PROFILE 명령을 사용하여 프로파일을 삭제합니다.
- DEFAULT 프로파일은 삭제할 수 없습니다.
- CASCADE는 할당한 사용자로부터 프로파일을 취소합니다.
- DROP PROFILE developer_prof;
- DROP PROFILE developer_prof CASCADE;
자원 관리
- 자원 관리 제한은 세션 레벨, 호출 레벨 또는 두 레벨 모두에서 시행할 수 있습니다.
- CREATE PROFILE 명령을 사용하여 프로파일에서 제한을 정의할 수 있습니다.
- 다음을 사용하여 자원 제한을 활성화합니다.
- RESOURCE_LIMIT 초기화 매개변수
- ALTER SYSTEM 명령
자원 제한 활성화
- 초기화 매개변수 RESOURCE_LIMIT을 TRUE로 설정
- ALTER SYSTEM 명령으로 이 매개변수를 활성화하여 자원 제한 시행
- ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
세션 레벨에서 자원 제한 설정
- CPU_PER_SESSION : 1/100초 단위로 측정한 총 CPU 시간
- SESSIONS_PER_USER : 각 사용자 이름에 허용되는 동시 세션 수
- CONNECT_TIME : 분 단위로 측정한 연결 경과 시간
- IDLE_TIME : 분 단위로 측정한 비활성 시간
- LOGICAL_READS_PER_SESSION : 데이터 블록 수(물리적 및 논리적 읽기)
- PRIVATE_SGA : 바이트 단위로 측정한 SGA의 전용 공간
호출 레벨에서 자원 제한 설정
- CPU_PER_CALL : 1/100초 단위로 측정한 호출당 CPU 시간
- LOGICAL_READS_PER_CALL : 호출당 읽을 수 있는 데이터 블록 수
프로파일 생성 : 자원 제한
CREATE PROFILE developer_prof LIMIT
SESSIONS_PER_USER 2 - 같은 계정으로 2명까지 접속 제한
CPU_PER_SESSION 10000
IDLE_TIME 60 - 1시간 동안 미사용시 접속 해제
CONNECT_TIME 480; - 8시간
오라클 실습과정
10 Profile 관리
==================================================================================
실습 10.1 Profile 조회 (필)
==================================================================================
사용 명령어
SQL> SELECT DISTINCT profile FROM DBA_PROFILES;
- Profile의 목록을 확인한다.
SQL> SELECT * FROM DBA_PROFILES
2 ORDER BY PROFILE, RESOUECE_TYPE;
- 각 Profile에 정의된 설정 값을 확인한다.
SQL> SELECT username, profile FROM DBA_USERS;
- 각 user에게 할당된 profile을 조회한다.
SQL> DESC dba_profiles; ← profile 목록이 저장된 dictionary를 확인한다.
Name Null? Type
-------------------------- -------- -----------------
PROFILE NOT NULL VARCHAR2(128)
RESOURCE_NAME NOT NULL VARCHAR2(32)
RESOURCE_TYPE VARCHAR2(8)
LIMIT VARCHAR2(128)
COMMON VARCHAR2(3)
INHERITED VARCHAR2(3)
IMPLICIT VARCHAR2(3)
SQL> SELECT DISTINCT profile FROM dba_profiles; ← profile의 목록을 확인한다.
PROFILE
----------------
ORA_STIG_PROFILE
GSM_PROF
DEFAULT ← 오라클의 default profile의 이름 (삭제 불가)
SQL> SELECT * FROM dba_profiles
2 WHERE profile = 'DEFAULT'
3 ORDER BY resource_type; ← 각 profile에 정의된 제한 사항을 확인한다.
PROFILE RESOURCE_NAME RESOURCE LIMIT COM INH IMP
----------- --------------------------- -------- ------------- --- --- ---
DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED NO NO NO
DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED NO NO NO
..........
..........
DEFAULT PASSWORD_GRACE_TIME PASSWORD 7 NO NO NO
DEFAULT PASSWORD_LOCK_TIME PASSWORD 1 NO NO NO
..........
..........
17 rows selected
SQL> SELECT username, profile FROM dba_users; ← 각 user별로 정의된 profile을 조회
USERNAME PROFILE
---------- ----------
SYS DEFAULT ← 모든 사용자가 default PROFILE에 따라 제한된다.
SYSTEM DEFAULT (default는 PROFILE 이름이다.)
..........
..........
실습 10.2 Profile 생성과 제한 설정 (필)
Profile 설정 은 password와 리소스 두 부분으로 나누어지는데 이중 리소스 관련 설정은 resource_limit가
반드시 true로 정의되었을 때 만 유효하다. 실습을 통해 profile을 생성하고 제한을 설정해 보자.
사용 명령어
SQL> CREATE[| ALTER] PROFILE <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 문장과 동일하다.
SQL> SHOW PARAMETER resource_limit
NAME TYPE VALUE
---------------------- -------------- -----------
resource_limit boolean TRUE ← 값이 false인 경우 profile의 리소스 관련 설정은 무시된다.
ALTER SYSTEM SET resource_limit=true;
SQL> CREATE PROFILE insa LIMIT ← insa profile을 생성한다. (지정하지 않은 항목은 default로 정의된다.)
2 SESSIONS_PER_USER 1
3 IDLE_TIME 5
4 CONNECT_TIME 10;
Profile created.
SQL> SELECT * FROM dba_profiles
2 WHERE PROFILE = 'INSA'
3 ORDER BY 3;
PROFILE RESOURCE_NAME RESOURCE LIMIT
---------- -------------------------------- -------- -------
INSA COMPOSITE_LIMIT KERNEL DEFAULT ← default profile과 동일한 제한을 받는다.
INSA SESSIONS_PER_USER KERNEL 1
INSA PRIVATE_SGA KERNEL DEFAULT
INSA CONNECT_TIME KERNEL 10
INSA IDLE_TIME KERNEL 5
..........
..........
SQL> ALTER PROFILE insa LIMIT ← 제한 항목의 일부를 수정한다. (문법은 CREATE 문장과 동일하다.)
2 FAILED_LOGIN_ATTEMPTS 3
3 PASSWORD_LOCK_TIME 1;
Profile altered.
SQL> SELECT * FROM dba_profiles
2 WHERE PROFILE = 'INSA'
3 ORDER BY 3;
PROFILE RESOURCE_NAME RESOURCE LIMIT
---------- -------------------------------- -------- -------
INSA COMPOSITE_LIMIT KERNEL DEFAULT
INSA SESSIONS_PER_USER KERNEL 1
INSA PRIVATE_SGA KERNEL DEFAULT
INSA CONNECT_TIME KERNEL 10
INSA IDLE_TIME KERNEL 5
..........
..........
INSA PASSWORD_LIFE_TIME PASSWORD DEFAULT
INSA FAILED_LOGIN_ATTEMPTS PASSWORD 3
INSA PASSWORD_LOCK_TIME PASSWORD 1
INSA PASSWORD_GRACE_TIME PASSWORD DEFAULT
실습 10.3 Profile 할당과 적용 (필)
사용 명령어
SQL> ALTER USER <user 명>
2 PROFILE <profile 명>;
- 사용자에게 profile을 할당한다.
- CREATE USER 명령을 통해 할당하는 것도 가능하다.
- User에 profile을 지정하지 않으면 defaule profile에 적용을 받는다.
SQL> CREATE USER emp ← USER가 존재하는 경우 건너뛴다.
2 IDENTIFIED BY emp
3 DEFAULT TABLESPACE insa
4 TEMPORARY TABLESPACE temp
5 QUOTA UNLIMITED ON insa;
User created.
SQL> GRANT connect, resource TO emp;
Grant succeeded.
SQL> SELECT username, profile
2 FROM dba_users
3 WHERE username = 'EMP';
USERNAME PROFILE
---------- ----------
EMP DEFAULT
SQL> ALTER USER emp ← insa profile을 할당한다.
2 PROFILE insa;
User altered.
SQL> SELECT username, profile
2 FROM dba_users
3 WHERE username = 'EMP';
USERNAME PROFILE
---------- ----------
EMP INSA
SQL> CONN emp/in ← 암호를 고의로 틀리게 입력한다.
ERROR:
ORA-01017: invalid username/password; logon denied
Warning: You are NO longer Connected TO ORACLE.
SQL> CONN emp/in
ERROR:
ORA-01017: invalid username/password; logon denied
SQL> CONN emp/in ← FAILED_LOGIN_ATTEMPTS가 3으로 제한되어 lock 걸린다.
ERROR:
ORA-01017: invalid username/password; logon denied
SQL> CONN emp/emp ← 암호가 맞지만 이미 lock 걸려 접속이 불가능하다.
ERROR:
ORA-28000: the ACCOUNT is locked
SQL> CONN / AS sysdba
Connected.
SQL> SELECT username, account_status FROM dba_users
2 WHERE username = 'EMP';
USERNAME account_status
---------- --------------------
INSA LOCKED(TIMED)
SQL> ALTER USER emp
2 ACCOUNT unlock; ← PASSWORD_LOCK_TIME이 1일 이므로 24시간 기다리면 자동으로 풀린다.
User altered.
SQL> SELECT username, account_status FROM dba_users
2 WHERE username = 'EMP';
USERNAME account_status
---------- --------------------
INSA OPEN
SQL> CONN emp/emp
Connected.
'데이터베이스' 카테고리의 다른 글
오라클 DB - 권한 관리, Role (0) | 2022.11.22 |
---|---|
오라클DB구조 - 사용자관리 (0) | 2022.11.16 |
데이터베이스 - 논리 모델링 (1) | 2022.11.16 |
오라클 DB - (open, close)상태에서 tablespace이동 (0) | 2022.11.15 |
데이터베이스 - 모델링(정규화) (0) | 2022.11.15 |