Criptografar os Dados no Banco de Dados de Origem

TDE (Transparent Data Encryption) criptografa de forma transparente os dados em repouso em um Oracle Database. Ele interrompe tentativas não autorizadas do sistema operacional de acessar dados do banco de dados armazenados em arquivos, sem afetar a forma como os aplicativos acessam os dados usando SQL. O TDE está totalmente integrado ao Oracle Database e pode criptografar backups inteiros do banco de dados (RMAN), exportações do Data Pump, tablespaces inteiros da aplicação ou colunas confidenciais específicas. Os dados criptografados permanecem criptografados no banco de dados, seja em arquivos de armazenamento de tablespaces, tablespaces temporários, tablespaces de undo ou outros arquivos, como redo logs.

Para recuperação de desastres, a senha em suas instâncias locais e do Oracle Cloud Infrastructure deve ser a mesma. Caso contrário, use o comando sqlplus para atualizar a senha.

Determinar se TDE está Ativado no Banco de Dados de Origem

Quando TDE (Transparent Data Encryption) não está ativado no banco de dados de origem, os dados não são criptografados quando você migra o banco de dados para o Oracle Cloud Infrastructure (OCI) ou durante a recuperação de desastres. Você precisará criptografar manualmente os dados não criptografados. Uma vez no OCI, todos os novos dados são criptografados automaticamente.

  1. Determine se o tablespace está criptografado.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    Quando o tablespace não for criptografado, a saída será semelhante à seguinte:

    TABLESPACE_NAME 	       		ENC
    ------------------------------ ---
    SYSTEM                          NO
    SYSAUX                          NO
    UNDOTBS1                        NO
    TEMP                            NO
    USERS			      NO
  2. Localize os arquivos de dados do banco de dados associados (. dbf ) no sistema de arquivos.
    SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files;

    A saída será semelhante à seguinte:

    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

Ativar Criptografia TDE no Banco de Dados de Origem

A TDE (Transparent Data Encryption) permite criptografar dados confidenciais armazenados em tabelas e tablespaces. Os dados criptografados são descriptografados de forma transparente para um usuário ou aplicativo de banco de dados que tem acesso aos dados.

  1. Vá para o diretório $ORACLE_BASE no banco de dados de origem.
    bash-4.2$ pwd
    /opt/oracle/admin/ORCLCDB
  2. Crie um diretório chamado wallet.
    $ mkdir wallet
  3. Crie a wallet, juntamente com uma senha segura que use uma mistura de caracteres alfanuméricos.
    Esta etapa cria e abre a wallet. Depois que o banco de dados é aberto, a wallet permanece aberta até que a wallet seja explicitamente fechada ou o banco de dados seja desativado, momento em que a wallet é fechada automaticamente.
    SQL> alter system set encryption key identified by "wallet_password";
  4. Reabra uma wallet fechada depois que o banco de dados for reiniciado.
    SQL> alter system set wallet open identified by "wallet_password";
  5. Criptografar o tablespace.
    O código a seguir usa criptografia 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 se o tablespace está criptografado.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    A saída será semelhante à seguinte:

    TABLESPACE_NAME 	       ENC
    ------------------------------ ---
    SYSTEM			    YES
    SYSAUX			    YES
    UNDOTBS1                       YES
    TEMP			      NO
    USERS			     YES
  7. Verifique se os arquivos de dados do banco de dados associados (. dbf ) no sistema de arquivos estão criptografados.
    SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files;

    A saída será semelhante à seguinte:

    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

Criar uma Wallet no Banco de Dados de Origem

Criar uma wallet, juntamente com uma senha segura.

  1. Execute os seguintes comandos no Nó 1 do banco de dados local principal para criar a wallet:
    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. Exibir os parâmetros da wallet de criptografia.
    SQL> select * from v$encryption_wallet;

    A saída deve ser semelhante à seguinte:

    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. Verifique a localização da wallet.
    [oracle@exa11db01 wallet]$ ls -lrttotal

    A saída deve ser semelhante à seguinte:

    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. Copiar os arquivos da wallet para o segundo nó da instância local.
    [oracle@exa11db01 wallet]$ scp *.* exa11db02:/u01/app/oracle/admin/db1/wallet/

    A saída deve ser semelhante à seguinte:

    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. No Nó 1, obtenha o status do banco de dados.
    [oracle@exa11db01 db1]$ srvctl status database -d db1

    A saída deve ser semelhante à seguinte:

    Instance db11 is running on node exa11db01
    Instance db12 is running on node exa11db02
  6. No Nó 1, interrompa e inicie o banco de dados para concluir a configuração da wallet.
    [oracle@exa11db01 db1]$ srvctl stop database -d db1
    [oracle@exa11db01db1]$ srvctl start database -d db1
  7. Crie o tablespace criptografado.
    O código a seguir configura um tablespace criptografado com criptografia 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 se o nome do tablespace e o dbf estão criptografados.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    Quando criptografados, os arquivos têm números de sequência diferentes.

Criar uma Wallet no Banco de Dados de Backup

Crie uma wallet em cada nó do Oracle Database Exadata Cloud Service de backup. A wallet deve ser a mesma em cada nó.

  1. No banco de dados de backup no OCI, verifique a localização do arquivo da wallet.
    SQL> select * from V$ENCRYPTION_WALLET;
  2. Copie os arquivos da wallet do banco de dados de origem local para o banco de dados de backup na nuvem.
    [oracle@exa11db01 ~]$ scp -i FedExKey.ssh /u01/app/oracle/admin/db1/wallet/*.* 
    opc@10.255.195.131:/tmp/
  3. Verifique se a wallet aparece no diretório no 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

    A saída deve ser semelhante à seguinte:

    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 os arquivos da wallet para o segundo nó.