
1. Oracle PROFILE이란?
Oracle의 PROFILE은 데이터베이스 사용자에게 적용되는 리소스 제한 및 암호 정책을 정의하는 객체입니다. 계정 보안, 시스템 자원 관리, 비밀번호 만료 정책 등을 효과적으로 관리하기 위해 PROFILE 기능을 활용합니다.
2. PROFILE을 사용하는 이유
- 비밀번호 만료 및 재사용 제한을 통한 보안 강화
- 세션 수, CPU 사용량 등 자원 사용 제한
- 계정 잠금 정책 설정 가능
- 회사 보안 정책을 일괄 적용
3. PROFILE 생성 예제
CREATE PROFILE dev_profile LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME 1
PASSWORD_LIFE_TIME 90
SESSIONS_PER_USER 2;
설명: 이 PROFILE은 로그인 실패 3회 초과 시 1일 동안 계정을 잠그고, 비밀번호 유효기간을 90일로 제한하며, 동시에 최대 2개의 세션만 허용합니다.
4. 사용자에게 PROFILE 할당
ALTER USER dev_user PROFILE dev_profile;
설명: dev_user 사용자에게 dev_profile을 적용합니다.
5. 주요 PROFILE 속성 설명
| 속성 | 설명 | 기본값 |
|---|---|---|
| FAILED_LOGIN_ATTEMPTS | 허용되는 로그인 실패 횟수 | 10 |
| PASSWORD_LIFE_TIME | 비밀번호 변경 주기 (일) | 180 |
| SESSIONS_PER_USER | 동시 세션 수 제한 | UNLIMITED |
| PASSWORD_REUSE_TIME | 비밀번호 재사용 제한 기간 | UNLIMITED |
| PASSWORD_REUSE_MAX | 이전에 사용한 비밀번호 재사용 횟수 제한 | UNLIMITED |
6. PROFILE 수정 및 삭제
-- PROFILE 수정
ALTER PROFILE dev_profile LIMIT SESSIONS_PER_USER 1;
-- PROFILE 삭제
DROP PROFILE dev_profile CASCADE;
CASCADE 옵션은 PROFILE이 적용된 사용자도 함께 해제되도록 합니다.
7. DEFAULT PROFILE이란?
Oracle에서는 시스템에 DEFAULT라는 기본 PROFILE이 존재하며, 새로 생성된 사용자에게 자동으로 적용됩니다. 관리자가 명시적으로 PROFILE을 지정하지 않으면 모두 DEFAULT PROFILE을 따르게 됩니다.
8. PROFILE 상태 확인
SELECT username, profile FROM dba_users;
SELECT * FROM dba_profiles WHERE profile = 'DEV_PROFILE';
사용자별 PROFILE 및 설정된 속성을 조회할 수 있습니다.
9. 비밀번호 보안 정책 예제
CREATE PROFILE secure_profile LIMIT
PASSWORD_LIFE_TIME 60
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 5
PASSWORD_VERIFY_FUNCTION verify_function;
verify_function은 사용자 정의 비밀번호 검증 함수로, 비밀번호의 강도 정책을 설정할 수 있습니다.
10. 비밀번호 검증 함수 예제
CREATE OR REPLACE FUNCTION verify_function
(username VARCHAR2, password VARCHAR2,
old_password VARCHAR2)
RETURN BOOLEAN IS
BEGIN
IF LENGTH(password) < 8 THEN
RAISE_APPLICATION_ERROR(-20001, '비밀번호는 8자 이상이어야 합니다.');
END IF;
RETURN TRUE;
END;
/
비밀번호가 8 자 미만일 경우 오류를 발생시키는 간단한 함수입니다.
11. 실무 활용 예시
- 내부 시스템 보안을 강화하고자 할 때 사용자별 리소스 제어
- 계정 도용 및 무차별 대입 공격을 막기 위한 로그인 제한
- DB 사용자 인증을 위한 비밀번호 정책 일관화
- 멀티 테넌트 환경에서 사용자 그룹별 정책 분리
12. 결론
Oracle PROFILE은 사용자 계정의 보안 정책과 시스템 리소스 제어를 위한 매우 강력한 기능입니다. 특히 기업 보안 표준을 유지하거나 컴플라이언스 요건을 충족하기 위해 PROFILE을 적절히 설계하고 적용하는 것은 필수적입니다. 실무에서는 DEFAULT PROFILE 대신 명시적이고 제한적인 PROFILE을 활용하는 것이 바람직합니다.
출처
- Oracle 공식 문서: https://docs.oracle.com/en/database/
- Oracle Database Security Guide
- 오라클 실무 보안 가이드 - 김형진 저
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] VIEW() 가상 테이블로 복잡한 SQL을 단순하게 만드는 방법 (0) | 2025.06.09 |
|---|---|
| [ORACLE] SEQUENCE() 자동 증가 값 생성 원리와 실전 예제 완벽 정리 (0) | 2025.06.09 |
| [ORACLE] ROLE() 실무 예제로 배우는 권한 관리의 핵심 기초 (0) | 2025.06.08 |
| [ORACLE] TRIGGER() 실전 예제로 배우는 데이터 자동화의 핵심 기술 (0) | 2025.06.08 |
| [ORACLE] DELETE() 문법 완전 정리 : 실무에서 자주 쓰는 예제로 배우기 (0) | 2025.06.08 |