Cifrar los datos en la base de datos origen

El cifrado de datos transparente (TDE) cifra de forma transparente los datos en reposo en un Oracle Database. Detenga los intentos no autorizados del sistema operativo para acceder a los datos de base de datos almacenados en archivos, sin afectar la forma en que las aplicaciones acceden a los datos mediante SQL. TDE está totalmente integrado con Oracle Database y puede cifrar copias de seguridad de base de datos completas (RMAN), exportaciones de pump de datos, tablespaces de aplicación completos o columnas sensibles específicas. Los datos cifrados permanecen cifrados en la base de datos, ya sea en archivos de almacenamiento de tablespace, tablespaces temporales, tablespaces de deshacer u otros archivos como redo logs.

Para la recuperación ante desastres, la contraseña de las instancias locales y Oracle Cloud Infrastructure debe ser la misma. Si no lo son, utilice el comando sqlplus para actualizar la contraseña.

Determinar si TDE está activado en la base de datos origen

Cuando el cifrado de datos transparente (TDE) no está activado en la base de datos origen, los datos no se cifran al migrar la base de datos a Oracle Cloud Infrastructure (OCI) o durante la recuperación ante desastres. Tendrá que cifrar manualmente los datos no cifrados. Una vez en OCI, cualquier dato nuevo se encripta automáticamente.

  1. Determine si el tablespace está cifrado.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    Cuando el tablespace no está cifrado, la salida se verá similar a la siguiente:

    TABLESPACE_NAME 	       		ENC
    ------------------------------ ---
    SYSTEM                          NO
    SYSAUX                          NO
    UNDOTBS1                        NO
    TEMP                            NO
    USERS			      NO
  2. Busque los archivos de datos de base de datos asociados (. dbf ) en el sistema de archivos.
    SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files;

    La salida se verá similar a la siguiente:

    TABLESPACE_NAME
    ------------------------------
    FILE_NAME
    
    SYSTEM
    /opt/oracle/oradata/ORCLCDB/system01.dbf
    
    SYSAUX
    /opt/oracle/oradata/ORCLCDB/sysaux01.dbf
    
    UNDOTBS1
    /opt/oracle/oradata/ORCLCDB/undotbs01.dbf
    
    USERS
    /opt/oracle/oradata/ORCLCDB/users01.dbf

Activar cifrado TDE en la base de datos origen

El cifrado transparente de datos (TDE) permite cifrar datos confidenciales almacenados en tablas y tablespaces. Los datos cifrados se descifran de forma transparente para un usuario o aplicación de base de datos que tiene acceso a los datos.

  1. Vaya al directorio $ORACLE_BASE de la base de datos origen.
    bash-4.2$ pwd
    /opt/oracle/admin/ORCLCDB
  2. Cree un directorio denominado wallet.
    $ mkdir wallet
  3. Cree la cartera, junto con una contraseña segura que utilice una combinación de caracteres alfanuméricos.
    Este paso crea y abre la cartera. Una vez abierta la base de datos, la cartera permanece abierta hasta que se cierra explícitamente la cartera o se cierra la base de datos, momento en el que se cierra automáticamente la cartera.
    SQL> alter system set encryption key identified by "wallet_password";
  4. Vuelva a abrir una cartera cerrada después de reiniciar la base de datos.
    SQL> alter system set wallet open identified by "wallet_password";
  5. Cifrar el tablespace.
    El siguiente código utiliza el cifrado AES-128.
    alter tablespace system encryption online using 'aes128' encrypt file_name_convert=('/opt/oracle/oradata/ORCLCDB/system01.dbf','/opt/oracle/oradata/ORCLCDB/system01_enc.dbf');
    
    alter tablespace sysaux encryption online using 'aes128' encrypt file_name_convert=('/opt/oracle/oradata/ORCLCDB/sysaux01.dbf','/opt/oracle/oradata/ORCLCDB/sysaux01_enc.dbf');
    
    alter tablespace undotbs1 encryption online using 'aes128' encrypt file_name_convert=('/opt/oracle/oradata/ORCLCDB/undotbs01.dbf','/opt/oracle/oradata/ORCLCDB/undotbs01_enc.dbf');
    
    alter tablespace users encryption online using 'aes128' encrypt file_name_convert=('/opt/oracle/oradata/ORCLCDB/users01.dbf','/opt/oracle/oradata/ORCLCDB/users01_enc.dbf');
    
  6. Verifique que el tablespace está cifrado.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    La salida se verá similar a la siguiente:

    TABLESPACE_NAME 	       ENC
    ------------------------------ ---
    SYSTEM			    YES
    SYSAUX			    YES
    UNDOTBS1                       YES
    TEMP			      NO
    USERS			     YES
  7. Verifique que los archivos de datos de base de datos asociados (. dbf ) del sistema de archivos estén cifrados.
    SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files;

    La salida se verá similar a la siguiente:

    TABLESPACE_NAME
    ------------------------------
    FILE_NAME
    
    SYSTEM
    /opt/oracle/oradata/ORCLCDB/system01_enc.dbf
    
    SYSAUX
    /opt/oracle/oradata/ORCLCDB/sysaux01_enc.dbf
    
    UNDOTBS1
    /opt/oracle/oradata/ORCLCDB/undotbs01_enc.dbf
    
    USERS
    /opt/oracle/oradata/ORCLCDB/users01_enc.dbf

