OTN Tour 2015 AROUG

Post on 25-Jan-2017

241 views 1 download

Transcript of OTN Tour 2015 AROUG

Cifrando datos en un ambiente Multitenant con

Oracle Transparent Data Encryption

Por Sebastián D’Alessandro.

.

DBA, consultor, instructor Oracle - Arquitecto de Infraestructura

20 años en IT aprox.

+14 trabajando con tecnología Oracle

Focalizado principalmente en:

• Seguridad de base de datos

• Alta disponibilidad

• Disasater recovery

• Performance

• Virtualización

www.sdalessandro.com

Agenda

1. Cifrado de datos.

2. Transparent Data Encryption.

3. TDE en ambientes Mutitenant.

4. Ejemplo de uso de TDE en ambiente Multitenant.

5. Conclusiones.

“El cifrado es el proceso de convertir un mensaje (datos) originalmente en

texto plano a un formato ilegible, aplicando un algoritmo en conjunto con una

clave (clave de cifrado) para que sólo pueda ser decodificado e interpretado

por quien tenga dicha clave.

La idea del cifrado es poder proteger datos “sensibles” que se encuentran

almacenados o en transito a traves de un medio que no presenta

protección”.

Cifrado de datos

Transparent Data Encryption

Protege los datos almacenados a nivel físico.

Datafiles, Redologs, Archivelogs, Dumps, RMAN

Es parte de Oracle Advanced Security

No es, ni reemplaza a ningún mecanismo de control de acceso

Implementación transparente para las aplicaciones

Dos modalidades de cifrado COLUMNAS y TABLESPACES

TDE – Dos niveles de granularidad de cifrado

Cifrado a nivel de Columna

Cifrado a nivel de Tablespace

Permite granularizar el cifrado – Minimizar impacto en performance.

Características de TDE

Bajo impacto en la performance.

Arquitectura en dos capas para la gestión de claves.

Los controles de acceso implementados a nivel aplicación o base de datos

permanecen intactos.

Integración con tecnologías complementarias como:

Oracle Advanced Compression, Oracle Recovery Manager y

Oracle Multitenant.Aplicaciones como Siebel, JDEdwards,

E-Business Suite, etc.

Beneficios

Fácil implementación. (Rápido, bajo impacto y económico).

Alcanzar objetivos de compliance de manera rápida y segura.

No requiere de cambios en la aplicación. Es totalmente transparente.

No es necesario tablas, vistas y código adicional en la aplicación.

Gestiona automáticamente las claves – La aplicación se despreocupa.

Encripta los datos en: datafiles, redologs, archivelogs, RMAN files, dumps

Encripta datos en memoria (solamente para el caso de columnas).

Encripta a nivel índice.

Permite la segregación de roles Admin. Seguridad - DBA

Facilita los procesos de cambio de clave de cifrado (Rekeying).

Arquitectura de TDE

Arquitectura de claves de cifrado basada en dos capas (two-tired).

Para acceder a los datos almacenados en la base de datos y en backups es

necesario disponer de la Master Key.

La Master Key es almacenada en un módulo de seguridad externo (fuera de

la base de datos):

• Oracle Software Keystore (Oracle Wallet versiones previas)

• Hardware Keystore (Hardware Security Module)

Este solo puede ser accedido por el/los usuarios autorizados.

La gestión de contraseñas requiere de privilegios especiales.

SYSKM o ADMINISTER KEY MANAGEMENT.

Algoritmos

Advanced Encryption Standart (AES)

Longitud de clave:

128 bits (AES128) - DEFAULT para cifrado a nivel tablespace

192 bits (AES192) - DEFAULT para cifrado a nivel columna

256 bits (AES256)

Triple Data Encryption Standart (3DES)

Longitud de clave:

168 bits (3DES168)

Almacenamiento de claves – Key Storage

Key management Framework.

Es un framework de gestión de claves de cifrado para TDE que

permite gestionar claves y credenciales.

No diseñado para ser compartido por varias bases de datos.

