62
Cifrando datos en un ambiente Multitenant con Oracle Transparent Data Encryption Por Sebastián D’Alessandro. .

OTN Tour 2015 AROUG

Embed Size (px)

Citation preview

Page 1: OTN Tour 2015 AROUG

Cifrando datos en un ambiente Multitenant con

Oracle Transparent Data Encryption

Por Sebastián D’Alessandro.

.

Page 2: OTN Tour 2015 AROUG

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

Page 3: OTN Tour 2015 AROUG

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.

Page 4: OTN Tour 2015 AROUG

“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

Page 5: OTN Tour 2015 AROUG

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

Page 6: OTN Tour 2015 AROUG

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.

Page 7: OTN Tour 2015 AROUG

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.

Page 8: OTN Tour 2015 AROUG

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).

Page 9: OTN Tour 2015 AROUG

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.

Page 10: OTN Tour 2015 AROUG

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)

Page 11: OTN Tour 2015 AROUG

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.

Page 12: OTN Tour 2015 AROUG

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)

.

Page 13: OTN Tour 2015 AROUG

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.

Page 14: OTN Tour 2015 AROUG

Cifrado de columnas

Page 15: OTN Tour 2015 AROUG

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).

Page 16: OTN Tour 2015 AROUG

Cifrado de tablespaces

Page 17: OTN Tour 2015 AROUG

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. .

Page 18: OTN Tour 2015 AROUG

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.

.

Page 19: OTN Tour 2015 AROUG

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.

Page 20: OTN Tour 2015 AROUG

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;

Page 21: OTN Tour 2015 AROUG

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.

Page 22: OTN Tour 2015 AROUG

Ejemplo de uso de TDE en ambiente Multitenant

.

Page 23: OTN Tour 2015 AROUG

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.

Page 24: OTN Tour 2015 AROUG

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

Page 25: OTN Tour 2015 AROUG

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

Page 26: OTN Tour 2015 AROUG

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.

Page 27: OTN Tour 2015 AROUG

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.

Page 28: OTN Tour 2015 AROUG

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)

Page 29: OTN Tour 2015 AROUG

Apertura del Keystore

.SQL> show con_name

CON_NAME

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

CDB$ROOT

SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY

"0r4cl3";

keystore altered.

Page 30: OTN Tour 2015 AROUG

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

Page 31: OTN Tour 2015 AROUG

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.

Page 32: OTN Tour 2015 AROUG

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

Page 33: OTN Tour 2015 AROUG

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.

Page 34: OTN Tour 2015 AROUG

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

Page 35: OTN Tour 2015 AROUG

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

Page 36: OTN Tour 2015 AROUG

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

Page 37: OTN Tour 2015 AROUG

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

Page 38: OTN Tour 2015 AROUG

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

Page 39: OTN Tour 2015 AROUG

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.

Page 40: OTN Tour 2015 AROUG

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

Page 41: OTN Tour 2015 AROUG

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.

Page 42: OTN Tour 2015 AROUG

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

. . .

. . .

Page 43: OTN Tour 2015 AROUG

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.

Page 44: OTN Tour 2015 AROUG

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

. . .

Page 45: OTN Tour 2015 AROUG

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.

Page 46: OTN Tour 2015 AROUG

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.

Page 47: OTN Tour 2015 AROUG

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.

Page 48: OTN Tour 2015 AROUG

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

Page 49: OTN Tour 2015 AROUG

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.

Page 50: OTN Tour 2015 AROUG

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

Page 51: OTN Tour 2015 AROUG

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. . .

Page 52: OTN Tour 2015 AROUG

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

Page 53: OTN Tour 2015 AROUG

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.

Page 54: OTN Tour 2015 AROUG

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

.

Page 55: OTN Tour 2015 AROUG

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

Page 56: OTN Tour 2015 AROUG

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.

Page 57: OTN Tour 2015 AROUG

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.

Page 58: OTN Tour 2015 AROUG

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

Page 59: OTN Tour 2015 AROUG

.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

Page 60: OTN Tour 2015 AROUG

.

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

Page 61: OTN Tour 2015 AROUG

Muchas Gracias!

Page 62: OTN Tour 2015 AROUG

Preguntas?