본문 바로가기
Development/Database

[DB] ORACLE DB SYSTEM, SYS 암호 변경

by 은스타 2020. 4. 8.
반응형
Oracle DB SYSTEM 및 SYS 사용자 암호 변경 완벽 가이드

Oracle DB SYSTEM 및 SYS 사용자 암호 변경 완벽 가이드

개요

Oracle 데이터베이스 관리자라면 반드시 알아야 할 SYSTEM 및 SYS 계정 암호 변경 방법에 대해 상세히 알아보겠습니다. 주기적인 암호 변경은 데이터베이스 보안의 핵심이며, 기업의 중요한 데이터를 보호하는 첫 번째 방어선입니다.

이 글에서는 SQL*Plus를 사용한 기본적인 방법부터 Oracle SQL Developer를 활용한 GUI 방식, 비밀번호를 잊어버렸을 때의 복구 방법, Oracle Cloud 환경에서의 암호 변경까지 다양한 상황과 환경에 맞는 암호 변경 방법을 단계별로 설명합니다.

또한 강력한 암호 정책 설정 방법과 보안 모범 사례, 자주 발생하는 오류와 해결 방법까지 실무에 필요한 모든 내용을 포괄적으로 다루고 있습니다. Oracle 데이터베이스 관리자뿐만 아니라 DBA를 준비하는 분들에게도 유용한 정보가 될 것입니다.

목차
1. Oracle 관리자 계정 개요
2. 암호 변경 전 준비사항
3. SQL*Plus를 사용한 암호 변경
4. Oracle SQL Developer를 사용한 암호 변경
5. 비밀번호를 잊어버렸을 때 재설정 방법

#1. Oracle 관리자 계정 개요
Oracle 데이터베이스는 기본적으로 두 개의 주요 관리자 계정을 제공하며, 각 계정은 고유한 역할과 권한을 가지고 있습니다.
1) SYS 계정
SYS는 Oracle 데이터베이스의 최고 권한을 가진 슈퍼 관리자 계정입니다. 데이터 딕셔너리 테이블의 소유자이며, 데이터베이스의 가장 핵심적인 구조와 메타데이터를 관리합니다.
(1) SYS 계정의 주요 특징
① 데이터 딕셔너리 소유자로서 모든 시스템 테이블과 뷰에 대한 완전한 접근 권한 보유
② SYSDBA 또는 SYSOPER 권한으로만 로그인 가능
③ 데이터베이스 시작 및 종료, 백업 및 복구 등 최고 수준의 관리 작업 수행
④ 데이터베이스가 NOMOUNT 상태일 때도 접속 가능
⑤ 일반적인 애플리케이션 작업에는 사용하지 않는 것이 보안상 권장됨
. . . . .
2) SYSTEM 계정
SYSTEM은 일반적인 관리 작업을 위한 관리자 계정으로, SYS보다는 약간 제한된 권한을 가집니다. 대부분의 일상적인 데이터베이스 관리 작업은 SYSTEM 계정으로 충분히 수행할 수 있습니다.
(1) SYSTEM 계정의 주요 특징
① DBA 역할이 부여되어 있어 대부분의 관리 작업 수행 가능
② 데이터 딕셔너리 테이블에 대한 수정 권한은 없음
③ 일반적인 SYSDBA 권한 없이도 로그인 가능
④ 사용자 생성, 권한 관리, 테이블 스페이스 관리 등 일반 관리 작업에 적합
⑤ SYS보다 안전하므로 일상적인 관리 작업에 우선적으로 사용 권장
. . . . .
3) 두 계정의 비교
구분 SYS SYSTEM
권한 수준 최고 관리자 일반 관리자
데이터 딕셔너리 소유자 (수정 가능) 조회만 가능
로그인 방식 SYSDBA 권한 필수 일반 로그인 가능
주요 용도 DB 시작/종료, 복구 등 최고 수준 작업 사용자 관리, 일반 관리 작업
보안 중요도 최고 (엄격한 관리 필요) 높음
이 두 계정은 Oracle 데이터베이스를 관리하는 데 필수적이므로, 보안을 위해 주기적으로 암호를 변경하는 것이 매우 중요합니다. 특히 운영 환경에서는 90일 주기로 암호를 변경하는 것이 일반적인 보안 정책입니다.