Archivo formateado de acuerdo a PKCS#12

Keystore

Permite almacenar el historial de cambios de claves.

Facilita la separación de roles entre en el DBA y el administrador

de seguridad. – Aún más importante con Multitenant.

SYSKM – ADMINISTER KEY MANAGEMENT

Facilita reset, rotación y operaciones de regeneración de claves.

Provee backup.

Puede ser almacenado en filesystems, ASM (RAC) y HSM.

Permite la migración hacia y desde un HSM de manera muy

sencilla.

Algunos conceptos

Algunos conceptos utilizados en el cifrado y gestión de claves:

Re-Keying (cambio de claves de encripción)

SALT

MAC (Message Authentication Code)

.

Cifrado de columnas

Columnas consideradas críticas (información confidencial).

Datos de columnas son encriptados y desencriptados por medio de una

TDE Table Key.

Esta TDE Table Key es cifrada y descifrada por medio de la Master

Encryption Key (MEK).

La Master Encryption Key (MEK) es almacenada en un módulo externo

llamado Keystore.

Cifrado de columnas

Cifrado de tablespaces

Objetos creados en el tablespaces cifrados automaticamente.

Cifrado de varias columnas, tablas.

Arquitectura de dos capas para almacenar las claves.

El tablespace es cifrado por medio de una Tablespace Encryption Key.

Esta TEK es cifrada por medio de la MEK que es almacenada en el Keystore.

Los datos son protegidos para operaciones de JOIN y SORT.

(Protegidos en tablespaces temporales y UNDO)

Oracle usa una única TDE MEK para tablespaces y columnas.

TDE a nivel tablespace permite “index range scan” sobre los datos encriptados

en el tabespace. (A nivel columna esto no se permite).

Cifrado de tablespaces

Cambios de TDE en 12c

El Keystore reemplaza al Wallet

El Keystore puede ser almacenado en ASM - RAC

Nuevo rol administrativo SYSKM y privilegio ADMINISTER KEY

MANAGEMENT. .

Arquitectura multitenant

• Incrementa la utilización de los recursos de hardware del servidor.

• Gestionar varias bases de datos como una única.

• Aprovisionamiento de bases de datos de manera rápida, segura y ágil.

• Posibilidad de mover bases de datos de manera fácil entre distintos contenedores y

servidores.

.

Caracteristicas TDE en Multitenant

.

Puede integrarse con Multitenant.

Puede ser utilizado tanto para columnas como para tablespaces.

El keystore reside en el host del contenedor multitenant NO dentro de

cada PDB en particular.

Una Master Key por cada una de las PDB – cada PDB una tiene si propia

master key y puede gestionarla. .

Operaciones de Plug & Unplug requieren la exportación de la Master Key

correspondiente.

Existen operaciones que se deben realizar exclusivamente en el root

container. Operaciones estrcuturales del Keystore.

Operaciones de gestión de KEY

.

Algunas operaciones solo pueden ser realizadas en el root container:Operaciones relacionadas con la gestión del Keystore:

Crear keysore basado en password, aulogin

Cambiar la contraeña, Merge de software keytores

Backup / Migraciones a hardware keytore y viceversa-

Algunas operaciones pueden ser realizadas desde el root o desde la PDB:Operaciones sobre el keytore de gestión de master key:

Open, Close, Creación de Master Key, Export/Import etc.

CONATINER=ALL Permite operaciones como open, close, creación de

TDE master encryption key, operaciones de rekey (afectan a las PDBs)

Realizadas desde el root para todas las PDBs:

ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN CONTAINER=ALL;

Operación de Export/Import de clave

. Transporte de datos de una base a otra (transportables

tablespaces, datapump, dataguard, MULTITENANT).

La Master key en multitenant va pegada a la PDB.

Realizar la operación desde la PDB, verificar que el Keystore este

abierto para la misma.

Necesario para operaciones de unplug y plug de PDBs que utilizan

Transparent Data Encryption.

Ejemplo de uso de TDE en ambiente Multitenant

.

Ejemplo de utilización de TDE en Multitenant

