#15 Octubre 2024
#OracleTIPSSV
#OracleACEPRO
Debemos configurar el Wallet de encriptación, este se configura mediante el sqlnet.ora en el $OH/network/admin.
Si es RAC, se sugiere usar ACFS para colocar el Wallet en un directorio compartido para todos los nodos.
NOTA: Para más explicaciones, puede consultar el articulo anterior: https://oracletipssv.com/2024/08/06/prevencion-del-urto-de-informacion-oracle-tde/
Configuring the sqlnet.ora File for a Software Keystore Location
Use the sqlnet.ora file to configure the keystore location for a regular file system, for multiple database access, and for use with Oracle Automatic Storage Management (ASM).
- To create a software keystore on a regular file system, use the following format when you edit the sqlnet.ora file:
Procedemos a crear el wallet para usarlo como keystore con su respectivo password.el wallet puede crearse con autologin.
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/backup/wallet' IDENTIFIED BY password
;
OR
ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE '/backup/wallet/' IDENTIFIED BY password;
También debe crearse la clave maestra:
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password;
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY password WITH BACKUP USING 'backup' ;
Debe asegurarse tener el compatible en 12.1, recuerde que el compatible no tiene nada que ver con el performance de query, trata de la activación de características de la edición de la BD, un parámetro estático e irreversible.
compatible >=12.1
Para evitar olvidar abrir el wallet cada vez que la bd se reinicia, se puede configurar el autologin.
ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE '/backup/wallet' IDENTIFIED BY password;
Vamos crear un tablespace y una tabla para la demostración, que permitirá examinar el contenido de un tablespace/datafile y comprobar el beneficio de la característica.
CREATE TABLESPACE encrypt_ts DATAFILE '/backup/oradata/encrypt_df.dbf' SIZE 1M ENCRYPTION USING 'AES256'
DEFAULT STORAGE (ENCRYPT); 2
Tablespace no encriptado
CREATE TABLESPACE nonencrypt_ts DATAFILE '/bkp/oradata/nonencrypt_df.dbf' SIZE 1M ;
Tablas en tablespace encriptado
create table dba_copia1 tablespace encrypt_ts as select * from dba_objects;
create table dba_copia1 tablespace encrypt_ts as select * from dba_objects
Le vamos a dar mas tamaño para que no de error por espacio:
SQL> alter database datafile '/bkp/oradata/nonencrypt_df.dbf' autoextend on next 10m;
Database altered.
SQL> alter database datafile '/bkp/oradata/encrypt_df.dbf' autoextend on next 10m;
Database altered.
SQL>
1* create table dba_copia2 tablespace encrypt_ts as select * from dba_objects
Tabla en tablespace no encriptado
1* create table dba_copia2 tablespace nonencrypt_ts as select * from dba_objects
SQL> /
Table created.
^
Consultamos el contenido del datafile del tablespace encriptado:
emrep:oracle@emcc:/bkp/oradata> strings encrypt_df.dbf | more
emrep:oracle@emcc:/bkp/oradata> strings nonencrypt_df.dbf | more
SQL> create table dba_copia3 tablespace users as select * from dba_objects;
Table created.
SQL>
SQL> set linesize 200
1* select tablespace_name,segment_name from dba_segments where segment_name in ('DBA_COPIA1','DBA_COPIA2','DBA_COPIA3') group by tablespace_name,segment_name
SQL>
alter table DBA_COPIA3 move tablespace ENCRYPT_TS;
Table altered.
SQL>
SQL> select tablespace_name,segment_name from dba_segments where segment_name in ('DBA_COPIA1','DBA_COPIA2','DBA_COPIA3') group by tablespace_name,segment_name;
Podemos ver los archivos que componen el wallet, que son el propio wallet y el archivo del autologin, p12 y sso.
emrep:oracle@emcc:/bkp/wallet> ls -lrt
total 12
-rw-r–r–. 1 oracle oinstall 2400 Jun 27 16:20 ewallet_2024062716205812_bckupkey.p12
-rw-r–r–. 1 oracle oinstall 3848 Jun 27 16:20 ewallet.p12
-rw-r–r–. 1 oracle oinstall 3893 Jun 27 16:30 cwallet.sso
emrep:oracle@emcc:/bkp/wallet> mv cwallet.sso cwallet.sso.bkp
emrep:oracle@emcc:/bkp/wallet>
emrep:oracle@emcc:/bkp/wallet>
emrep:oracle@emcc:/bkp/wallet> exit
exit
Como todo wallet, puede cerrarse , abrise, etc.
SQL> administer key management set keystore close;
keystore altered.
SQL> SQL>
administer key management set keystore open identified by password;
keystore altered.
SQL>
cd /bkp/wallet/
Podemos eliminar el autologin
emrep:oracle@emcc:/bkp/wallet> mv cwallet.sso.bkp cwallet.sso
emrep:oracle@emcc:/bkp/wallet> ls -lrt
total 12
-rw-r–r–. 1 oracle oinstall 2400 Jun 27 16:20 ewallet_2024062716205812_bckupkey.p12
-rw-r–r–. 1 oracle oinstall 3848 Jun 27 16:20 ewallet.p12
-rw-r–r–. 1 oracle oinstall 3893 Jun 27 16:30 cwallet.sso
emrep:oracle@emcc:/bkp/wallet>
Vamos a simular un apagado y validar que auto abre el wallet y su contenido esta a disposición de la BD.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> SQL> startup
ORACLE instance started.
Total System Global Area 1.0033E+10 bytes
Fixed Size 2934696 bytes
Variable Size 1677723736 bytes
Database Buffers 8321499136 bytes
Redo Buffers 30617600 bytes
Database mounted.
Database opened.
SQL> l
SQL>
cd ..
emrep:oracle@emcc:/bkp> cd wallet/
emrep:oracle@emcc:/bkp/wallet> ls -lrt
total 12
-rw-r–r–. 1 oracle oinstall 2400 Jun 27 16:20 ewallet_2024062716205812_bckupkey.p12
-rw-r–r–. 1 oracle oinstall 3848 Jun 27 16:20 ewallet.p12
-rw-r–r–. 1 oracle oinstall 3893 Jun 27 16:30 cwallet.sso
Ahora vamos a simular reiniciar sin el autologin.
emrep:oracle@emcc:/bkp/wallet> mv cwallet.sso cwallet.sso.bkp
emrep:oracle@emcc:/bkp/wallet> sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Thu Jun 27 16:58:41 2024
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1.0033E+10 bytes
Fixed Size 2934696 bytes
Variable Size 1677723736 bytes
Database Buffers 8321499136 bytes
Redo Buffers 30617600 bytes
Database mounted.
Database opened.
SQL>
Al querer consultar una tabla que esta almacenada en un tablespace encriptado, provoca un error
select * from dba_copia1;
select * from dba_copia1
*
ERROR at line 1:
ORA-28365: wallet is not open
SQL>
ls
cwallet.sso.bkp ewallet_2024062716205812_bckupkey.p12 ewallet.p12
emrep:oracle@emcc:/bkp/wallet> mv cwallet.sso.bkp cwallet.sso
emrep:oracle@emcc:/bkp/wallet>
sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Thu Jun 27 17:07:29 2024
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to an idle instance.
SQL>st artup
ORACLE instance started.
Total System Global Area 1.0033E+10 bytes
Fixed Size 2934696 bytes
Variable Size 1677723736 bytes
Database Buffers 8321499136 bytes
Redo Buffers 30617600 bytes
Database mounted.
Database opened.
2
SQL>
y el wallet funcionando:
Espero les sea de utilidad.
saludos.