#2. 암호 변경 전 준비사항
안전하고 성공적인 암호 변경을 위해서는 사전 준비가 필수적입니다. 특히 운영 중인 데이터베이스의 관리자 계정 암호를 변경하는 것은 신중하게 접근해야 합니다.
1) 현재 환경 확인
현재 암호 확인: 현재 사용 중인 암호를 정확히 알고 있는지 확인
② 데이터베이스 버전 확인: Oracle 버전에 따라 암호 정책이 다를 수 있음
③ 현재 프로파일 확인: 적용된 암호 정책 및 제한사항 파악
④ 접속 권한 확인: 암호 변경에 필요한 적절한 권한 보유 여부 확인
. . . . .
2) 백업 및 안전 조치
데이터베이스 백업 수행: 중요한 변경 전에는 항상 전체 백업 또는 주요 데이터 백업
② 설정 파일 백업: tnsnames.ora, listener.ora 등 관련 설정 파일 백업
③ 현재 연결 세션 확인: 암호 변경 시 영향받을 수 있는 활성 세션 파악
④ 애플리케이션 연결 정보 확인: 변경 후 업데이트가 필요한 연결 문자열 목록 작성
. . . . .
3) 비상 계획 수립
① 복구 방법 숙지: 암호 변경 실패 시 복구 절차 사전 학습
② OS 인증 방법 확인: 비밀번호 분실 시 운영체제 인증으로 접속하는 방법 숙지
③ 연락처 준비: 문제 발생 시 연락할 기술 지원팀 또는 DBA 연락처 확보
④ 작업 시간 선정: 가능한 한 서비스 영향이 적은 시간대 선택
. . . . .
4) 새 암호 계획
강력한 암호 규칙 준수: 최소 12자 이상, 대소문자, 숫자, 특수문자 조합
② 추측 가능한 암호 피하기: 사용자 이름, 일반적인 단어, 생일 등 사용 금지
③ 이전 암호와 다른 암호 선택: 암호 재사용 방지
④ 암호 관리 정책 확인: 조직의 암호 정책이 있다면 이를 준수
준비 과정을 철저히 하면 암호 변경 작업 중 발생할 수 있는 대부분의 문제를 예방할 수 있습니다.

#3. SQL*Plus를 사용한 암호 변경
SQL*Plus는 Oracle 데이터베이스와 상호 작용하는 가장 기본적이고 강력한 명령줄 도구입니다. 모든 Oracle 설치에 기본으로 포함되어 있으며, 그래픽 인터페이스가 없는 서버 환경에서도 사용할 수 있습니다.
1) SYSTEM 계정 암호 변경
SYSTEM 계정은 일반적인 관리자 권한으로 로그인하여 암호를 변경할 수 있습니다.
-- SYSTEM으로 로그인
sqlplus system/현재_암호

-- 또는 호스트 문자열을 포함하여 로그인
sqlplus system/현재_암호@localhost:1521/ORCL

-- ALTER USER 명령어로 암호 변경
ALTER USER system IDENTIFIED BY 새_암호;

-- 성공 메시지 확인
-- User altered.
. . . . .
2) SYS 계정 암호 변경
SYS 계정은 반드시 SYSDBA 권한으로 로그인해야 하며, 이는 SYS 계정의 특별한 지위를 보여줍니다.
-- SYSDBA 권한으로 로그인
sqlplus sys/현재_암호 AS SYSDBA

-- 또는 호스트 문자열 포함
sqlplus sys/현재_암호@localhost:1521/ORCL AS SYSDBA

-- ALTER USER 명령어로 암호 변경
ALTER USER sys IDENTIFIED BY 새_암호;

-- 연결 확인
SHOW USER;
-- USER is "SYS"
. . . . .
3) ALTER USER 명령어 다양한 옵션
ALTER USER 명령어는 단순히 암호만 변경하는 것이 아니라, 다양한 계정 속성을 함께 설정할 수 있습니다.
(1) 기본 암호 변경
-- 가장 기본적인 암호 변경
ALTER USER system IDENTIFIED BY 새_암호;
(2) 암호 만료 설정
-- 암호를 변경하지만 만료되지 않도록 설정
ALTER USER system IDENTIFIED BY 새_암호 PASSWORD EXPIRE NEVER;

-- 다음 로그인 시 비밀번호 변경 강제
ALTER USER system IDENTIFIED BY 새_암호 PASSWORD EXPIRE;

-- 이 옵션은 보안상 중요한 계정에 유용
(3) 계정 잠금 해제와 함께 암호 변경
-- 계정이 잠긴 경우 잠금 해제와 동시에 암호 변경
ALTER USER system IDENTIFIED BY 새_암호 ACCOUNT UNLOCK;

-- 계정 상태 확인
SELECT username, account_status FROM dba_users WHERE username='SYSTEM';
(4) 인증 방식 변경
-- 서버 기반 인증으로 변경 (LDAP 등)
ALTER USER system IDENTIFIED GLOBALLY AS 'CN=system,OU=users,DC=company,DC=com';

