Transparent Data Encryption(TDE) OS DB Author Email HomePage Linux 11g R2 윤현 sensyh@dbworks.co.kr http://www.dbworks.co.kr http://support.dbworks.co.kr
Part I TDE 란? TDE 개요 TDE 이점 Part II TDE Column Encryption TDE Column Encryption 에서사용할수없는기능 TDE Column 예제 Part III TDE Tablespace Encryption TDE Tablespace 새로운기능 TDE Tablespace 예제
1. TDE 란? TDE 는테이블스페이스및테이블에저장된싞용카드번호와같은민감한데이터를암호화하는 기능입니다. 암호화된데이터는데이터베이스데이터에접근하는사용자또는응용프로그램을위해투명하게해독됩니다 TDE 는저장장치또는데이터파일의도난으로부터데이터를보호합니다. 2. TDE 개요 Oracle 데이터베이스는데이터보호를위해인증, 권한부여, 감사메커니즘을사용하지만데이터가저장된 OS data file 에대해서는그러한메커니즘이적용되지않습니다.. 이러한데이터파일을보호하기위해오라클데이터베이스는 TDE 를제공합니다 TDE 는데이터파일에저장된민감한데이터를암호화합니다 TDE 는무단해독을방지하기위하여암호키를데이터베이스외부의보안모듈 (HMS, Oracle Wallet) 안에저장합니다. 데이터베이스사용자와어플리케이션은 key 저장소를관리하거나보조테이블, 뷰, 트리거를생성할필요가없습니다. 또한응용프로그램의변경없이강력한데이터암호화를제공하는 TDE 를사용할수있습니다. TDE 의사용은싞용카드번호나주민번호같은기밀데이터를보호합니다. 젂체테이블스페이스암호화를위해 TDE 를사용할수있습니다. 2. TDE 이점 보안관리자로서저장매체또는데이터파일을도단당한경우에민감한데이터를안젂하게보호할수있습니다. TDE 는보완관렦규제준수문제를해결할수있습니다. 승인된유저또는어플리케이션은데이터해독을위해트리거또는뷰를생성할필요가없습니다. 테이블에서데이터는유저및어플리케이션에게투명하게해독됩니다. 데이터베이스사용자와어플리케이션은엑세스하는데이터를암호화된형태로저장되어있다는사실을알고있을필요가없습니다데이터는투명하게해독됩니다. 암호화된데이터를처리하기위해어플리케이션을수정할필요가없습니다. 데이터암화화및해독은데이터베이스에의해관리됩니다. key 관리작업이자동화되어있습니다. 사용자또는어플리케이션은암호화키를관리할필요가없습니다.
1. TDE Column Encryption TDE column 암호화기법은선택한테이블의컬럼의데이터들을암호화합니다. TDE column 암호화는테이블컬럼에저장된싞용카드및주민번호같은기밀데이터를보호하는데사용됩니다. TDE column 암호화는 table column 을암호화및해독하기위해두계층, 키기반아키텍처를사용합니다. TDE master 암호화키는 Oracle wallet 또는 Hardware Sercurity Module(HMS) 같은외부보안뮤듈에저장됩니다. master 암호화키는테이블컬럼을암호화하고해독하는데사용되는 table key 를암호화하는데사용됩니다. master 암호화키는오직보안관리자만이접속할수있는데이터베이스밖의외부보안모듈에저장됩니다. 이외부보안모듈의경우 oracle wallet 또는 HSM 을사용합니다. master 암호화키저장방식은무단사용을방지합니다. 외부보안모듈의사용은암호화작업에서데이터베이스관리자와보안관리자사이의의무를나누는것을가능하게합니다. 테이블에암호화된컬럼을포함하면단일테이블키를암호화된열개수에관계없이사용합니다. 모든테이블에대한테이블키는데이터베이스의딕셔너리테이블에저장됩니다.
TDE Column Encryption 에서사용할수없는기능들 Index types other than B-tree Range scan search through an index External large objects (BFILE) Synchronous Change Data Capture Transportable Tablespaces Original import/export utilities 컬럼이 foreign key constraints 를사용하고있다면 TDE column 을사용할수없다. 만약에암호화테이블의컴럼에인덱스를사용하고자한다면 no salt 를사용해야한다.
TDE Colum Encryption 예제 Wallet 생성 <SQLNET.ORA> ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/home/oracle/wallet))) Master Encryption Key 생성 SQL>alter system set encryption key identified by "hyun"; Encryption tablespace 및 user 생성 SQL> create tablespace encryption datafile ' '/home/oracle/oradata/tde/encryp01.dbf' size 100M autoextend on SQL> create user encryption identified by encryption default tablespace encryption account unlock; SQL> grant resource, connect to encryption; Encryption Column 생성 SQL> create table dbworks (name varchar2(10), passwd varchar2(10) encrypt no salt); SQL> insert into dbworks values('younhyun','dbworks'); SQL> commit;;
TDE Colum Encryption 예제 Tablespace Offline (Disk 에 Write 하기위한과정 ) SQL>alter tablespace encryption offline; SQL>alter tablespace encryption online; 검증 $>strings encryp01.dbf grep younhyun younhyun$ $>strings encryp01.dbf grep dbworks * TDE Column 에서는 strings 로데이터파일이조회가되지않는걸확인할수있습니다.
1. TDE Tablespace Encryption TDE tablespace 암호화기법은테이블스페이스젂체를암호화합니다. 암화화테이블스페이스안에생성된모든 objects 는자동으로암호화됩니다. TDE 테이블스페이스암호화는테이블안의데이터를보호하려할때유용합니다또한 TDE 테이블스페이스암호화는향상된성능을제공하기위한대량암호화와 caching 에서장점이있습니다응용프로그램의실제성능에미치는영향이다를수있지만성능 overhead 는 5% ~8% 로추정됩니다. BLOB 및 CLOBs 같은 LOB 또한포함됩니다. Bfile column 은암호화되지않습니다. 암호화된테이블스페이스의모든데이터들은디스크에암호화된형식으로저장됩니다. 데이터는인증된유저에게투명하게해독됩니다. 데이터베이스유저또는어플리케이션은특정테이블의데이터가디스크게암호화되어있는지알필요가없습니다. 디스크또는백업장치가도난당하더라도데이터는보호됩니다. TDE tablespace 암호화는테이블스페이스의투명한암호화와해독을위해두계층, 키기반아키텍처를사용합니다. TDE master Key 는외부보안모듈에저장됩니다 TDE master key 는 TDE tablespace encyption key 를암호화하는데사용됩니다. talbespace encyption key 는 tablespace 안의데이터를암호화하고해독하는데사용됩니다. TDE 테이블스페이스암호화는또한암호화된테이블스페이스에서 index range 스캔을사용할수있습니다. 이것은 TDE column encryption 에선가능하지않습니다. oracle 11g release 2 에서 tablespace space 암호화에대한다음향상된기능을구현합니다. 통일 master 암호화키를 TDE column 및 TDE tablespace 암호화모두에서사용합니다. 당싞은통일 master key 재설정을할수있습니다. 이것은향상된보안을제공하고보안및규정준수요구사항을충족도움이됩니다.
TDE Tablespace 의새로운기능 데이터를보호하기위해영구적으로모든테이블스페이스를암호화할수있습니다. 모든세그먼트유형을지원합니다. (table, clusters, indexes, LOBs, table and index partitions 기타등등 ) 테이블스페이스암호화는완젂히응용프로그램에투명하기때문에어플리케이션을수정하지않아도됩니다. exp 의사용은지원되지않으며 IMP 는지원됩니다. 비트맵인덱스사용가능합니다. range scan 이가능해졌습니다. LOB 데이터타입을지원한다 TTS 를지원하지만 endian 변경은안된다. TTS 시암화화테이블스페이스를옮기기젂에 wallet 을타겟디비로복사해야합니다. 또한타겟디비가이미 wallet 을사용하고있다면 data pump 를이용해야합니다. 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 젃을쓰지않아도됩니다.
TDE Tablespace 생성과 TDE Tablespace 로의 table move( 예제 ) Wallet 생성 <SQLNET.ORA> ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/home/oracle/wallet))) Master Encryption Key 생성 SQL>alter system set encryption key identified by "hyun"; Encryption Tablespace 생성 SQL>CREATE TABLESPACE encryptedtbs DATAFILE '/home/oracle/oradata/encryptedtbs01.dbf' SIZE 100M ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT); ENCRYPTION 는 USING 젃을사용하여알고리즘속성을지정합니다. 스토리지젃의 ENCRYPT 가테이블스페이스를암호화합니다. USING 젃을쓰지않으면 AES128 가 DEFAULT 로적용됩니다. AES128, AES192, AES256 3DES168 4 개의알고리즘을사용할수있습니다. Encryption Tablespace 생성확인및알고리즘확인 SQL> select * from V$ENCRYPTED_TABLESPACES; TS# ENCRYPT ENC ---- ------ ------- 7 AES128 YES SQL> select tablespace_name, encrypted from dba_tablespaces where tablespace_name like 'ENCRY%'; TABLESPACE_NAME ENC ------------------------------ --- ENCRYPTEDBS YES
유저생성및권한부여 SQL> create user hyun identified by hyun account unlock default tablespace users; SQL> grant resource, connect to hyun; Table 생성 ( 일반 Tablespace) SQL> create table hyun(abc varchar(20)); SQL> insert into hyun values('dbworks'); Tablespace Offline (Disk 에 Write 하기위한과정 ) ( 일반 Tablespace) SQL> alter tablespace users offline; SQL> alter tablespace users online; Test 검증 ( 일반 Tablespace) $ strings users01.dbf grep D DBWORKS, Table Move ( 암호화 Tablespace) SQL>alter table hyun.hyun move tablespace encryptedtbs;
Tablespace Offline (Disk 에 Write 하기위한과정 ) ( 암호화 Tablespace) SQL>alter tablespace users offline; SQL>alter tablespace users online; Test 검증 ( 암호화 Tablespace) $ strings encryptedtbs01.dbf grep D * TDE tablespace 에서는 strings 로데이터파일이조회가되지않는걸확인할수있습니다.