본문 바로가기

Oracle

[스크랩] 암호 보안 및 자원 관리

1. 프로파일
프로파일은 다음과 같은 암호와 자원 한계를 정의한 파일입니다.
데이터베이스 관리자는 프로파일을 생성후 각 사용자에게 할당할 수 있습니다. 만약 자원 한계가
활성화되면 오라클 서버는 사용자의 정의된 프로파일에 따라 데이터베이스 사용과 자원을 제한합니다
 
- 암호 만료
- 암호 히스토리
- 암호 복잡성 검증
- 계정 잠금
- CPU 시간
- Input/Output 작업
- 쉬는 시간
- 접속 시간
- 메모리 공간(MTS 환경에서의 Private SQL)
- 동시 접속 세션수



☞ DEFAULT 프로파일
데이터베이스가 생성될 때 DEFAULT 프로파일은 자동으로 생성되며, 외부적으로 특정 프로파일을
할당 받지 않은 사용자는 DEFAULT 프로파일의 한계에 따릅니다.
DEFAULT 프로파일의 모든 한계는 초기에 무제한이지만 데이터베이스 관리자는 DEFAULT로 모든
사용자를 관리하기 위해 한계 값을 변경할 수 있습니다
 
☞ 프로파일 사용
프로파일은 다음과 같은 경우에 사용됩니다.
- 사용자가 많은 자원을 요구하는 작업을 할 때 사용자를 제한함
- 사용자가 작업을 하지 않고 있을 때 사용자를 LOG OFF 시킴
- 유사한 사용자들을 위한 자원 한계를 그룹 지을 수 있음
- 쉽게 사용자에게 자원 한계를 할당
- 크고 복잡한 다수 사용자 데이터베이스 시스템을 관리
- 암호 사용을 조절
 
[프로파일의 특성]
- 프로파일을 할당하면 현재 세션에는 영향을 미치지 않습니다
- 프로파일은 사용자에게만 할당 할 수 있지 룰이나 다른 프로파일에 할당 할 수 없습니다
- 사용자를 생성할때 프로파일을 할당하지 않으면 사용자는 자동으로 DEFAULT 프로파일을
   할당 받습니다.
 
2. 암호관리
전체적인 데이터베이스 안전을 조절하기 위해서, 오라클 암호 관리는 프로파일을 사용한 데이터베이스 관리자에 의해 조절됩니다

암호 관리를 제한하기 위한 프로파일을 생성하여 CREATE USER 혹은 ALTER USER 명령을

사용하여 사용자에게 프로파일을 할당합니다. 암호 한계는 항상 적용됩니다.
암호 관리가 시작되면 사용자 계정을 CREATE USER 혹은 ALTER USER 명령을 사용하여

잠그거나 풀 수 있습니다

 
1) 암호한계
☞ 암호계정 잠김
오라클 서버는 자동으로 FAILED_LOGIN_ATTEMPTS 값에 도달한 후에 계정을 잠급니다.
잠긴 계정은 PASSWORD_LOCK_TIME에 정의된 시간 후에 계정이 풀리거나 데이터베이스
관리자가 ALTER USER 명령을 사용하여 풀어야 합니다
 
 파라미터  설명
FAILED_LOGIN_ATTEMPTS  계정이 잠기기 전에 실패한 LOGIN 수 
PASSWORD_LOCK_TIME LOGIN이 실패한 후 계정이 잠겨 있는 일 수  
[참고] ALTER USER 명령에 의해 잠긴 계정은 자동으로 풀리지 않음
 
☞ 암호만료
PASSWORD_LIFE_TIME에서 정의된 최대 유효기간지나면 사용자는 자신의 암호를 변경해야만 합니다. 데이터베이스 관리자는 암호 만료 후 첫번 째 login한 후부터 시작하여 PASSWORD_GRACE_TIME에 의해 유예기간을 지정할 수 있습니다.
유효기간이 만료하기 전까지 사용자가 login 할 때마다 경고 메세지가 보내집니다
 
 
 파라미터  설명
PASSWORD_LIFE_TIME  암호의 유효일 수
PASSWORD_GRACE_TIME  암호 만료후 첫번 째 LOGIN부터 암호 변경 유예 기간

☞ 암호 히스토리
암호 히스토리는 사용자가 특정 기간동안 동일한 암호를 재사용하지
못하도록 합니다
 
 파라미터 설명 
 PASSWORD_REUSE_TIME 암호를 재사용 할 수 없는 일 수 
 PASSWORD_REUSE_MAX 암호를 재사용 할 수 있는 횟 수
[참고] 한개의 파라미터가 DEFAULT 혹은 UNLIMITED 가 아닌 다른 값으로 설정 됐으면
          다른 파라미터가 반드시 UNLIMITED 로 설정되어야 합니다
 
☞ 암호인증
사용자에게 새로운 암호를 할당하기 전에 암호의 타당성을 인증하는 PL/SQL 함수를 사용할 수 있습니다.
 오라클 서버는 기본 함수를 제공하며 데이터베이스 관리자가 PL/SQL 함수를 만들 수도 있습니다.
 
 
 파라미터 설명 
