Site icon DBA의 정석

TDE in Oracle CDB

Security concept: blue opened padlock on digital background, 3d render

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/
OPEN
AUTOLOGIN SINGLE NO 0

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

Exit mobile version