이 글에서는 Oracle Database 19c 환경에서 TDE(Transparent Data Encryption, 투명 데이터 암호화)를 활성화하고 자동 로그인 월렛(Auto Login Wallet)을 구성하는 전체 과정을 단계별로 살펴봅니다.
Oracle 19c에서 자동 로그인 월렛을 구성하려면 먼저 pfile 또는 spfile에 필요한 파라미터를 설정해야 합니다.
1단계. ASM에 월렛(Wallet) 폴더 생성
필요한 경우 월렛용 디렉터리를 새로 생성합니다. 월렛 디렉터리는 일반적으로 ASM 또는 $ORACLE_BASE/admin/db_unique_name/wallet 경로에 위치시키며, 해당 디렉터리는 비어 있는 상태가 이상적입니다.
./grid.env # ASM 파일 시스템 환경 설정 파일asmcmdmkdir +DATA/CLPROD/WALLET
2단계. 파라미터 파일에 월렛 정보 등록
키스토어(Keystore)의 위치와 유형을 지정하려면 pfile 또는 spfile에 WALLET_ROOT와 TDE_CONFIGURATION 파라미터를 반드시 설정해야 합니다.
. ./clprod.envalter system set wallet_root='+DATA/CLPROD/WALLET' scope=spfile;alter system set tde_configuration='KEYSTORE_CONFIGURATION=FILE' scope=spfile;
3단계. 데이터베이스 재시작
컨테이너 데이터베이스(CDB) 환경을 소싱한 뒤 SQL*Plus로 접속하여 파라미터 적용을 위해 데이터베이스를 재시작합니다.
. clprod.envsqlplus '/as sysdba'show con_name;
CON_NAME
CDB$ROOT
CLPROD> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
CLPROD> startup
ORACLE instance started.
Total System Global Area 16106127360 bytes
Fixed Size 35621984 bytes
Variable Size 1017607903 bytes
Database Buffers 534432665431 bytes
Redo Buffers 9817655 bytes
Database mounted.
Database opened.
RAC 환경이라면 SRVCTL 명령어를 사용하는 것이 좋습니다.
srvctl status database -d CLPRODsrvctl stop database -d CLPRODsrvctl start database -d CLPROD
4단계. 월렛 상태 확인
파라미터가 정상 적용되었는지 확인하기 위해 월렛 상태를 조회합니다.
SELECT WRL_TYPE, WRL_PARAMETER, STATUS, WALLET_TYPE FROM V$ENCRYPTION_WALLET;
WRL_PARAMETER 값이 WALLET_ROOT 하위의 tde 경로를 가리키고 있으면 정상입니다.
5단계. 컨테이너(CDB)용 키스토어 생성
컨테이너 데이터베이스 환경을 소싱한 후 키스토어를 생성합니다.
. clprod.envsqlplus '/as sysdba'ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '<wallet_root>/tde/' IDENTIFIED BY <password>;
생성된 키스토어를 엽니다.
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY <password> CONTAINER=ALL;
6단계. PDB용 키스토어 열기
컨테이너 데이터베이스 환경을 소싱한 뒤 각 플러거블 데이터베이스(PDB)에서도 키스토어를 열어 주어야 합니다.
. clprod.envsqlplus '/as sysdba'ALTER SESSION SET CONTAINER = PROD;ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY <password>;
여러 PDB를 한 번에 처리하려면 CONTAINER=ALL 옵션을 활용하면 편리합니다.
7단계. 자동 로그인 또는 로컬 자동 로그인 소프트웨어 키스토어 생성
컨테이너 데이터베이스 환경을 소싱한 후 비밀번호 기반 키스토어를 자동 로그인(Auto-Login) 키스토어로 변환합니다. 보안 강화를 위해서는 동일 호스트에서만 유효한 로컬 자동 로그인(Local Auto-Login) 방식을 권장합니다.
. clprod.envADMINISTER KEY MANAGEMENT CREATE LOCAL AUTO_LOGIN KEYSTORE FROM KEYSTORE '<wallet_root>/tde/' IDENTIFIED BY <password>;
8단계. 데이터베이스 재시작
자동 로그인 월렛이 정상적으로 반영되도록 데이터베이스를 다시 한 번 재시작합니다.
sqlplus '/as sysdba'CLPROD> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
CLPROD> startup
ORACLE instance started.
Total System Global Area 16106127360 bytes
Fixed Size 35621984 bytes
Variable Size 1017607903 bytes
Database Buffers 534432665431 bytes
Redo Buffers 9817655 bytes
Database mounted.
Database opened.
RAC 환경에서는 SRVCTL을 사용합니다.
srvctl status database -d CLPRODsrvctl stop database -d CLPRODsrvctl start database -d CLPROD
9단계. 자동 로그인 검증
재시작 후 월렛 상태를 다시 조회하여 WALLET_TYPE이 AUTOLOGIN으로 표시되는지 확인합니다. STATUS가 OPEN_NO_MASTER_KEY 또는 OPEN이면 정상입니다.
SELECT CON_ID, WALLET_TYPE, STATUS FROM V$ENCRYPTION_WALLET;
10단계. CDB 임시 테이블스페이스 재생성
TEMP 테이블스페이스는 온라인 암호화가 불가능하므로, 암호화 속성을 지정해 새로 생성한 뒤 기존 테이블스페이스를 교체해야 합니다.
CREATE SMALLFILE TEMPORARY TABLESPACE TEMP_NEW TEMPFILE SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED ENCRYPTION USING 'AES256';
새 테이블스페이스를 기본 TEMP로 지정한 후 기존 테이블스페이스는 삭제합니다.
11단계. 모든 컨테이너 테이블스페이스에 TDE 적용
Oracle 19c의 테이블스페이스 온라인 암호화 기능을 활용하면 서비스 중단 없이 운영 중인 테이블스페이스도 암호화할 수 있습니다.
ALTER TABLESPACE <tablespace_name> ENCRYPTION ONLINE USING 'AES256' ENCRYPT;
12단계. PDB(PROD)의 임시 테이블스페이스 삭제 및 재생성
CDB와 마찬가지로 PDB 내부의 TEMP 테이블스페이스도 암호화 속성을 적용해 신규 생성한 뒤 기존 것을 삭제·교체합니다.
13단계. 애플리케이션 서비스 재시작
암호화 작업 완료 후 애플리케이션 서비스를 재시작하여 데이터베이스 연결 및 업무 처리가 정상적으로 이루어지는지 확인합니다.
14단계. 테이블스페이스 암호화 시작
a) VNC 터미널 1번에서 다음 명령 실행
첫 번째 터미널에서 암호화 스크립트를 실행하여 암호화 작업을 개시합니다.
b) VNC 터미널 2번에서 다음 명령 실행
encrypt_prod_tspaces2.sql 스크립트를 수정·편집한 뒤 실행하여 나머지 테이블스페이스의 암호화를 순차적으로 진행합니다.
c) APPSUNDO 테이블스페이스와 SYSTEM 테이블스페이스는 마지막에 개별 처리
APPSUNDO 및 SYSTEM 테이블스페이스는 반드시 나머지 모든 테이블스페이스의 암호화가 완전히 끝난 후에 개별적으로 처리해야 합니다.
d) 암호화 프로세스 오류 발생 시 재시작
암호화 진행 중 오류가 발생했다면 다음 명령으로 실패한 암호화 작업을 다시 시작할 수 있습니다.
ALTER TABLESPACE <tablespace_name> ENCRYPTION ONLINE USING 'AES256' ENCRYPT;
마무리: TDE 도입의 장점
TDE 적용 후에는 인가된 사용자나 애플리케이션이 데이터에 접근할 때 투명하게 복호화되므로, 애플리케이션 변경 없이도 보안을 강화할 수 있습니다. TDE는 스토리지 매체나 데이터 파일이 도난당했을 경우 저장된 데이터(data at rest)를 보호하는 데 큰 도움이 됩니다.
- 기본적인 데이터 보호: 일부 백업·복제 도구는 기본적으로 암호화를 수행하지 않지만, TDE는 데이터 자체를 암호화하므로 외부 유출 시에도 안전합니다.
- 전체 데이터베이스 암호화: SYSTEM, SYSAUX, TEMP, UNDO 테이블스페이스까지 포함해 숨길 수 있습니다.
- OMF 불필요: 테이블스페이스 온라인 암호화를 사용하면 더 이상 OMF(Oracle Managed Files)가 필수가 아닙니다.
- 유연한 키스토어 관리: SYSTEM, SYSAUX, UNDO가 암호화된 상태에서도 키스토어를 닫을 수 있습니다.
참고 자료: My Oracle Support 문서 2586100.1, 2559570.1
궁금한 점이나 의견이 있다면 피드백 탭을 이용해 주세요. 언제든지 문의해 주시기 바랍니다.