728x90

TDE

TDE(Transparent Data Encryption)는 특정 데이터 영역을 암호화하는 것이다. 크게 보면 두가지로 테이블 스페이스를 통해 특정 데이터 공간을 암호화 하거나 테이블의 특정 칼럼만 암호화 할 수 있다.

TDE에서 사용하는 암호화 알고리즘

  1. 3DES168
  2. AES128
  3. AES198
  4. AES256

가능하면 AES256을 사용하는 것을 추천한다. WALLET 암호화 파일 생성이 완료되면 USB에 따로 저장하고 WALLET 만들 때 사용했던 암호는 꼭 보관하거나 기억해야한다.

WALLET 디렉터리 생성

cd $ORACLE_BASE
cd /oracle/app/oracle

mkdir /oracle/app/oracle/wallet

sqlnet.ora파일에 내용 추가

cd $ORACLE_HOME/network/admin
cd /oracle/app/oracle/product/19.0.0.0/db_1/network/admin

-- sqlnet.ora 파일 백업
cp sqlnet.ora sqlnet.ora_20221215

vi sqlnet.ora

ENCRYPTION_WALLET_LOCATION=
(SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/oracle/app/oracle/wallet)))

WALLET Key 생성 및 AUTO LOGIN 설정

cd /oracle/app/oracle/wallet

-- sqlplus / as sysdba 접속
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/oracle/app/oracle/wallet' IDENTIFIED BY oracle123;
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY oracle123;
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY oracle123 WITH BACKUP;
ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE '/oracle/app/oracle/wallet' IDENTIFIED BY oracle123;

Oracle TDE 테이블스페이스 생성

-- AES 128 테이블스페이스 생성
CREATE TABLESPACE TS_STRS_D
DATAFILE '/oracle/app/oracle/oradata/STRP/TS_STRS_D_001.DBF' SIZE 2048M
ENCRYPTION USING 'AES128'
DEFAULT STORAGE (ENCRYPT);

-- AES 256 테이블스페이스 생성
CREATE TABLESPACE TS_STRE_D
DATAFILE '/oracle/app/oracle/oradata/STRP/TS_STRE_D_001.DBF' SIZE 2048M
ENCRYPTION USING 'AES256'
DEFAULT STORAGE (ENCRYPT);

-- TDE 생성 확인
SELECT
    A.NAME, 
    B.ENCRYPTIONALG,
    C.NAME,
    C.BYTES/1024/1024 AS "SIZE(MB)"
FROM 
    V$TABLESPACE A,
    V$ENCRYPTED_TABLESPACES B,
    V$DATAFILE C
WHERE A.TS# = B.TS#
AND   A.TS# = C.TS#
ORDER BY 1,2;

테이블 특정 칼럼 암호화(ENCRYPT AES256)

CREATE TABLE SYSTEM.TDE_TEST4
(
    T_NAME	VARCHAR2(500),
    T_KEY		VARCHAR2(500),
    T_MOB		VARCHAR2(100)	ENCRYPT USING 'AES256',
    T_ADR		VARCHAR2(2000)	ENCRYPT USING 'AES256'
)
TABLESPACE SYSAUX;

Tips.

TDE의 암호화된 공간은 테이블의 데이터만 넣어주어야 한다. 암호화되면 DB성능에 영향이 있기 때문에 테이블만 넣고 인덱스는 일반 테이블 스페이스 공간에 넣어주어야 문제 없이 사용이 가능하다. 개인 정보가 있는 중요한 데이터만 넣고 테이블의 데이터가 너무 크면 특정 칼럼만 암호화해서 사용하는게 좋다.

참고

https://www.youtube.com/watch?v=u5ReY3qi9Lg 

 

728x90

+ Recent posts