DB 보안 점검 · 계정관리
오라클 KISA 계정관리 1~5번: 확인 방법과 조치 방법(SQL)
아래는 KISA 점검표 중 계정관리 1~5번(D-01~D-05)을 대상으로, 확인 SQL(점검)과 조치 SQL(권고)를 바로 적용 가능한 형태로 정리한 내용이다.
적용 전 주의사항
계정 잠금/삭제, 프로파일 변경은 서비스 장애로 이어질 수 있다.
변경 전에는 반드시 “대상 계정의 용도(업무/연동/배치)”, “영향 범위”, “롤백 절차”를 함께 정리한 뒤 적용한다.
- 권한 조회 뷰:
DBA_USERS,DBA_PROFILES,DBA_ROLE_PRIVS,DBA_SYS_PRIVS - 조회 권한이 없으면
ALL_*/USER_*로 대체 가능하나, 점검 정확도는 떨어질 수 있음 - 일부 컬럼(예:
LAST_LOGIN)은 DB 버전/옵션에 따라 존재 여부가 다름
D-01 기본 계정의 패스워드·정책 변경
설치/샘플/기본 계정이 남아 있거나 초기 정책이 그대로면, 공격자가 계정 목록을 바탕으로 침투를 시도하기 쉽다.
확인 방법(SQL)
-- 잠재적 기본/샘플 계정 상태 확인(환경에 따라 목록 조정)
SELECT username, account_status, profile
FROM dba_users
WHERE username IN ('SCOTT','HR','OE','PM','SH','OUTLN','ANONYMOUS')
ORDER BY username;
-- 패스워드 정책(프로파일) 확인
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE resource_name IN (
'FAILED_LOGIN_ATTEMPTS','PASSWORD_LIFE_TIME','PASSWORD_GRACE_TIME',
'PASSWORD_LOCK_TIME','PASSWORD_REUSE_TIME','PASSWORD_REUSE_MAX',
'PASSWORD_VERIFY_FUNCTION'
)
ORDER BY profile, resource_name;
조치 방법(SQL 예시)
-- 불필요하면 잠금(삭제는 영향도 확인 후)
ALTER USER SCOTT ACCOUNT LOCK;
-- 필요 시 비밀번호 변경(예시)
ALTER USER HR IDENTIFIED BY "강력한비밀번호_예시!2026";
-- 표준 프로파일 적용(예시: 사전 생성된 SECURE_PROFILE 가정)
ALTER USER HR PROFILE SECURE_PROFILE;
D-02 불필요 계정 제거 또는 잠금 설정
미사용 계정은 사고 시 가장 먼저 악용되는 공격면이다. “잠금 → 유예기간 → 삭제”처럼 단계화하는 방식이 안전하다.
확인 방법(SQL)
-- 사용자 계정 현황(시스템 계정 제외: oracle_maintained='N')
SELECT username, account_status, created, profile
FROM dba_users
WHERE oracle_maintained = 'N'
ORDER BY created DESC;
-- (가능한 경우) 마지막 로그인 확인: 버전에 따라 LAST_LOGIN 존재
-- 컬럼이 없으면 이 쿼리는 실패할 수 있으니, 환경 확인 후 사용
SELECT username, account_status, last_login
FROM dba_users
WHERE oracle_maintained = 'N'
ORDER BY last_login NULLS FIRST;
조치 방법(SQL 예시)
-- 1) 즉시 삭제 대신 잠금으로 1차 차단
ALTER USER SOME_USER ACCOUNT LOCK;
-- 2) 계정 만료(정책에 따라 사용)
ALTER USER SOME_USER PASSWORD EXPIRE;
-- 3) 유예기간 후 제거(객체 소유 여부/연동 영향 확인 필수)
-- DROP USER SOME_USER CASCADE;
* DROP USER CASCADE는 스키마 오브젝트까지 제거할 수 있으므로, 운영에서는 소유 오브젝트/연동 영향 분석 후 진행 권고.
D-03 비밀번호 사용기간·복잡도 정책 설정
기관 정책(주기, 복잡도, 잠금, 유예기간)에 맞춘 프로파일을 표준화하면, 예외 계정이 줄고 점검/감사도 단순해진다.
확인 방법(SQL)
-- 프로파일별 패스워드 정책 확인
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE resource_name IN (
'PASSWORD_LIFE_TIME',
'PASSWORD_GRACE_TIME',
'PASSWORD_VERIFY_FUNCTION',
'FAILED_LOGIN_ATTEMPTS',
'PASSWORD_LOCK_TIME'
)
ORDER BY profile, resource_name;
-- 사용자별 적용 프로파일 확인
SELECT username, profile
FROM dba_users
WHERE oracle_maintained = 'N'
ORDER BY profile, username;
조치 방법(SQL 예시)
-- 표준 프로파일 생성/수정(예시 값은 정책에 맞게 조정)
CREATE PROFILE SECURE_PROFILE LIMIT
PASSWORD_LIFE_TIME 90
PASSWORD_GRACE_TIME 7
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LOCK_TIME 1/24
PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION;
-- 적용(예시)
ALTER USER APP_USER PROFILE SECURE_PROFILE;
* VERIFY_FUNCTION은 버전별 기본 함수가 다를 수 있다. 운영 정책에 맞춘 커스텀 함수 사용 여부도 함께 관리하는 것이 좋다.
D-04 DBA 권한 최소화(필요 계정/그룹에만 허용)
DBA 권한은 침해 시 파급이 매우 크다. 계정 개수 자체를 줄이고, 업무 분리(운영/개발/감사)까지 함께 설계하는 것이 핵심이다.
확인 방법(SQL)
-- DBA 롤 보유 계정 확인
SELECT grantee, granted_role, admin_option
FROM dba_role_privs
WHERE granted_role = 'DBA'
ORDER BY grantee;
-- 강한 시스템 권한 보유 계정 확인(대표 예시)
SELECT grantee, privilege, admin_option
FROM dba_sys_privs
WHERE privilege IN ('CREATE USER','ALTER USER','DROP USER','GRANT ANY PRIVILEGE','GRANT ANY ROLE')
ORDER BY grantee, privilege;
조치 방법(SQL 예시)
-- 불필요한 DBA 롤 회수
REVOKE DBA FROM SOME_USER;
-- 권한 재위임 방지(ADMIN OPTION 제거가 필요한 경우: 재부여 구조 점검)
-- REVOKE ... 는 동일, 구조를 재설계한 뒤 필요한 최소 권한만 부여
-- 대안: 업무용 롤을 분리해 최소 권한만 부여(예시)
-- CREATE ROLE OPS_USER_MGMT;
-- GRANT CREATE USER, ALTER USER TO OPS_USER_MGMT;
-- GRANT OPS_USER_MGMT TO OPS_ADMIN;
D-05 패스워드 재사용 제약 설정
비밀번호를 “돌려쓰기”하면 정책의 실효성이 떨어진다. 재사용 제한은 이력(횟수) 또는 기간(일수) 기준으로 설계한다.
확인 방법(SQL)
-- 재사용 정책 확인(프로파일별)
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE resource_name IN ('PASSWORD_REUSE_TIME','PASSWORD_REUSE_MAX')
ORDER BY profile, resource_name;
조치 방법(SQL 예시)
-- 예시: 재사용 금지 정책(정책에 맞게 조정)
ALTER PROFILE SECURE_PROFILE LIMIT
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 10;
-- 특정 사용자에 적용
ALTER USER APP_USER PROFILE SECURE_PROFILE;
* PASSWORD_REUSE_TIME / PASSWORD_REUSE_MAX는 함께 설계하는 경우가 많다. “기간 기반” vs “이력 기반” 중 기관 정책에 맞춰 선택/조합 권고.
'지식 공유 > DBMS' 카테고리의 다른 글
| 오라클 KISA 접근관리 11~15번: 확인 SQL과 조치 방법 정리 (0) | 2026.02.25 |
|---|---|
| 오라클 KISA 계정관리 6~10번: 확인 SQL과 조치 방법 정리 (0) | 2026.02.25 |
| 오라클 계정 관리 KISA 점검 항목 정리: D-01~D-26 체크리스트 (0) | 2026.02.25 |
| Oracle Lock Session이란? 발생 원인과 대처, Wait Event 확인 방법 (0) | 2026.02.24 |
| TNS-12543 / TNS-00513 오류: 호스트 연결 실패 (0) | 2026.01.25 |
