• TDE(Transparent Data Encryption)
    • 응용 프로그램의 수정 없이 DB 내부에서 컬럼, 데이블스페이스 레벨의 암호화(어플리케이션 변경없음)
    • 데이터는 디스크에 저장되는 과정에서 투명하게 암호화되며, 정상적인 인증 및 권한 할당을 거친 애플리케이션 사용자가 읽기를 시도할 때 역시 투명하게 복호화

   

  • TDE에서 지원되는 암호화 알고리즘

  • TDE에서 지원되는 데이터 형식

    3-1 CHAR / NCHAR / VARCHAR2 / NVARCHAR2

    3-2 DATE / TIMESTAMP

    3-3 NUMBER / BINARY_FLOAT / BINARY_DOUBLE

    3-4 RAW

   

  • TDE 암호화 방식의 비교

   

Column Level Encryption(10g,11g)

-테이블의 특정 컬럼만 암호화

-블록의 특정 부분만 암호화

-SQA에도 암호화된 채로 존재

  

Tablespace Level Encryption(11g)

-테이블스페이스 전체가 암호화

-SGA에서는 Clear Text로 존재

-기존 SQL 및 DB 기능 사용 제약 없음

-테이블 사이즈의 증가가 없음

   

   

  • System, Sysaux, Undo, Temp의 경우 테이블 스페이스 레벨 암호화 방식을 사용할 수 없음
  • Exp에 / Impdp는 TDE를 지원(10gR2 , 11g)
  • Bitmap index, index range scan 지원
  • Lob 지원, Logminer, logical standby db, streams, HSM(Hardware Security Module)

       

   

  • TDE Setting / Management

       

    5-0 TDE 설치 여부 확인

SELECT parameter,value

from v$option where parameter='Transparent Data Encryption'

   

TRUE

  

   

5-1 Wallet File 지정

  • Sqlnet.ora file에 지정
  • $ORACLE_HOME/network/admin/sqlnet.ora 수정

       

ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/oracle/app/oracle/product/10.2.0/wallet/$ORACLE_SID)))

  

   

5-2 Wallet Management

   

  • Wallet Creation
    • SQL> alter system set encryption key identified by "test";

       

  • Wallet Open / Close
    • SQL> alter system set encryption wallet open identified by "test";
    • SQL> alter system set wallet close;

       

  • Wallet 상태 확인
  • SQL> select * from v$encryption_wallet (10.2.0.4 version 이상 사용 가능)

       

       

5-3 Column Level Encryption(10g,11g)

   

  • Encrytion SQL

       

    ALTER TABLE scott.emp modify (encrypt  jumin using 'AES256');

    ALTER TABLE scott.emp modify ( encrypt jumin 'AES256' no salt);

       

       

  • 암호화 알고리즘 및 옵션선정 : AES 256, INDEX 컬럼인 경우 NO SALT, 아닌 경우 SALT

       

  • Decrytion SQL

    ALTER TABLE scott.emp modify (jumin decrypt);

       

       

5-4 Tablespace Level Encryption(11g)

   

CREATE TABLESPACE ts_encrypted
DATAFILE '/u01/app/oracle/oradata/orcl/encrypted_ts01.dbf' SIZE 128K
AUTOEXTEND ON NEXT 64K
ENCRYPTION USING 'AES256'
DEFAULT STORAGE(ENCRYPT);

ALTER USER test QUOTA UNLIMITED ON ts_encrypted;

  

   

CREATE TABLE employee

( first_name VARCHAR2(128),

last_name VARCHAR2(128),

empno NUMBER ENCRYPT NO SALT,

salary NUMBER(6) ENCRYPT USING 'AES256' );

  

CREATE TABLE test (
id NUMBER(10),
data VARCHAR2(50)
)
TABLESPACE ts_encrypted;

  

   

CREATE INDEX test_idx ON test(data) TABLESPACE ts_encrypted;

  

   

  • Data PUMP 이관(Tablespace)

TDE Tablespace PUMP 사용 옵션

   

1. encryption - 덤프하기젂에 데이터의 암호화 여부를 표시합니다.

[all | data_only |encryped_colums_only | metadata_only |none

all - 모두 암호화

data_only - data만 암호화

encryped_colums_only - encryped_colums만 암호화

metadata_only - metadata만 암호화

none - 암호화 하지 않음

   

2. ENCRYPTION_ALGORITHM - 암호화를 사용하는데 사용하는 알고리즘입니다.

오라클 10g의 RMAN과 동일하게 작동합니다.

[ AES128 | AES192 | AES256]

   

3.ENCRYPTION_MODE - 암호화및 해독을 수행할 때 모드입니다.

[DUAL | PASSWORD | TRANSPARENT]

password - 덤프 파일 셋트를 만드는 암호를 지정합니다. expdp와 impdp 모두

encryption_password절을 지정해줘야 합니다. passwd가 틀리면 impdp가 되지 않습니다.

TRANSPARENT - expdp 와 impdp 모두 encryption_password 파라메터를 쓰지 않습니다.

DUAL - expdp 때 encryption_password를 지정해주나 impdp때 encryption_password 절을 쓰지 않아도 됩니다.

   

   

[참고자료]
Oracle 성공적인 데이터베이스 암호화 구축 및 운영 방안

http://www.oracle-base.com/articles/11g/tablespace-encryption-11gr1.php

http://www.oracle.com/technetwork/database/security/twp-transparent-data-encryption-bes-130696.pdf

https://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CD4QFjAB&url=http%3A%2F%2Fsupport.dbworks.co.kr%2F%3Fmodule%3Dfile%26act%3DprocFileDownload%26file_srl%3D9148%26sid%3D729ecd65aa02a077068bc805d6ee0734&ei=FPtWUbWiConnkAXqqIBY&usg=AFQjCNG-BNIg5ts_3AciAjt6WUlNIxqRzQ&sig2=r88gJKXJORxPpJwnbbv1GQ&bvm=bv.44442042,d.dGI&cad=rjt

   

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,