Tablespaces Encriptados en Oracle 11g - Oracle DBA

A partir de la release 1 de Oracle 11g, Oracle ofrece a los DBA's la posibilidad de encriptar los tablespaces al completo, para proteger datos sensibles en su interior y accesibles desde Sistema Operativo. Es decir, el objetivo de esta nueva funcionalidad no es proteger datos sensibles de usuarios de la Base de Datos, sino de proteger la información de los datafiles de tablespaces.

 

Para explicar la utilidad de esta funcionalidad, lo mejor es explicar situaciones en las que sin esta funcionalidad nuestros datos serian vulnerables. Por ejemplo, en el caso de que el fichero de un backup físico de un tablespace de base de datos llegase a manos no deseadas, podría ver algunos datos “en claro” sin problemas. A modo de ejemplo, una simple edición del tablespace (o un simple “cat”) que contuviera la tabla empleados, nos mostraría los campos varchar2 en claro, pudiendo extraer datos sensibles (no os lo creéis, probadlo!).

Para esta funcionalidad, Oracle utiliza el TDE – Transparent Data Encryption, mediante la creación de una Oracle Wallet que se almacena en disco. Por defecto, en la localización $ORACLE_BASE/admin/$ORACLE_SID/wallet, pero es recomendable cambiar su localización mediante el uso del parámetro ENCRYPTION_WALLET_LOCATION en el sqlnet.ora.

 

Para la creación de esta Wallet:

ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY "myPassword";

 

El tablespace encriptado se puede crear de la siguiente manera:

CREATE TABLESPACE seguro_tbs 
DATAFILE '/oradata/seguro_ts01.dbf.dbf' SIZE 1M
ENCRYPTION USING 'AES256'
DEFAULT STORAGE(ENCRYPT);

 

Si no se indica lo contrario, el algoritmo de encriptación usado es el AES256 (Advanced Encryption Standard), pero los siguientes algoritmos también están permitidos:

AES256, AES192, AES128 y 3DES168 

 

Al reiniciar la base de datos, deberemos abrir la wallet para poder consultar los datos de los tablespaces encriptados:

ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY "myPassword";

 

También podemos cerrarla en cualquier momento:

 ALTER SYSTEM SET WALLET CLOSE;

 

Si no abrimos una wallet, el resultado de cualquier query sobre alguna tabla de dicho tablespace es el error ORA-28365 “wallet is not open”.

 

La consulta de si un tablespace está encriptado o no, se puede realizar desde la misma vista dba_tablespaces:

SQL> SELECT tablespace_name, encrypted FROM dba_tablespaces;
 TABLESPACE_NAME                ENCRYPTED
------------------------------ ---------
SYSTEM                         NO
SYSAUX                         NO
UNDOTBS1                       NO
TEMP                           NO
SEGURO_TBS                     YES

 

Espero que os sea útil.

 

 

Oscar Paredes

IT Manager
Oracle DBA

oscar.paredes@dataprix.com

 

como puedo hacer esa encriptacion del tablespace en Oracle Express, ya que asi como tu lo has hecho yo tambien pero sobre la version Enterprise y requiero hacerlo sobre la version Express 11g

Por favor si tienen una función o procedimiento que me permita encriptar en una instancia de Base de Datos Oracle 11G determinados campos de una tabla de forma encriptada pero que los pueda abrir desde mi sistema con otra función o procedimiento les agradecería. La intención es guardar datos encriptados en la Instancia de Base de Datos por seguridad pero que con el sistema el usuario pueda agregar, leer o modificar datos sin ningún problema. En todo caso agradeceré sus sugerencias. Muchas gracias