Crypter les données dans la base de données source

Le chiffrement transparent des données (TDE) crypte de manière transparente les données au repos dans un Oracle Database. Il arrête les tentatives non autorisées du système d'exploitation d'accéder aux données de base de données stockées dans des fichiers, sans affecter la façon dont les applications accèdent aux données à l'aide de SQL. TDE est entièrement intégré à Oracle Database et peut crypter des sauvegardes de base de données entières (RMAN), des exportations Data Pump, des tablespaces d'applications entiers ou des colonnes sensibles spécifiques. Les données cryptées restent cryptées dans la base de données, qu'il s'agisse de fichiers de stockage de tablespace, de tablespaces temporaires, de tablespaces d'annulation ou d'autres fichiers tels que les fichiers de journalisation.

Pour la récupération après sinistre, le mot de passe de vos instances sur site et Oracle Cloud Infrastructure doit être le même. Dans le cas contraire, utilisez la commande sqlplus pour mettre à jour le mot de passe.

Déterminer si TDE est activé dans la base de données source

Lorsque le chiffrement transparent des données (TDE) n'est pas activé sur votre base de données source, les données ne sont pas cryptées lorsque vous migrez la base de données vers Oracle Cloud Infrastructure (OCI) ou lors de la récupération après sinistre. Vous devrez crypter manuellement les données non chiffrées. Une fois dans OCI, toutes les nouvelles données sont automatiquement cryptées.

  1. Déterminez si le tablespace est crypté.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    Lorsque le tablespace n'est pas crypté, la sortie ressemble à ce qui suit :

    TABLESPACE_NAME 	       		ENC
    ------------------------------ ---
    SYSTEM                          NO
    SYSAUX                          NO
    UNDOTBS1                        NO
    TEMP                            NO
    USERS			      NO
  2. Recherchez les fichiers de données de base de données associés (. dbf ) sur le système de fichiers.
    SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files;

    La sortie ressemblera à ce qui suit :

    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

Activer le chiffrement TDE sur la base de données source

Le chiffrement transparent des données (TDE) vous permet de crypter les données sensibles stockées dans les tables et les tablespaces. Les données cryptées sont déchiffrées de manière transparente pour un utilisateur ou une application de base de données qui a accès aux données.

  1. Accédez au répertoire $ORACLE_BASE de votre base de données source.
    bash-4.2$ pwd
    /opt/oracle/admin/ORCLCDB
  2. Créez un répertoire nommé wallet.
    $ mkdir wallet
  3. Créez le portefeuille, ainsi qu'un mot de passe sécurisé qui utilise un mélange de caractères alphanumériques.
    Cette étape crée et ouvre le portefeuille. Une fois la base de données ouverte, le portefeuille reste ouvert jusqu'à ce que le portefeuille soit explicitement fermé ou que la base de données soit arrêtée, date à laquelle le portefeuille se ferme automatiquement.
    SQL> alter system set encryption key identified by "wallet_password";
  4. Ouvrez à nouveau un portefeuille fermé après le redémarrage de la base de données.
    SQL> alter system set wallet open identified by "wallet_password";
  5. Cryptez le tablespace.
    Le code suivant utilise le cryptage 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. Vérifiez que le tablespace est crypté.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    La sortie ressemblera à ce qui suit :

    TABLESPACE_NAME 	       ENC
    ------------------------------ ---
    SYSTEM			    YES
    SYSAUX			    YES
    UNDOTBS1                       YES
    TEMP			      NO
    USERS			     YES
  7. Vérifiez que les fichiers de données de base de données associés (. dbf ) sur le système de fichiers sont cryptés.
    SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files;

    La sortie ressemblera à ce qui suit :

    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

Créer un portefeuille dans la base de données source

Créez un portefeuille avec un mot de passe sécurisé.

  1. Exécutez les commandes suivantes sur le noeud 1 de la base de données principale sur site pour créer le portefeuille :
    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. Affichez les paramètres de portefeuille de cryptage.
    SQL> select * from v$encryption_wallet;

    Le résultat devrait être similaire à ce qui suit :

    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. Vérifiez l'emplacement du portefeuille.
    [oracle@exa11db01 wallet]$ ls -lrttotal

    Le résultat devrait être similaire à ce qui suit :

    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. Copiez les fichiers de portefeuille vers le deuxième noeud de l'instance sur site.
    [oracle@exa11db01 wallet]$ scp *.* exa11db02:/u01/app/oracle/admin/db1/wallet/

    Le résultat devrait être similaire à ce qui suit :

    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. Sur le noeud 1, obtenez le statut de base de données.
    [oracle@exa11db01 db1]$ srvctl status database -d db1

    Le résultat devrait être similaire à ce qui suit :

    Instance db11 is running on node exa11db01
    Instance db12 is running on node exa11db02
  6. Sur le noeud 1, arrêtez et démarrez la base de données pour terminer la configuration du portefeuille.
    [oracle@exa11db01 db1]$ srvctl stop database -d db1
    [oracle@exa11db01db1]$ srvctl start database -d db1
  7. Créez le tablespace crypté.
    Le code suivant définit un tablespace crypté avec le cryptage 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. Vérifiez que le nom du tablespace et dbf sont cryptés.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    Lorsqu'ils sont cryptés, les fichiers ont des numéros de séquence différents.

Créer un portefeuille sur la base de données de sauvegarde

Créez un portefeuille sur chaque noeud du Oracle Database Exadata Cloud Service de sauvegarde. Le portefeuille doit être le même sur chaque noeud.

  1. Dans la base de données de sauvegarde sur OCI, vérifiez l'emplacement du fichier de portefeuille.
    SQL> select * from V$ENCRYPTION_WALLET;
  2. Copiez les fichiers de portefeuille de la base de données source sur site vers la base de données de sauvegarde dans le cloud.
    [oracle@exa11db01 ~]$ scp -i FedExKey.ssh /u01/app/oracle/admin/db1/wallet/*.* 
    opc@10.255.195.131:/tmp/
  3. Vérifiez que le portefeuille apparaît dans le répertoire d'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

    Le résultat devrait être similaire à ce qui suit :

    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. Copiez les fichiers de portefeuille vers le deuxième noeud.