TDE in Multitenant Database
기존에는 TDE의 key와 wallet(12c 부터 keystore로 명명, 이하 keystore)관리를 위해 ‘ALTER SYSTEM SET ENCRYPTION(WALLET)’ 명령어를 이용하였지만, 12c부터는 TDE 관리를 위해 ‘ADMINISTER KEY MANAGENT’ 명령어를 사용하여야 합니다. Multitenant 구조에서 TDE의 keystore는 CDB Level에서 통합 관리되며, keystore에는 해당 CDB에 연관된 PDB들의 encryption key들을 포함하고 있습니다. 따라서 각 PDB별로 master encryption key가 필요합니다. Keystore는 CDB-level에서 통합관리되므로, CDB에 접속하여 TDE의 Default Setting을 살펴보도록 하겠습니다.
[oracle@New-Features-12c ~]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Wed Oct 7 07:51:11 2015 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c EE Extreme Perf Release 12.1.0.2.0 – 64bit Production With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics and Real Application Testing options SQL> set linesize 200 SQL> col PARAMETER for a30 SQL> col VALUE for a10 SQL> SELECT * FROM v$option where parameter like ‘%Transparent Data Encryption%’; PARAMETER VALUE CON_ID —————————— ———- ———- Transparent Data Encryption TRUE 0 SQL> col WRL_TYPE for a5 SQL> col WRL_PARAMETER for a40 SQL> col STATUS for a5 SQL> col WALLET_TYPE for a10 SQL> col con_id for 99 SQL> SELECT * FROM V$ENCRYPTION_WALLET; WRL_T WRL_PARAMETER STATU WALLET_TYP WALLET_OR FULLY_BAC CON_ID —– —————————————- —– ———- ——— ——— —— FILE /u01/app/oracle/admin/CDB1/tde_wallet/ SQL> SELECT con_id, key_id FROM v$encryption_keys; CON_ID KEY_ID ———- —————————————————————————— 0 AWVQNZewSU9qv2w22Z0a6rEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 AbYg00QInU9jv1Ewc7rZbQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
[PDB1]에 접속하여, 현재 PDB1에서 사용되는 key를 확인할 수 있습니다. 또한 기본적으로 PDB1 내에서도 TDE가 Enable 되어 있음을 확인할 수 있습니다.
SQL> connect sys/oracle_4U@pdb1 as sysdba Connected. SQL> SELECT * FROM v$option where parameter like ‘%Transparent Data Encryption%’; PARAMETER VALUE CON_ID —————————— ———- ———- Transparent Data Encryption TRUE 0 SQL> SELECT con_id, key_id FROM v$encryption_keys; CON_ID KEY_ID ———- —————————————————————————— 0 AWVQNZewSU9qv2w22Z0a6rEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
현재 접속되어 있는 인스턴스가 PDB1인지 확인한 뒤, PDB1에서 TDE를 이용한 암호화된 테이블스페이스를 생성합니다.(* TDE는 테이블, 테이블스페이스 레벨로 암호화를 할 수 있습니다.)
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ———- —————————— ———- ———- 3 PDB1 READ WRITE NO SQL> CREATE TABLESPACE enc_tbs DATAFILE SIZE 128K AUTOEXTEND ON NEXT 64K ENCRYPTION USING ‘AES256’DEFAULT STORAGE(ENCRYPT); Tablespace created. |
암호화된 테이블스페이스를 생성한뒤 생성한 enc_tbs 테이블스페이스의 암호화 여부를 확인합니다.
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ———- —————————— ———- ———- 3 PDB1 READ WRITE NO SQL> CREATE TABLESPACE enc_tbs DATAFILE SIZE 128K AUTOEXTEND ON NEXT 64K ENCRYPTION USING ‘AES256’DEFAULT STORAGE(ENCRYPT); Tablespace created. SQL> SELECT TABLESPACE_NAME, ENCRYPTED FROM DBA_TABLESPACES; TABLESPACE_NAME ENC —————————— — SYSTEM NO SYSAUX NO TEMP NO USERS NO EXAMPLE NO APEX_1701140435539813 NO LAB_DATA NO RTL_DATA NO ENC_TBS YES |