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?
Top Related