-- 다시 데이터베이스 인증으로 변경
ALTER USER system IDENTIFIED BY 새_암호;
이러한 다양한 옵션을 활용하면 암호 변경과 동시에 계정 보안 정책을 효과적으로 적용할 수 있습니다.

#4. Oracle SQL Developer를 사용한 암호 변경
Oracle SQL Developer는 그래픽 사용자 인터페이스(GUI)를 제공하는 무료 통합 개발 환경입니다. 명령어를 외울 필요 없이 직관적으로 데이터베이스를 관리할 수 있어 초보자에게 특히 유용합니다.
1) SQL Developer를 통한 암호 변경 단계
Oracle SQL Developer 실행: 프로그램을 시작합니다

② 관리자 계정으로 데이터베이스에 접속: SYSTEM 또는 SYS 계정으로 연결을 생성합니다
   - SYS로 접속 시에는 Role을 'SYSDBA'로 선택해야 합니다

③ 좌측 패널에서 '기타 사용자' 폴더 확장: 연결 트리를 확장합니다

④ SYSTEM 또는 SYS 사용자를 마우스 오른쪽 버튼으로 클릭

⑤ 컨텍스트 메뉴에서 '사용자 편집' 선택

⑥ '사용자 편집' 대화 상자에서 '인증된 사용자' 탭 선택

새 비밀번호 입력 및 '비밀번호 확인' 필드에 동일한 비밀번호 재입력

⑧ '적용' 버튼 클릭하여 변경사항 저장
. . . . .
2) SQL Developer의 장점
직관적인 인터페이스: 명령어를 기억할 필요 없이 메뉴를 통해 작업 수행
② 시각적 피드백: 변경사항이 즉시 반영되는지 시각적으로 확인 가능
③ 통합 환경: 암호 변경뿐만 아니라 다양한 데이터베이스 관리 작업을 한 곳에서 수행
④ 오류 방지: 드롭다운 메뉴와 입력 검증으로 구문 오류 최소화
⑤ 다중 연결 관리: 여러 데이터베이스를 동시에 관리할 수 있는 편리함
. . . . .
3) SQL 워크시트를 통한 방법
SQL Developer 내에서 SQL 명령어를 직접 실행하는 방법도 있습니다. 이는 GUI와 명령줄 방식의 중간 형태입니다.
-- SQL 워크시트 열기 (F5 또는 도구 메뉴)
-- 다음 명령어 입력 후 실행 (Ctrl+Enter 또는 F9)

ALTER USER system IDENTIFIED BY 새_암호;

-- 하단의 '스크립트 출력' 탭에서 결과 확인
-- User SYSTEM altered.
이 방법은 GUI의 편리함과 SQL 명령어의 유연성을 동시에 활용할 수 있어 숙련된 DBA들이 자주 사용합니다.

#5. 비밀번호를 잊어버렸을 때 재설정 방법
SYS나 SYSTEM 암호를 잊어버린 경우는 데이터베이스 관리에서 가장 난처한 상황 중 하나입니다. 하지만 Oracle은 이러한 상황을 위한 몇 가지 복구 메커니즘을 제공합니다.
1) 운영체제 인증을 이용한 접속
Oracle은 운영체제 수준의 인증을 통해 SYSDBA 권한으로 접속할 수 있는 기능을 제공합니다. 이는 암호를 몰라도 데이터베이스에 접근할 수 있는 가장 안전한 백도어입니다.
(1) Windows 환경
-- 1. 관리자 권한으로 명령 프롬프트(cmd) 실행
-- Windows 검색에서 'cmd' 입력 후 '관리자 권한으로 실행' 선택

-- 2. OS 인증으로 SYSDBA 접속 (암호 불필요)
sqlplus / as sysdba

-- 3. 연결 확인
SHOW USER;
-- USER is "SYS"

-- 4. 암호 재설정
ALTER USER system IDENTIFIED BY 새_암호;
ALTER USER sys IDENTIFIED BY 새_암호;

-- 5. 변경 확인
-- User altered.
(2) Linux/Unix 환경
# 1. Oracle 사용자로 전환
su - oracle
# 또는
sudo su - oracle

# 2. 환경 변수 확인
echo $ORACLE_HOME
echo $ORACLE_SID

# 3. OS 인증으로 SYSDBA 접속
sqlplus / as sysdba

