이번에 DB 암호화를 진행해야 하는 일정이 생겨 이참에 DB 암호화에 대해 정리해보고자 합니다.
DB암호화 방법에는 매우 여러가지 방법이있으나 사용하고 있는DB는 oracle 11g인관계로 11g 기준으로 작성해봅니다.
암호화를 하기전에는 당연히 암호화 테이블에대해 선정이 필요합니다.
크게 아래와 같은 절차로 암호화를 진행합니다.
1. 암호화 테이블 선정
2. Wallet key 파일생성,암호설정
3. 선정된 테이블 암호화 tablespace로 move
4. 암호화 테이블의 인덱스 암호화 tablespace로 move
5. LOB 인덱스 이동 (Lob index restore)
이제 본격적으로 작업전 시스템의 비정상 object목록을 정리합니다.
select count(*) from dba_indexes where status <> 'VALID';
select count(*) from dba_objects where status <> 'VALID';
(위와 같이 미리 비정상 object들을 알아두는 이유는 작업후에 이상유무를 판단하기위함입니다.)
이후 아래와같이 WALLET Key경로와 파일을 생성하여줍니다.
$TNS_NAME 경로로 이동하여 sqlnet.ora 파일에 아래를 추가합니다.
1. sqlnet.ora 수정
############################################################### # # This file is automatically generated by AutoConfig. It will be read and # overwritten. If you were instructed to edit this file, or if you are not # able to use the settings created by AutoConfig, refer to Metalink Note # 387859.1 for assistance. # #$Header: NetServiceHandler.java 120.19.12010000.6 2010/03/09 08:11:36 jmajumde ship $ # ############################################################### NAMES.DIRECTORY_PATH=(TNSNAMES, ONAMES, HOSTNAME) SQLNET.EXPIRE_TIME= 10 SQLNET.INBOUND_CONNECT_TIMEOUT =60 DIAG_ADR_ENABLED=ON ADR_BASE=/APP/oracle/oratest/db/tech_st/11.2.0/admin/ORATEST_ebs SEC_USER_AUDIT_ACTION_BANNER = /~~~~~~~/appsutil/template/txkDBSecUserAuditActionBanner.txt #아래를추가 ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY= /oracle/oratest/WALLET))) IFILE=/oracle/oratest/db/tech_st/11.2.0/network/admin/ORATEST_ebs/sqlnet_ifile.ora |
2. /oracle/oratest/WALLET 경로 생성 후 masterkey 생성
SQL> alter system set encryption key identified by " test!@#""; System altered. |
3. 이후 Database 재기동시 mount단계에서 wallet open해준다.
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> SQL> startup mount; ORACLE instance started. Total System Global Area 5344731136 bytes Fixed Size 2230912 bytes Variable Size 553649536 bytes Database Buffers 4764729344 bytes Redo Buffers 24121344 bytes Database mounted. SQL> alter system set encryption wallet open identified by " test!@#""; System altered. SQL> alter database open; Database altered. |
4. 암호화 테이블 스페이스 생성
(암호화 알고리즘에는 여러가지가 있으나 AES128로 선정하였습니다.)
CREATE TABLESPACE ENC_TDE_DATA DATAFILE LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO ENCRYPTION USING 'AES128' DEFAULT STORAGE(ENCRYPT); CREATE TABLESPACE ENC_TDE_IDX DATAFILE '/oracle/data/ENC_TDE_IDX.dbf' SIZE 3000M AUTOEXTEND ON LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO ENCRYPTION USING 'AES128' DEFAULT STORAGE(ENCRYPT); |
5. 암호화 대상 테이블 MOVE
select 'alter table '||a.owner||'.'||a.table_name||' move tablespace 암호화테이블스페이스 ;'
from dba_tables a
where table_name in
(
'테이블명'
)
alter table Owner.테이블명 move tablespace ENC_TDE_DATA ; |
6. 암호화 대상테이블의 인덱스 rebuild
select 'alter index '||a.owner||'.'||a.index_name||' rebuild tablespace 암호화테이블스페이스_인덱스 parallel 1;'
from dba_indexes a
where table_name in
(
'테이블명'
)
alter index Owner.테이블명 rebuild tablespace ENC_TDE_IDX parallel 1; |
7. 시스템 재기동 ORA-28365 발생하는경우 아래를 수행
ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "test!@#”; |
8. 이상유무확인.
9. /oracle/oratest/에 위치한 wallet file (ewallet.p12) 파일은 안전한곳에 따로 보관해둔다.
만일 ewallet.p12 파일을 유실하여 재생성할경우 데이터 유실되며 장애로 이어지기때문에 따로 보관해두어 언제든지 restore할수 있도록한다.
ERP 사용자들 암호를 모두 expire 시키기, (0) | 2016.03.22 |
---|---|
수행했던 form 프로그램의 sql을 확인 방법 (0) | 2016.01.12 |
EBS 12.2 환경에서 jsp 파일 등록, jsp compile (0) | 2015.12.28 |
quick selection기능 안됨 (0) | 2015.12.25 |
12.1 환경에서 web adi 실행시 엑셀2010에서 에러발생 (0) | 2015.12.25 |