.

Configuración del TDE keystore y gestión de las masterkeys.

Verificación de funcionalidades de cifrado para columna y tablespaces.

.

Pasos necesarios para una operación de “unplug” y “plug” de una PDBs

que está utilizando Transparent Data Encryption.

Ambiente:

. Host: myserver01

CDB: CDB1

PDB: PDB1

Esquema: HR

Ejemplo de movimiento de una PDB entre CDBs:

Host: myserver02

CDB: CDB2

PDB: PDB1

Esquema: HR

Configuración del Keystore – SQLNET.ORA

.

Establecer en el sqlnet.ora la ubicación del keystore:

NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)

ENCRYPTION_WALLET_LOCATION=

(SOURCE=

(METHOD=FILE)

(METHOD_DATA=

(DIRECTORY=/home/oracle/wallet)))

1. Parámetro: ENCRYPTION_WALLET_LOCATION (sqlnet.ora)

2. WALLET_LOCATION (sqlnet.ora)

3. Ubicación default del keystore:

$ORACLE_BASE/admin/DB_UNIQUE_NAME/wallet o

$ORACLE_HOME/admin/DB_UNIQUE_NAME/wallet

Creación de usuario con el rol SYSKM

.SQL> CREATE USER c##admsec

IDENTIFIED BY admsec;

User created.

SQL> GRANT connect, resource, SYSKM TO c##admsec;

Grant succeeded.

Creación del Keystore

.[oracle@myserver01]$ sqlplus c##admsec as SYSKM

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE

'/home/oracle/wallet' IDENTIFIED BY "0r4cl3";

keystore altered.

Verificando la creación del Keystore

.SQL> select * from V$ENCRYPTION_WALLET;

WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID

---------- ------------------------- --------- --------------- --------- --------- ------

FILE /home/oracle/wallet/ CLOSED UNKNOWN SINGLE UNDEFINED 0

SQL> host ls -lrt /home/oracle/wallet

total 16

-rw-r--r--. 1 oracle oinstall 4928 Jun 23 15:23 ewallet.p12

Formato de archivo PKCS#12 (Public-Key Cryptography Standards)

Apertura del Keystore

.SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY

"0r4cl3";

keystore altered.

Verificando la apertura del Keystore

.

SQL> SELECT * FROM V$ENCRYPTION_WALLET;

WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID

-------- -------------------- ------------------- -------------- --------- --------- ---------

FILE /home/oracle/wallet/ OPEN_NO_MASTER_KEY PASSWORD SINGLE UNDEFINED 0

Apertura autologin del Keystore

.SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM

KEYSTORE '/home/oracle/wallet' IDENTIFIED BY "0r4cl3";

keystore altered.

Verificando la creación del Keystore

.SQL> SELECT * FROM V$ENCRYPTION_WALLET;

WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID

---------- ---------------------- -------- ---------------- --------- --------- ----------

FILE /home/oracle/wallet/ OPEN AUTOLOGIN SINGLE NO 0

SQL> host ls -lrt /home/oracle/wallet

total 16

-rw-r--r--. 1 oracle oinstall 4928 Jun 23 15:23 ewallet.p12

-rw-r--r--. 1 oracle oinstall 4501 Jun 23 15:26 cwallet.sso

Creación de la Master Key en la CDB

.

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY "0r4cl3" WITH

BACKUP;

keystore altered.

Verificación de la Master Key en CDB

.SQL> SELECT * FROM V$ENCRYPTION_WALLET;

WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID

---------- ------------------------- -------- -------------- --------- --------- ----------

FILE /home/oracle/wallet/ OPEN PASSWORD SINGLE NO 0

SQL> SELECT CON_ID,KEY_ID,KEYSTORE_TYPE,CREATOR_DBNAME,CREATOR_PDBNAME

FROM V$ENCRYPTION_KEYS;

CON_ID KEY_ID KEYSTORE_TYPE CREATOR_DBNAME CREATOR_PDBNAME