# 4. 암호 재설정
ALTER USER system IDENTIFIED BY 새_암호;
ALTER USER sys IDENTIFIED BY 새_암호;
이 방법은 서버에 물리적 또는 SSH 접근 권한이 있어야만 사용 가능하므로, 보안상 안전합니다.
. . . . .
2) 데이터베이스 비상 시작 모드 사용
데이터베이스를 특별한 모드로 시작하여 암호를 재설정하는 방법입니다. 이는 데이터베이스 재시작이 가능한 환경에서만 사용할 수 있습니다.
-- 1. OS 인증으로 SYSDBA 접속
sqlplus / as sysdba

-- 2. 데이터베이스 즉시 종료
SHUTDOWN IMMEDIATE;

-- 3. NOMOUNT 모드로 시작
STARTUP NOMOUNT;

-- 4. MOUNT 상태로 전환
ALTER DATABASE MOUNT;

-- 5. 데이터베이스 열기
ALTER DATABASE OPEN;

-- 6. 암호 재설정
ALTER USER sys IDENTIFIED BY 새_암호;
ALTER USER system IDENTIFIED BY 새_암호;

-- 7. 정상 모드로 재시작
SHUTDOWN IMMEDIATE;
STARTUP;
. . . . .
3) 암호 파일 재생성 (orapwd 유틸리티)
암호 파일을 새로 생성하는 것은 가장 강력하지만 주의가 필요한 방법입니다. 이 방법은 다른 모든 방법이 실패했을 때 최후의 수단으로 사용합니다.
(1) Windows 환경
REM 1. Oracle 홈의 database 폴더로 이동
cd %ORACLE_HOME%\database

REM 2. 기존 암호 파일 백업
rename PWD%ORACLE_SID%.ora PWD%ORACLE_SID%.ora.bak

REM 3. 새 암호 파일 생성
orapwd file=PWD%ORACLE_SID%.ora password=새_암호 entries=5 force=y

REM 파라미터 설명:
REM file: 생성할 암호 파일 이름
REM password: 새로운 SYS 암호
REM entries: 암호 파일에 저장할 최대 사용자 수
REM force: 기존 파일 덮어쓰기
(2) Linux/Unix 환경
# 1. Oracle 홈의 dbs 폴더로 이동
cd $ORACLE_HOME/dbs

# 2. 현재 디렉토리 내용 확인
ls -l orapw*

# 3. 기존 암호 파일 백업
mv orapw$ORACLE_SID orapw$ORACLE_SID.bak

# 4. 새 암호 파일 생성
orapwd file=orapw$ORACLE_SID password=새_암호 entries=5 force=y

# 5. 파일 권한 설정
chmod 640 orapw$ORACLE_SID
chown oracle:oinstall orapw$ORACLE_SID
(3) 암호 파일 재생성 후 확인
-- 1. 새 암호로 접속 시도
sqlplus sys/새_암호 as sysdba

-- 2. 접속 성공 확인
SELECT * FROM v$pwfile_users;

-- 3. 다른 관리자 계정 암호도 재설정
ALTER USER system IDENTIFIED BY system_새_암호;
주의: 암호 파일 재생성은 해당 파일에 등록된 모든 사용자의 암호를 무효화합니다. SYSDBA 또는 SYSOPER 권한을 가진 다른 사용자들도 다시 암호를 재설정해야 합니다.

마무리
이 글에서는 Oracle 데이터베이스의 SYSTEM 및 SYS 계정 암호 변경 방법에 대해 상세히 살펴보았습니다. SQL*Plus를 사용한 기본적인 명령줄 방식부터 Oracle SQL Developer를 활용한 GUI 방식, 그리고 비밀번호를 잊어버렸을 때의 복구 방법까지 다양한 시나리오를 다루었습니다.

정기적인 암호 변경과 강력한 암호 정책 적용은 데이터베이스 보안의 기본입니다. Oracle 데이터베이스 관리자는 이러한 기본 보안 관행을 준수하여 조직의 중요한 데이터를 보호해야 합니다.

특히 운영 환경에서는 90일 주기로 암호를 변경하고, 복잡성 요구사항을 충족하는 강력한 암호를 사용하며, 암호 재사용을 방지하는 것이 권장됩니다. 또한 SYSTEM과 SYS 계정은 일상적인 작업보다는 필요한 관리 작업에만 제한적으로 사용하고, 일반 작업에는 적절한 권한을 가진 별도의 계정을 사용하는 것이 보안상 바람직합니다.

비밀번호를 잊어버렸을 때를 대비하여 운영체제 인증 방법이나 암호 파일 재생성 방법을 미리 숙지하고, 필요한 경우 신속하게 복구할 수 있도록 준비하시기 바랍니다.
긴 글 읽어주셔서 감사합니다.

끝.
반응형