Implementa y administra la encriptación transparente de datos (TDE) de Oracle en la solución Bare Metal
En esta página, se describe cómo implementar la encriptación transparente de datos (TDE) de Oracle Advanced Security y cómo administrar las claves y la solución Oracle Wallet en una solución Bare Metal.
Descripción general
La TDE de Oracle Advanced Security encripta con transparencia los datos en reposo en las bases de datos de Oracle y evita el acceso no autorizado a los archivos de la base de datos. La TDE puede encriptar copias de seguridad de bases de datos completas (RMAN) y exportaciones de volcados de datos, así como espacios de tablas y columnas específicos.
Cómo funciona la encriptación transparente de datos
La TDE crea y administra varias claves que se usan para la encriptación. Estas claves deben estar protegidas porque si un atacante obtiene datos encriptados y claves coincidentes puede desencriptar con facilidad y ver datos claros.
La TDE tiene una arquitectura de claves de dos niveles, con claves de encriptación de datos unidas por una sola clave maestra de base de datos. La clave maestra está separada de los datos encriptados, almacenada fuera de la base de datos, que puede ser una cartera de almacén de claves de software de Oracle o un almacén de claves del módulo de seguridad de hardware (HSM), y la administra directamente el administrador de seguridad de la base de datos en un almacén de claves.
Hay dos opciones de almacén de claves disponibles para que la TDE admita diversos entornos de clientes. De forma predeterminada, la TDE almacena su clave maestra en una Oracle Wallet, un archivo de almacenamiento de claves basado en estándares PKCS#12. Las carteras proporcionan una solución fácil para una pequeña cantidad de bases de datos encriptadas.
Habilita la TDE para la base de datos 11g de Oracle en el servidor de la solución Bare Metal:
Puedes realizar operaciones de encriptación a nivel de columna y de espacio de tabla. También puedes aplicar la TDE a las copias de seguridad de RMAN.
Habilitar requisitos previos de TDE
Para preparar tu base de datos, configura un almacén de claves (Oracle Wallet
para 11g) y crea una clave maestra inicial.
Configura Oracle Wallet en el servidor de solución Bare Metal
Conéctate a uno de los servidores de la solución Bare Metal desde una máquina
jump host
obastion
en el proyecto.$ ssh customeradmin@192.168.1.10 $ su - oracle
Configura la variable de entorno.
[oracle@svr002 ~]$ . oraenv ORACLE_SID = [tdedb] ? DB11G The Oracle base has been changed from /u01/app/oracle to /apps/oracle/oracle_base [oracle@svr002 ~]$ export ORACLE_SID=DB11G1
Conéctate como sysdba.
[oracle@svr002 ~]$ sqlplus / as sysdba
Asegúrate de que todas las variables de entorno siguientes estén configuradas correctamente.
$ echo $ORACLE_HOME $ echo $ORACLE_BASE $ echo $DB_UNIQUE_NAME
Crea un directorio nuevo para los archivos de Wallet.
$ mkdir -p $ORACLE_BASE/admin/DB11G/wallet
Usa la utilidad orapki para crear la wallet y habilitar el acceso automático, de modo que no necesitamos habilitar la wallet en los reinicios.
$ orapki wallet create -wallet $ORACLE_BASE/admin/DB11G/wallet -auto_login -pwd Oracle2020
Oracle usa las rutas predeterminadas para la wallet.
$ ORACLE_BASE/admin/$DB_UNIQUE_NAME/wallet $ ORACLE_HOME/admin/$DB_UNIQUE_NAME/wallet
Si no usas la ruta de acceso predeterminada, debes configurar tu ruta alternativa en el archivo
sqlnet.ora
. Debes configurar cualquiera de estos parámetros:ENCRYPTION_WALLET_LOCATION
oWALLET_LOCATION
.Sigue estos pasos para encontrar la ruta de la wallet:
SQL> COL wrl_type FORMAT a12 COL wrl_parameter FORMAT a35 COL status FORMAT a15 SQL> select * from v$encryption_wallet; WRL_TYPE WRL_PARAMETER STATUS -------- ------------- ------- file /apps/oracle/oracle_base OPEN_NO_MASTER_KEY /admin/DB11G/wallet
Para configurar la ruta de acceso de la wallet en el archivo
sqlnet.ora
, haz lo siguiente:$ vi sqlnet.ora ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/apps/oracle/oracle_base/admin/DB11G/wallet)) Or WALLET_LOCATION = (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/apps/oracle/oracle_base/admin/DB11G/wallet))
Agrega un nombre de usuario y una contraseña a la wallet. Para agregar un nombre de usuario y una contraseña a una wallet existente, usa el comando
mkstore
con la opción-createCredential
de la siguiente manera:mkstore -wrl <wallet_location> -createCredential <TNS_alias> <username> <password> $ mkstore -wrl apps/oracle/oracle_base/admin/DB11G/wallet -createCredential DB11G testuser testtest123
Puedes acceder con
testuser@SID
sin ingresar la contraseña.Crea una clave maestra inicial.
SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY Oracle2020;
Verifica que el estado de la wallet sea
OPEN
.SQL> COL wrl_type FORMAT a12 COL wrl_parameter FORMAT a35 COL status FORMAT a15 SQL> select * from v$encryption_wallet; WRL_TYPE WRL_PARAMETER STATUS -------- ------------- ------ file /apps/oracle/oracle_base/ OPEN admin/DB11G/wallet
Para abrir y cerrar la cartera, sigue estos pasos:
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "Password"; SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE;
Habilita la TDE a nivel del espacio de tabla
Puedes realizar operaciones de encriptación con la instrucción CREATE TABLESPACE SQL
.
Encripta nuevos espacios de tabla
Cuando creas un espacio de tabla nuevo, puedes establecer su configuración de encriptación durante el proceso de creación.
Asegúrate de que el parámetro de inicialización COMPATIBLE para la encriptación del espacio de tabla sea 11.2.0.0 o superior
SQL> SHOW PARAMETER COMPATIBLE NAME TYPE VALUE ---- ---- ------ compatible string 11.2.0.4.0
Asegúrate de haber configurado la clave maestra de encriptación de la TDE. Puedes verificarla en Crea una clave maestra inicial en la sección Requisitos previos.
Crea el espacio de tabla encriptado
Para verificar la ruta del archivo de datos, usa lo siguiente:
SQL> select * from dba_data_files ;
Ejecuta la instrucción CREATE TABLESPACE con sus cláusulas de encriptación
SQL> create TABLESPACE encrypted_ts DATAFILE '+DATA/db11g/datafile/encrypted_ts01.dbf' SIZE 5 M AUTOEXTEND on NEXT 64K ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT);
ENCRYPTION USING 'AES256' ENCRYPT especifica el algoritmo de encriptación y la longitud de clave para la encriptación. La cláusula ENCRYPT encripta el espacio de tabla.
Si se omite la cláusula USING, el algoritmo de encriptación se configurará de forma predeterminada como “AES128”. Además, se debe especificar la cláusula de almacenamiento predeterminada de ENCRYPT. Además, puedes establecer el parámetro dinámico TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM a fin de definir el algoritmo de encriptación predeterminado para futuras operaciones de creación de espacios de tabla mediante la declaración ALTER SYSTEM:
sql> ALTER SYSTEM SET TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM = value;
El valor puede ser uno de los siguientes algoritmos de encriptación: AES128, AES192, AES256, 3DES168, ARIA128, ARIA192, ARIA256, SEED128 y GOST256. El valor predeterminado es AES128.
De manera alternativa, puedes establecer
TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
como un parámetro de inicialización en el archivoinit.ora
.Para comprobar si la encriptación del espacio de tabla está configurada o no, puedes verificar la columna ENCRYPTED de las vistas DBA_TABLESPACES y USER_TABLESPACES, que indica si el espacio de tabla está encriptado o no.
SQL> SELECT tablespace_name, encrypted FROM dba_tablespaces; TABLESPACE_NAME ENC ----------------------------------- SYSTEM NO SYSAUX NO UNDOTBS1 NO TEMP NO USERS NO UNDOTBS2 NO ENCRYPTED_TS YES
Encriptación de prueba
SQL> CREATE TABLE test (id NUMBER(10),data VARCHAR2(50))TABLESPACE encrypted_ts; Table created. SQL> CREATE INDEX test_idx ON test(data) TABLESPACE encrypted_ts; Index created. SQL> INSERT INTO test (id, data) VALUES (1, 'Test Encryptio'); 1 row created. SQL> COMMIT; Commit complete
Vacía la caché del búfer para asegurarte de que los datos se escriban en el archivo de datos.
SQL> ALTER SYSTEM FLUSH BUFFER_CACHE;
Lee los datos dentro del archivo de datos con el comando de strings.
export ORACLE_SID=+ASM asmcmd ASMCMD> strings +DATA/db11g/datafile/encrypted_ts01.dbf
Los datos se muestran en formato binario.
Habilita la TDE a nivel de la columna de la tabla
La encriptación de columnas TDE se puede usar para encriptar datos específicos de columnas en tablas de bases de datos que son confidenciales, como números de tarjetas de crédito, números de seguridad social (NSS) y números de cuentas personales (PAN).
Crea una tabla con una columna encriptada
SQL> CREATE TABLE employee ( first_name VARCHAR2(128), last_name VARCHAR2(128), empID NUMBER ENCRYPT NO SALT, salary NUMBER(6) ENCRYPT USING '3DES168' ); Table created.
SALT
es una forma de reforzar la seguridad de los datos encriptados. Es una string aleatoria que se agrega a los datos antes de que se encripten, lo que hace que la repetición de texto sin encriptar aparezca diferente cuando se encripte.SALT
quita un método que los atacantes usan para robar datos, que corresponde a los patrones coincidentes de texto encriptado. Puedes usar el parámetroSALT
oNO SALT
especificado con la cláusulaENCRYPT
.Puedes usar el comando
ALTER TABLE
para encriptar las columnas de una tabla existente si agregas una columna encriptada o si encriptas una columna existente.Para agregar una columna encriptada a una tabla existente en la base de datos:
SQL> ALTER TABLE employee ADD (credit_card_number VARCHAR2(16) ENCRYPT NO SALT); Table altered.
Para encriptar una columna existente en una tabla de la base de datos:
SQL> ALTER TABLE employee MODIFY (last_name encrypt); Table altered.
Para agregar
SALT
a una columna encriptada en una tabla de la base de datos:SQL> ALTER TABLE employee MODIFY (last_name encrypt salt); Table altered.
Para desencriptar una columna existente en una tabla de la base de datos:
SQL> ALTER TABLE employee MODIFY (last_name decrypt); Table altered.
Para quitar SALT de una columna encriptada en una tabla de la base de datos:
SQL> ALTER TABLE employee MODIFY (last_name encrypt no salt); Table altered.
Para cambiar la clave encriptada de la tabla que contiene una o más columnas encriptadas:
SQL> ALTER TABLE employee rekey; Table altered.
Para cambiar el algoritmo de encriptación de la tabla que contiene una o más columnas encriptadas:
SQL> ALTER TABLE employee rekey USING '3DES168'; Table altered.
Encripta espacios de tabla futuros
Puedes configurar la base de datos de Oracle para encriptar de forma automática los espacios de tabla futuros que crearás mediante el parámetro de inicialización de la base de datos ENCRYPT_NEW_TABLESPACES
.
Usa el siguiente comando de ALTER SYSTEM
:
SQL> ALTER SYSTEM SET ENCRYPT_NEW_TABLESPACES=value;
El valor puede ser:
ALWAYS
encripta de forma automática el espacio de tabla mediante el algoritmoAES128
, o el algoritmo especificado por el parámetro dinámicoTABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
, si omites la cláusulaENCRYPTION
deCREATE TABLESPACE
para situaciones locales y en la nube. Sin embargo, si proporcionas la cláusulaENCRYPTION
, el algoritmo que especificas tiene prioridad sobreAES128
.DDL
encripta el espacio de tabla con la configuración especificada de la cláusulaENCRYPTION
deCREATE TABLESPACE
, para los entornos de nube y locales.CLOUD_ONLY
(no aplicable en nuestro caso de uso) se aplica solo a un entorno de Oracle Cloud.CLOUD_ONLY
es el valor predeterminado.
¿Encriptación de espacio de tabla de TDE o encriptación de columna de TDE?
ELEGIR LA ENCRIPTACIÓN DE COLUMNAS TDE SI | ELEGIR LA ENCRIPTACIÓN DE ESPACIO DE TABLA DE TDE SI |
---|---|
Se conoce la ubicación de la información sensible | Se desconoce la ubicación de la información sensible |
Menos del 5% de todas las columnas de la aplicación son candidatas para la encriptación | La mayoría de los datos de la aplicación se consideran sensibles o se aplican varios mandatos de seguridad y privacidad nacionales e internacionales a tu industria. |
La encriptación de columnas de TDE admite la longitud y el tipo de datos | La encriptación de columnas de TDE no admite todos los tipos de datos que contienen información sensible |
Los candidatos para la encriptación no son columnas de clave externa | Los candidatos para la encriptación son columnas de clave externa |
Los índices sobre los candidatos para la encriptación son índices de árbol B normales. | Los índices de los candidatos para la encriptación son índices funcionales |
La aplicación no realiza análisis de rango en datos encriptados | La aplicación busca rangos de datos sensibles |
Aumento del almacenamiento de 1 a 52 bytes por valor encriptado | No se acepta el aumento de almacenamiento |
El impacto en el rendimiento depende del porcentaje de columnas encriptadas, de la frecuencia con la que se seleccionan o actualizan los valores encriptados, del tamaño de los datos encriptados y de otras variables | Impacto constante en el rendimiento por debajo del 10% |
Si deseas beneficiarte de la aceleración criptográfica de hardware | |
Si quieres disfrutar de los beneficios de la encriptación y la compresión al mismo tiempo. |
Encriptación de copias de seguridad de RMAN
Los conjuntos de copias de seguridad se encriptan mediante un algoritmo enumerado en V$RMAN_ENCRYPTION_ALGORITHMS
. RMAN puede encriptar con transparencia los datos escritos en conjuntos de copias de seguridad y desencriptarlos cuando son necesarios en una operación RESTORE
. RMAN ofrece tres modos de encriptación: transparent, protegido con contraseña y modo doble.
Para usar la encriptación de modo transparente (predeterminado), se debe usar Oracle Encryption Wallet.
Para usar el modo de contraseña, el DBA debe proporcionar una contraseña, que se usará en la encriptación. Puedes configurar el modo de contraseña mediante
SET ENCRYPTION ON IDENTIFIED BY password only
.Con la encriptación de modo doble, puedes usar Oracle Wallet o una contraseña para la desencriptación. Puedes configurar el modo doble mediante
SET ENCRYPTION ON IDENTIFIED BY password
.
Configura la encriptación de copia de seguridad de RMAN
Configura Oracle Wallet
Configura RMAN para usar la encriptación.
Configura el modo de encriptación RMAN. En este ejemplo, se usa el modo doble. Para ello, conéctate a la base de datos de destino de RMAN y ejecuta el comando
SET ENCRYPTION ON IDENTIFIED BY password
.[oracle@svr002 ~]$ . oraenv ORACLE_SID = [tdedb] ? DB11G The Oracle base has been changed from /u01/app/oracle to /apps/oracle/oracle_base export ORACLE_SID=DB11G1
Conéctate a RMAN.
rman target / RMAN> SET ENCRYPTION ON IDENTIFIED BY <password>; executing command: SET encryption
SET ENCRYPTION
anula la configuración de encriptación que especifica el comandoCONFIGURE ENCRYPTION
, que usa la encriptación transparente de forma predeterminada.Configura el algoritmo de encriptación de copias de seguridad predeterminado.
Para ver una lista de los algoritmos de encriptación RMAN que se pueden obtener, consulta la vista
v$rman_encryption_algorithms
:SQL> COL algorithm_name FORMAT a15 COL algorithm_description FORMAT a15 COL is_default FORMAT a15 SQL> select algorithm_id, algorithm_name, algorithm_description, is_default from v$rman_encryption_algorithms; ALGORITHM_ID ALGORITHM_NAME ALGORITHM_DESCR IS_DEFAULT ----------- -------------- --------------- ---------- 1 AES128 AES 128-bit key YES 2 AES192 AES 192-bit key NO 3 AES256 AES 256-bit key NO
Para cambiar el algoritmo predeterminado, haz lo siguiente:
RMAN> CONFIGURE ENCRYPTION ALGORITHM 'AES256'; using target database control file instead of recovery catalog new RMAN configuration parameters: CONFIGURE ENCRYPTION ALGORITHM 'AES256'; new RMAN configuration parameters are successfully stored
Realiza una copia de seguridad encriptada con el comando de copia de seguridad normal de RMAN. Por ejemplo:
RMAN> backup tablespace users;
Para restablecer la copia de seguridad con la contraseña de encriptación, haz lo siguiente:
RMAN> set decryption identified by <password>; RMAN> restore tablespace users;
Notas importantes
Si las claves de desencriptación necesarias están disponibles, las copias de seguridad encriptadas se desencriptan de forma automática durante el restablecimiento y la recuperación. Cada conjunto de copias de seguridad obtiene una clave diferente. La clave se almacena en el formato encriptado en el espacio de la copia de seguridad. La copia de seguridad se desencripta con claves que se obtienen con una contraseña proporcionada por el usuario o el almacén de claves de software de Oracle.
La encriptación de copia de seguridad transparente admite el almacén de claves de software de acceso automático y basado en contraseñas. Cuando usas el almacén de claves de software de acceso automático, las operaciones de copia de seguridad encriptadas se pueden ejecutar en cualquier momento, ya que el almacén de claves de acceso automático siempre está abierto. Cuando usas el almacén de claves de software basado en contraseñas, este debe abrirse antes de poder encriptar copias de seguridad.
Si usas un almacén de claves de acceso automático, no lo incluyas en una copia de seguridad junto con los datos de copia de seguridad encriptada, ya que los usuarios pueden leer las copias de seguridad encriptadas si obtienen las copias de seguridad y el almacén de claves de acceso automático. Es seguro crear una copia de seguridad del almacén de claves de Oracle porque esa forma del almacén de claves no se puede usar sin la contraseña del almacén.
Si algunas columnas de la base de datos se encriptan con encriptación transparentes de datos (TDE) de columnas y si se crean copias de seguridad de esas columnas con encriptación de copias de seguridad, esas columnas se encriptan por segunda vez durante la copia de seguridad. Cuando los conjuntos de copias de seguridad se desencriptan durante una operación de restablecimiento, las columnas encriptadas se muestran en su forma encriptada original.
Si pierdes el almacén de claves de Oracle, no podrás restablecer ninguna copia de seguridad encriptada de manera transparente. Además, si olvidas o pierdes la contraseña que usaste para encriptar una copia de seguridad encriptada con contraseña, no puedes restablecer la copia de seguridad.