------ ---------------------------------------------------- ------------------- -------------- --------------

0 Ac52v6i1xE+KvztJQ6SviEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA SOFTWARE KEYSTORE cdb1 CDB$ROOT

Apertura del Keystore en la PDB

.

Conexión a la PDB y verificación de status

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL>ALTER SESSION SET CONTAINER=PDB1;

Session altered.

SQL> show con_name

CON_NAME

------------------------------

PDB1

Apertura del Keystore en la PDB

.Conexión a la PDB y verificación de status previo:

SQL> SELECT * FROM V$ENCRYPTION_WALLET;

WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID

---------- --------------------- ------------ ------------ --------- --------- ----------

FILE /home/oracle/wallet/ CLOSED UNKNOWN SINGLE UNDEFINED 0

SQL> SELECT CON_ID,KEY_ID,KEYSTORE_TYPE,CREATOR_DBNAME,CREATOR_PDBNAME

FROM V$ENCRYPTION_KEYS;

no rows selected

Apertura del Keystore en la PDB

.

SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN

IDENTIFIED BY "0r4cl3";

keystore altered.

Verificamos:

SQL> SELECT * FROM V$ENCRYPTION_WALLET;

WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID

---------- --------------------- ------------------- ----------- --------- --------- --------

FILE /home/oracle/wallet/ OPEN_NO_MASTER_KEY PASSWORD SINGLE UNDEFINED 0

SQL> SELECT CON_ID,KEY_ID,KEYSTORE_TYPE,CREATOR_DBNAME,CREATOR_PDBNAME

FROM V$ENCRYPTION_KEYS;

no rows selected

Creación de la MasterKey en la PDB

.SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY "0r4cl3" WITH BACKUP;

keystore altered.

SQL> SELECT * FROM V$ENCRYPTION_WALLET;

WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID

---------- -------------------- ------- -------------- --------- --------- --------

FILE /home/oracle/wallet/ OPEN PASSWORD SINGLE NO 0

SQL> SELECT CON_ID,KEY_ID,KEYSTORE_TYPE,CREATOR_DBNAME,CREATOR_PDBNAME FROM

V$ENCRYPTION_KEYS;

CON_ID KEY_ID KEYSTORE_TYPE CREATOR_DBNAME CREATOR_PDBNAME

------ ----------------------------------------------------- ----------------- -------------- ----------------

0 Aa8PlMTAuk+ev4216qNHHiEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA SOFTWARE KEYSTORE cdb1 PDB1

Cifrado de columna – Creación de tablas

.

SQL> sqlplus hr@pbd1

SQL> CREATE TABLE HR.EMP_CRYP01

2 (

CLIENT_ID NUMBER(6),

FIRST_NAME VARCHAR2(20 BYTE),

LAST_NAME VARCHAR2(25 BYTE) NOT NULL,

CREDIT_CARD_TYPE VARCHAR (25) ENCRYPT,

CREDIT_CARD# VARCHAR2(20 BYTE) ENCRYPT USING '3DES168' NO SALT

);

Table created.

SQL> CREATE TABLE HR.EMP_NOCRYP01

(

CLIENT_ID NUMBER(6),

FIRST_NAME VARCHAR2(20 BYTE),

LAST_NAME VARCHAR2(25 BYTE) NOT NULL,

CREDIT_CARD_TYPE VARCHAR (25),

CREDIT_CARD# VARCHAR2(20 BYTE)

);

Table created.

Cifrado de columna – Inserción de registros

.SQL> INSERT INTO HR.EMP_CRYP01

VALUES (1256, 'Juan','Perez','MASTERCARD','001-4543-0090-8955');

1 row created.

SQL> COMMIT;

Commit complete.

SQL> INSERT INTO HR.EMP_NOCRYP01

VALUES (1256, 'Juan','Perez','MASTERCARD','001-4543-0090-8955');

1 row created.

SQL> COMMIT;

Commit complete

Cifrado de columna – Verificación

.

[oracle@myserver01 ~]$ sqlplus system@pdb1

