Disponible con licencia de Production Mapping.
Puede adoptar varias precauciones para ayudar a proteger la base de datos, como diseñar un sistema de protección, cifrar activos confidenciales y crear un firewall en torno a los servidores de base de datos. Sin embargo, en un escenario en el que se sustraigan los medios físicos (como unidades o cintas de copia de seguridad) un intruso malintencionado puede restaurar o adjuntar la base de datos y examinar los datos. Una solución consiste en cifrar los datos confidenciales de la base de datos y proteger las claves utilizadas para cifrar los datos con un certificado. Esto evita que alguien que no tenga las claves pueda utilizar los datos, pero este tipo de protección debe planearse con antelación.
El cifrado transparente de datos (TDE) permite cifrar datos confidenciales tales como números de tarjetas de crédito almacenados en tablas y espacios de tabla. Los datos cifrados se descifran de forma transparente para una aplicación o un usuario de base de datos que tenga acceso a los datos. TDE ayuda a proteger los datos almacenados en medios en caso de sustracción de los medios de almacenamiento o los archivos de datos. Oracle usa mecanismos de autenticación, autorización y auditoría para proteger los datos de la base de datos, pero no los archivos de datos del sistema operativo donde se almacenan datos. Para proteger estos archivos de datos, Oracle proporciona TDE. TDE cifra los datos confidenciales almacenados en los archivos de datos. Para evitar descifrados no autorizados, TDE almacena las claves de cifrado en un módulo de seguridad externo a la base de datos.
With Oracle, new tablespaces can be defined as encrypted. Defining a tablespace as encrypted means the physical data files created on the operating system will be encrypted. Any tables, indexes, and other objects defined in the new tablespace will be encrypted by default, with no additional storage space requirements. Data is automatically encrypted when it is written to disk and automatically decrypted when accessed by the application.
Estas son algunas de las ventajas del uso de TDE:
- Como administrador de seguridad tendrá la tranquilidad de que los datos confidenciales estén protegidos en caso de sustracción de los medios de almacenamiento o de los archivos de datos.
- La implementación de TDE ayuda a abordar los aspectos de cumplimiento reglamentario relacionados con la seguridad.
- No es necesario crear desencadenadores ni vistas para descifrar los datos para una aplicación o usuario autorizados. Los datos de las tablas se descifran de forma transparente para la aplicación y el usuario de la base de datos.
- No es necesario que las aplicaciones y usuarios de base de datos sepan que los datos a los que acceden están almacenados en modo cifrado. Los datos se descifran de forma transparente para las aplicaciones y usuarios de base de datos.
- No hace falta modificar las aplicaciones para controlar los datos cifrados. La base de datos administra el cifrado y descifrado de datos.
- Las operaciones de administración de claves están automatizadas. El usuario o la aplicación no necesitan administrar las claves de cifrado.
Para usar TDE, siga uno de estos métodos.
Oracle 12c
Para obtener más información sobre la configuración del cifrado de espacios de tablas de TDE, consulte la documentación de Oracle.
Configuring TDE manually
El siguiente procedimiento muestra cómo configurar manualmente TDE.
- Cree el directorio keystore.
mkdir $ORACLE_HOME/admin/$ORACLE_SID/wallet
- Modifique el archivo SQLNET.ORA si desea administrar la cartera de cifrado.
La ubicación predeterminada de la cartera de cifrado es $ORACLE_BASE/admin/<nombre_db_global>/wallet. Si desea permitir que Oracle administre una cartera en la ubicación predeterminada, no necesita establecer el parámetro ENCRYPTION_WALLET_LOCATION en el archivo sqlnet.ora.
Para Windows
ENCRYPTION_WALLET_LOCATION= (SOURCE= (METHOD=FILE) (METHOD_DATA= (DIRECTORY=C:/oracle/admin/%ORACLE_SID%/wallet/)))
Para Linux
ENCRYPTION_WALLET_LOCATION= (SOURCE= (METHOD=FILE) (METHOD_DATA= (DIRECTORY=/app/oracle/admin/$ORACLE_SID/wallet/)))
- Compruebe el parámetro de inicialización COMPATIBLE para el número correcto de versión. Debería ser 12.x.
ORA> sqlplus /nolog SQL> connect /as sysdba Connected. SQL> select instance_name,status,database_status from v$instance; INSTANCE_NAME STATUS DATABASE_STATUS ---------------- ------------ ----------------- mcs1 OPEN ACTIVE SQL> show parameter compatible NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ compatible string 12.1.0.0.0
- Cree el keystore.
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 'C:\oracle\admin\mcs1\wallet' IDENTIFIED BY "mcs1$admin"; --the ewallet.p12 file, which contains the keystore, appears in the keystore location.
- Abra el keystore basado en contraseña.
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "mcs1$admin" CONTAINER=ALL; -- check the status SELECT WRL_PARAMETER,STATUS,WALLET_TYPE FROM V$ENCRYPTION_WALLET;
- Haga una copia de seguridad de un software keystore basado en contraseña.
ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE USING 'keystore_bkp' IDENTIFIED BY "mcs1$admin"; SELECT WRL_PARAMETER,STATUS,WALLET_TYPE FROM V$ENCRYPTION_WALLET;
- Cree la clave principal de cifrado.
Cree una clave principal para la CBD y todas las PDB.
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY "mcs1$admin" WITH BACKUP USING 'masterkey_all_bkp' CONTAINER=ALL; SELECT KEY_ID,KEYSTORE_TYPE,CREATOR,CREATOR_INSTANCE_NAME,CREATOR_PDBNAME FROM V$ENCRYPTION_KEYS;
Exporte la clave principal.
ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS WITH SECRET "mcs1.exp$admin" TO 'C:\oracle\admin\mcs1\wallet\masterkey_cdb_exp.bkp' IDENTIFIED BY "mcs1$admin";
- Optionally create the master key for the current container. You can skip this step if you completed step 7.
Container Database (CDB):
ALTER SESSION SET CONTAINER = CDB$ROOT; SHOW CON_NAME SELECT SYS_CONTEXT('USERENV', 'CON_NAME') FROM dual; ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY "mcs1$admin" WITH BACKUP USING 'masterkey_cdb_backup' CONTAINER=CURRENT; SELECT KEY_ID,KEYSTORE_TYPE,CREATOR,CREATOR_INSTANCE_NAME,CREATOR_PDBNAME FROM V$ENCRYPTION_KEYS; --export master key ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS WITH SECRET "mcs1.exp$admin" TO 'C:\oracle\admin\mcs1\wallet\masterkey_cdb_exp.bkp' IDENTIFIED BY "mcs1$admin";
Pluggable Database (PDB):pmpdb
ALTER SESSION SET CONTAINER = pmpdb; SHOW CON_NAME SELECT SYS_CONTEXT('USERENV', 'CON_NAME') FROM dual; ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY "mcs1$admin" WITH BACKUP USING 'masterkey_pmpdb_backup' CONTAINER=CURRENT; SELECT KEY_ID,KEYSTORE_TYPE,CREATOR,CREATOR_INSTANCE_NAME,CREATOR_PDBNAME FROM V$ENCRYPTION_KEYS; --export master key ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS WITH SECRET "mcs1.exp$admin" TO 'C:\oracle\admin\mcs1\wallet\masterkey_pmpdb_exp.bkp' IDENTIFIED BY "mcs1$admin";
Check status
SELECT * FROM V$ENCRYPTION_WALLET; SELECT * FROM V$ENCRYPTION_KEYS; SELECT WRL_PARAMETER,STATUS,WALLET_TYPE FROM V$ENCRYPTION_WALLET; SELECT KEY_ID,KEYSTORE_TYPE,CREATOR,CREATOR_INSTANCE_NAME,CREATOR_PDBNAME FROM V$ENCRYPTION_KEYS;
- Establezca el keystore local de inicio de sesión automático.
ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE 'C:\oracle\admin\mcs1\wallet' IDENTIFIED BY "mcs1$admin"; SELECT WRL_PARAMETER,STATUS,WALLET_TYPE FROM V$ENCRYPTION_WALLET; --the cwallet.sso file appears in the keystore location. The ewallet.p12 file is the password-based wallet. --Note: --Do not remove the PKCS#12 wallet (ewallet.p12 file) after you create the auto login keystore (.sso file). --You must have the PKCS#12 wallet to regenerate or rekey the TDE master encryption key in the future. --By default, this file is located in the $ORACLE_HOME/admin/ORACLE_SID/wallet directory.
- Abra el keystore de inicio de sesión automático.
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN CONTAINER=ALL; -- check the status SELECT WRL_PARAMETER,STATUS,WALLET_TYPE FROM V$ENCRYPTION_WALLET;
- Se recomienda que verifique el estado de la configuración TDE utilizando las instrucciones SQL siguientes.
SELECT * FROM V$ENCRYPTION_WALLET; SELECT * FROM V$ENCRYPTION_KEYS; SELECT WRL_PARAMETER,STATUS,WALLET_TYPE FROM V$ENCRYPTION_WALLET; SELECT KEY_ID,KEYSTORE_TYPE FROM V$ENCRYPTION_KEYS; SELECT KEY_ID FROM V$ENCRYPTION_KEYS; SELECT KEYSTORE_TYPE FROM V$ENCRYPTION_KEYS; SELECT WRL_PARAMETER FROM V$ENCRYPTION_WALLET; SELECT STATUS FROM V$ENCRYPTION_WALLET; SELECT * FROM V$ENCRYPTED_TABLESPACES; SELECT TABLESPACE_NAME, ENCRYPTED FROM DBA_TABLESPACES; SELECT * FROM DBA_ENCRYPTED_COLUMNS;
Oracle 11.2
Para obtener más información sobre la configuración del cifrado de espacios de tablas de TDE, consulte la documentación de Oracle.
Para usar TDE, siga uno de estos métodos.
Configuring TDE Oracle Enterprise Manager
- Cree la carpeta de cartera.
mkdir C:\oracle\admin\wallets OEM > login as sys / sysdba OEM > Server > Transparent Data Encryption Advanced Options > Change Location Host Credentials Username: <DOMAIN>\dbs_ora Password: xxxxxxx Configuration Method: File System Encryption Wallet Directory: C:\oracle\admin\wallets OK Create Wallet > Local Auto-Open Wallet > Create Host Credentials Username: <DOMAIN>\dbs_ora Password: xxxxxxx Wallet Password: walletadmin Continue
- Realice una copia de seguridad de la carpeta de cartera.
cd C:\oracle\admin zip -r wallets wallets
Configuring TDE manually
El siguiente procedimiento muestra cómo configurar manualmente TDE.
- En la ventana de comando, cree la carpeta de cartera.
mkdir C:\oracle\admin\wallets
- Agregue la ubicación de cartera al archivo sqlnet.ora.
ENCRYPTION_WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = C:\oracle\admin\wallets\$ORACLE_SID)
- Utilice Oracle SQL*Plus u Oracle SQL Developer para generar una clave principal.
alter system set encryption key identified by "walletadmin";
- Utilice Oracle SQL*Plus u Oracle SQL Developer para comprobar el estado de la cartera.
select * from "v$encryption_wallet";
- From the command window, set the wallet to auto login.
set ORACLE_SID=pmdb orapki wallet create -wallet C:\oracle\admin\wallets -auto_login -pwd walletadmin
- En la ventana de comando, cree una copia de seguridad de la carpeta de cartera.
cd C:\oracle\admin zip -r wallets wallets