Crear Cartera en la Base de Datos Origen

Cree una cartera junto con una contraseña segura.

  1. Ejecute los siguientes comandos en el nodo 1 de la base de datos primaria local para crear la cartera:
    SQL>
            ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/app/oracle/admin/db1/wallet/' IDENTIFIED BY
            "wallet-password";
    ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE
            '/u01/app/oracle/admin/db1/wallet/' IDENTIFIED BY "wallet-password";
    SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE
            OPEN IDENTIFIED BY "wallet-password";
    SQL> ADMINISTER KEY MANAGEMENT SET
            KEY USING TAG 'master_key' IDENTIFIED BY "wallet-password” WITH BACKUP USING
            'masterbackup';
    SQL> SELECT KEY_ID,creation_time,activation_time,tag FROM V$ENCRYPTION_KEYS;
  2. Muestre los parámetros de cartera de cifrado.
    SQL> select * from v$encryption_wallet;

    La salida debe ser similar a la siguiente:

    WRL_TYPE
    --------------------
    WRL_PARAMETER
    --------------------------------------------------------------------------------
    STATUS       WALLET_TYPE    WALLET_OR KEYSTORE 
    FULLY_BAC
    ------------------------------ -------------------- --------- --------  ---------
        CON_ID
    ----------
    FILE
    /u01/app/oracle/admin/db1/wallet/
    OPEN       AUTOLOGIN    SINGLE    NONE     NO
  3. Compruebe la ubicación de la cartera.
    [oracle@exa11db01 wallet]$ ls -lrttotal

    La salida debe ser similar a la siguiente:

    total 20
    -rw------- 1 oracle dba 2987 Feb  2 15:37 ewallet_2021020223374667_masterbackup.p12
    -rw------- 1 oracle dba 5419 Feb  2 15:37 ewallet.p12
    -rw------- 1 oracle dba 5464 Feb  2 15:37 cwallet.sso
  4. Copie los archivos de cartera en el segundo nodo de la instancia local.
    [oracle@exa11db01 wallet]$ scp *.* exa11db02:/u01/app/oracle/admin/db1/wallet/

    La salida debe ser similar a la siguiente:

    cwallet.sso                                        100% 5464     8.7MB/s   00:00    
    ewallet_2021020223374667_masterbackup.p12          100% 2987    12.1MB/s   00:00    
    ewallet.p12                                         100% 5419    18.2MB/s   00:00 
  5. En el nodo 1, obtenga el estado de la base de datos.
    [oracle@exa11db01 db1]$ srvctl status database -d db1

    La salida debe ser similar a la siguiente:

    Instance db11 is running on node exa11db01
    Instance db12 is running on node exa11db02
  6. En el nodo 1, pare e inicie la base de datos para completar la configuración de la cartera.
    [oracle@exa11db01 db1]$ srvctl stop database -d db1
    [oracle@exa11db01db1]$ srvctl start database -d db1
  7. Cree el tablespace cifrado.
    El siguiente código configura un tablespace cifrado con cifrado aes128:
    alter tablespace system encryption online using 'aes128' encrypt;
    alter tablespace sysaux encryption online using 'aes128' encrypt;
    alter tablespace undotbs1 encryption online using 'aes128' encrypt;
    alter tablespace undotbs2 encryption online using 'aes128' encrypt;
    alter tablespace users encryption online using 'aes128' encrypt;
  8. Verifique que el nombre del tablespace y dbf estén cifrados.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    Cuando se cifran, los archivos tienen números de secuencia diferentes.

Crear Cartera en la Base de Datos de Copia de Seguridad

Cree una cartera en cada nodo de la copia de seguridad de Oracle Database Exadata Cloud Service. La cartera debe ser la misma en cada nodo.

  1. En la base de datos de copia de seguridad de OCI, compruebe la ubicación del archivo de cartera.
    SQL> select * from V$ENCRYPTION_WALLET;
  2. Copie los archivos de cartera de la base de datos origen local en la base de datos de copia de seguridad en la nube.
    [oracle@exa11db01 ~]$ scp -i FedExKey.ssh /u01/app/oracle/admin/db1/wallet/*.* 
    opc@10.255.195.131:/tmp/
  3. Verifique que la cartera aparece en el directorio de Oracle Database Exadata Cloud Service.
    [oracle@exacs82-vm3sv1 admin]$ cd /var/opt/oracle/dbaas_acfs/DB1/wallet_root/tde
    [oracle@exacs82-vm3sv1 tde]$ ls -lrt

    La salida debe ser similar a la siguiente:

    total 72
    drwxr-xr-x 2 oracle oinstall 20480 Jan 23 13:50 Backup
    -rwxr-xr-x 1 oracle oinstall  5419 Feb  3 13:38 ewallet.p12
    -rwxr-xr-x 1 oracle oinstall  2987 Feb  3 13:38 ewallet_2021020223374667_masterbackup.p12
    -rw------- 1 oracle oinstall  5464 Feb  3 13:39 cwallet.sso
  4. Copie los archivos de cartera en el segundo nodo.