SQL> select file_id, block_id, blocks

from dba_extents

where segment_name = 'EMP_CRYP01' and owner = 'HR';

FILE_ID BLOCK_ID BLOCKS

---------- ---------- ----------

25 128 8

SQL> ALTER SYSTEM FLUSH buffer_cache;

System altered.

SQL> ALTER SYSTEM checkpoint;

System altered.

SQL> ALTER SYSTEM DUMP datafile 25 block min 128 block max 143;

System altered.

Cifrado de columna – Verificación

.-rw-r-----. 1 oracle oinstall 176281 Jul 25 23:21 cdb1_ora_6263.trc

. . .

. . .

7F870EFA2D60 A9FC10B6 12D6FFCF 9547124C 3919E5A8 [........L.G....9]

7F870EFA2D70 5A3FE27B 555FEF53 53F24E5B 533AA834 [{.?ZS._U[N.S4.:S]

7F870EFA2D80 203F608B A251DB75 17278AC9 BCF92480 [.`? u.Q...'..$..]

7F870EFA2D90 0305012C 04390DC2 6E61754A 72655005 [,.....9.Juan.Per]

7F870EFA2DA0 332C7A65 AE043E16 60974AFE 1AE2FB66 [ez,3.>...J.`f...]

7F870EFA2DB0 FBB9DA11 54B59D74 F17B2B92 84AFE79B [....t..T.+{.....]

7F870EFA2DC0 D74D3425 34E7AADA C7999350 2C0DD00A [%4M....4P......,]

7F870EFA2DD0 98E26F92 51058921 B206A011 5AECB89E [.o..!..Q.......Z]

7F870EFA2DE0 9AE8877A 61F14D1F CB096CED 66C7C7E6 [z....M.a.l.....f]

7F870EFA2DF0 B0973BD7 06CB96FB 859FD5E0 E36E0601 [.;............n.]

Block header dump: 0x06400087

. . .

. . .

Cifrado de columna – Verificación

.

[oracle@myserver01 ~]$ sqlplus system@pdb1

SQL> select file_id, block_id, blocks

from dba_extents

where segment_name = 'EMP_NOCRYP01' and owner = 'HR';

FILE_ID BLOCK_ID BLOCKS

---------- ---------- ----------

25 136 8

SQL> ALTER SYSTEM FLUSH buffer_cache;

System altered.

SQL> ALTER SYSTEM checkpoint;

System altered.

SQL> ALTER SYSTEM DUMP datafile 25 block min 136 block max 135;

System altered.

Cifrado de columna – Verificación

.-rw-r-----. 1 oracle oinstall 49601 Jul 25 23:21 cdb1_ora_6285.trc

. . .

7FA574B40E90 00000000 00000000 00000000 00000000 [................]

Repeat 497 times

7FA574B42DB0 00000000 2C000000 C5060300 39061C23 [.......,....#..9]

7FA574B42DC0 03C1024D 53595309 45535524 0305012C [M....SYS$USE,...]

7FA574B42DD0 04390DC2 6E61754A 72655005 4D0A7A65 [..9.Juan.Perez.M]

7FA574B42DE0 45545341 52414352 30301244 35342D31 [ASTERCARD.001-45]

7FA574B42DF0 302D3334 2D303930 35353938 E3AE0601 [43-0090-8955....]

Block header dump: 0x0640008f

. . .

Cifrado de tablespace – Creación

.Conectados a la PDB verificamos los tablespaces existentes:

[oracle@myserver01]$ sqlplus system@pdb1

SQL> SELECT tablespace_name FROM dba_tablespaces;

TABLESPACE_NAME

------------------------------

SYSTEM

SYSAUX

TEMP

USERS

4 rows selected.

Cifrado de tablespace – Creación

.

SQL> CREATE TABLESPACE NOENC_TBS DATAFILE

'/u02/oradata/cdb1/pdb1/noenc_tbs01.dbf' size 100m;

Tablespace created.

SQL> CREATE TABLESPACE ENC_TBS DATAFILE '/u02/oradata/cdb1/pdb1/enc_tbs01.dbf'

size 100m ENCRYPTION DEFAULT STORAGE (ENCRYPT);

Tablespace created.

SQL> SELECT tablespace_name, encrypted FROM dba_tablespaces;

TABLESPACE_NAME ENC

------------------------------ ---

SYSTEM NO

SYSAUX NO

TEMP NO

USERS NO

NOENC_TBS NO

ENC_TBS YES

6 rows selected.

Cifrado de tablespace – Creación de tablas

.

[oracle@myserver01]$ sqlplus hr@pdb1

SQL> CREATE TABLE HR.EMP_NOENC_TBS

(

EMPLOYEE_ID NUMBER(6),

FIRST_NAME VARCHAR2(20 BYTE),

LAST_NAME VARCHAR2(25 BYTE) NOT NULL,

CREDIT_CARD_TYPE VARCHAR (25),

CREDIT_CARD# VARCHAR2(20 BYTE)) TABLESPACE NOENC_TBS ;

Table created.

SQL> CREATE TABLE HR.EMP_ENC_TBS

(

EMPLOYEE_ID NUMBER(6),

FIRST_NAME VARCHAR2(20 BYTE),

LAST_NAME VARCHAR2(25 BYTE) NOT NULL,

CREDIT_CARD_TYPE VARCHAR (25),

CREDIT_CARD# VARCHAR2(20 BYTE)) TABLESPACE ENC_TBS ;

Table created.

Cifrado de tablespace – Insert de datos

.SQL> INSERT INTO HR.EMP_NOENC_TBS

VALUES (1256, 'Juan','Perez','MASTERCARD','001-4543-0090-8955');

1 row created.

SQL> commit;

Commit complete.

SQL> INSERT INTO HR.EMP_ENC_TBS

VALUES (1256, 'Juan','Perez','MASTERCARD','001-4543-0090-8955');

1 row created.

SQL> COMMIT;

Commit complete

Cifrado de tablespace – Verificación

. Forzamos la escritura a disco:

[oracle@myserver01]$ sqlplus system@pdb1

SQL> ALTER SYSTEM FLUSH buffer_cache;

System altered.

SQL> ALTER SYSTEM checkpoint;

System altered.

Cifrado de tablespace – Verificación

. Verificación de contenido en tablespace NO CIFRADO:

[oracle@myserver01 pdb1]$ pwd

/u02/oradata/cdb1/pdb1

[oracle@myserver01]$ strings -a noenc_tbs01.dbf

}|{z

33CDB1

NOENC_TBS

...

..

.

$8.0

Juan

Perez

MASTERCARD

001-4543-0090-8955

Cifrado de tablespace – Verificación

.

Verificación de contenido en tablespace CIFRADO:

[oracle@myserver01 pdb1]$ strings -a enc_tbs01.dbf

}|{z

33CDB1

ENC_TBS

}%)|1+

Vl?4>

xS.v]

yVh5

e}E.X

j:\e

9Bs&

~q:lHrVKB/

rF|c

43%L

_-0p

($0p<

Oj7U

n#Cwa. . .

TDE y operaciones de plug y unplug

.Pasos para la operación de unplug y plug de una PDB con TDE configurado:

1. Exportar las Master Key

2. Realizar el unplug de la PDB

3. Mover los archivos correspondientes incluido el export de la masterkey

4. Configurar la nueva CDB para utilizar TDE

5. Crear el Keystore correspondiente

6. Realizar el plug de la PDB en la nueva CDB

7. Importar el Keystore

8. Reiniciar la PDB y verificar

TDE y operaciones de plug y unplug

. Export de la masterkey de la PDB1 en la CDB1 de myserver01:

[oracle@myserver01 ~]$ sqlplus sys@pdb1 as sysdba

SQL> ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS WITH SECRET

"sd0010" to '/home/oracle/exp_pdb1.p12' IDENTIFIED BY "0r4cl3";

keystore altered.

TDE y operaciones de plug y unplug

.Aquí se debe realizar el unplug de la PDB1 de la CDB1 según los

procedimientos correspondientes:

También deben moverse al servidor los archivos necesarios, base de datos

PDB, manifiesto, etc y especialmente en nuestro caso el export de la

masterkey de la PDB1: /home/oracle/exp_pdb1.p12

.

TDE y operaciones de plug y unplug

.

Creación del Keystore en la CDB2 del servidor myserver02:

[oracle@myserver02]$ sqlplus / as sysdba

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/home/oracle/wallet/'

IDENTIFIED BY "3lc4r0";

almacen de claves modificado.

SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY

"3lc4r0";

almacen de claves modificado

TDE y operaciones de plug y unplug

.En este paso se debe realizar la creación (plug) de la PDB1 en la container

database CDB2, esto se debe realizar siguiendo los procedimientos

correspondientes:

SQL> ALTER PLUGGABLE DATABASE PDB1 OPEN READ WRITE;

Warning: PDB altered with errors.

TDE y operaciones de plug y unplug

.Import de la masterkey de la PDB1 en el keystore de la CDB2:

SQL> ALTER SESSION SET CONTAINER=pdb1;

Sesion modificada.

SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "3lc4r0";

almacen de claves modificado.

SQL> select CON_ID,KEY_ID,KEYSTORE_TYPE,CREATOR_DBNAME,CREATOR_PDBNAME

from v$encryption_keys;

ninguna fila seleccionada

SQL> ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS WITH SECRET "sd0010"

FROM '/home/oracle/exp_pdb1.p12' IDENTIFIED BY "3lc4r0" WITH BACKUP;

almacen de claves modificado.

TDE y operaciones de plug y unplug

.

Verificación del Import de la masterkey de PDB1:

SQL> select CON_ID,KEY_ID,KEYSTORE_TYPE,CREATOR_DBNAME,CREATOR_PDBNAME from

v$encryption_keys;

CON_ID KEY_ID KEYSTORE_TYPE CREATOR_DBN CREATOR_PDB

------ ---------------------------------------------------- ----------------- ------------ -----------

0 AdkNucaURE+5v1F7i9tlzO0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA SOFTWARE KEYSTORE CDB2 PDB1

Reinicio de la PDB:

SQL> SHUTDOWN;

Base de datos de conexion cerrada.

SQL> STARTUP;

Base de datos de conexion abierta.

Apertura del Keysotore en la PDB:

SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "3lc4r0";

almacen de claves modificado

.Verificación consultando las tablas creadas:

[oracle@myserver02 dbs]$ sqlplus hr@pdb1 (TABLESPACE ENCRIPTADO)

SQL> select * from HR.EMP_ENC_TBS;

EMPLOYEE_ID FIRST_NAME LAST_NAME CREDIT_CARD_TYPE CREDIT_CARD#

----------- ------------ ------------ ------------------ -------------------

1256 Juan Perez MASTERCARD 001-4543-0090-8955

SQL> select * from HR.EMP_CRYP01; (COLUMNAS ENCRIPTADAS)

EMPLOYEE_ID FIRST_NAME LAST_NAME CREDIT_CARD_TYPE CREDIT_CARD#

----------- ------------ ------------ ------------------ -------------------

1256 Juan Perez MASTERCARD 001-4543-0090-8955

TDE y operaciones de plug y unplug

.

Garantizar confidencialidad de los datos sensibles. (medio NO seguro).

Como lo logramos?: cifrado o encripción.

Oracle provee varias soluciones, la más completa e intergral es Transparent Data

Encryption (TDE).

TDE es parte del opcional Oracle Advanced Security. (licenciamiento extra).

Transparente para las aplicaciones. (Nivel de base de datos).

Soporta la gran mayoría de “features” y funcionalidades de la base datos Oracle.

Está certificado su uso con muchas aplicaciones del mercado Oracle/NO Oracle.

Funciona y está soportado para ambientes MULTITENANT.

Conclusiones

Muchas Gracias!

Preguntas?