PASSWORD_VERIFY_FUNCTION 암호를 할당하기 전에 암호의 복잡성을 체크할 PL/SQL 함수 

2) 암호지정
프로파일 생성, 변경, 삭제에 대해 알아보겠습니다.
☞ 프로파일 생성
 
CREATE PROFILE profile LIMIT
 [FAILED_LOGIN_ATTEMPTS max_value ]
 [PASSWORD_LIFE_TIME max_value ]
 [ {PASSWORD_REUSE_TIME | PASSWORD_REUSE_MAX} max_value ]
 [PASSWORD_LOCK_TIME max_value ]
 [PASSWORD_GRACE_TIME max_value ]
 [PASSWORD_VERIFY_FUNCTION {function|NULL|DEFAULT} ]

 
[참고] OEM 을 사용한 암호 한계 프로파일 생성
 
 
☞ 프로파일 변경
 
ALTER PROFILE profile LIMIT
 [FAILED_LOGIN_ATTEMPTS max_value ]
 [PASSWORD_LIFE_TIME max_value ]
 [ {PASSWORD_REUSE_TIME | PASSWORD_REUSE_MAX} max_value ]
 [PASSWORD_LOCK_TIME max_value ]
 [PASSWORD_GRACE_TIME max_value ]
 [PASSWORD_VERIFY_FUNCTION {function|NULL|DEFAULT} ]

 
☞ 프로파일 삭제
 DROP PROFLIE profile [CASCADE]
[참고]
- DEFAULT 프로파일은 삭제할 수 없습니다
- 프로파일을 삭제하면 현재 세션에는 영향이 없고 새로운 세션에만 영향을 미칩니다.
 
3. 자원관리
프로파일로 자원의 사용을 조절하려면 다음의 단계로 수행합니다
- 자원의 한계를 정의한 프로파일을 CREATE PROFILE 명령으로 생성함
- CREATE USER 혹은 ALTER USER 명령으로 사용자에게 프로파일을 할당함
- ALTER SYSTEM 혹은 파라미터 파일을 사용하여 자원 한계를 활성화 시킴
 
1) 자원한계 활성화
RESOURCE_LIMIT 파라미터를 변경하거나 ALTER SYSTEM 명령을 사용하여 자원 한계를 활성화
혹은 비활성화 할 수 있습니다.
☞ RESOURCE_LIMIT 파라미터
- 파라미터 파일의 RESOURCE_LIMIT 파라미터를 변경하면 데이터베이스를 다시 시작합니다
- 파라미터 값을 TRUE로 설정하면 활성화되고, FALSE로 설정하면 비활성화 됩니다
- 서버 구조에 자원 한계 적용을 활성화 혹은 비활성화 시킵니다
 
☞ ALTER SYSTEM 명령
- 인스턴스에 자원 한계 적용을 활성화 혹은 비활성화 시킵니다
- ALTER SYSTEM 명령은 다시 명령이 수행되거나 데이터베이스가 종료되기 전까지 유효합니다
- 데이터베이스를 종료할 수 없을 때 이 방법을 사용합니다

ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
 
2) 자원의 한계
☞ 세션 레벨 자원 한계

자원 설명 
 CPU_PER_SESSION  1/100초 단위로 측정한 총 CPU 시간
 SESSIONS_PER_USER  각 USER 이름에 허용되는 동시 SESSION 수
 CONNECT_TIME  분 단위로 측정한 연결 경과 시간
 IDLE_TIME  분 단위로 측정한 비 활성 시간
 LOGICAL_READS_PER_SESSION  DATA BLOCK 수 (물리적 및 논리적 읽기)
 PRIVATE_SGA  바이트 단위로 측정한 SGA의 전용 공간
(Shared Server 전용)
세션레벨 한계는 각 접속에 적용됩니다
 
세션 레벨 한계를 초과하면 다음과 같습니다
- 에러메시지를 보냄
   ORA-02391 : exceed simultaneous SESSIONS_PER_USER limit
- 오라클 서버는 사용자 접속을 끊어 버림
 
 
☞ 콜 레벨 자원 한계

자원 설명 
 CPU_PER_CALL  1/100초 단위로 측정한 Call당 CPU 시간
 LIGICAL_READS_PER_CALL  Call당 읽을 수 있는 Data block 수


콜레벨 한계를 초과하면 다음과 같습니다
- 문장이 취소됨
- 앞에 수행된 모든 문장은 영향을 받지 않음
- 사용자 세션은 접속이 유지됨
 
3) 프로파일 생성 :: 자원한계
다음과 같은 명령으로 프로파일을 생성합니다
 
 
OEM을 사용한 자원 한계 프로파일 생성
 
 
4. 암호화 자원 한계정보
☞ DBA_USERS : 사용자에게 할당된 프로파일 정보를 보여줍니다
    SQL> SELECT username, profile, account_status
             FROM dba_users;
  
☞ DBA_PROFILES : 프로파일에 대한 정보를 보여줍니다
    SQL> SELECT resource_name, limit
             FROM dba_profiles
             WHERE profile = 'DEFAULT'
             and resource_type = 'RESOURCE';