加密來源資料庫中的資料

透資料加密 (TDE) 可將 Oracle Database 中的資料以靜態方式加密。它會停止未經授權的作業系統嘗試存取儲存在檔案中的資料庫資料,而不會影響應用程式如何使用 SQL 存取資料TDE 已與 Oracle Database 完全整合,可以加密整個資料庫備份 (RMAN)、「資料汲取」匯出、整個應用程式表格空間或特定機密資料欄。無論資料在表格空間儲存體檔案、暫時表格空間、還原表格空間或其他檔案 (例如重做日誌) 中,加密的資料都會保持在資料庫中加密。

判斷來源資料庫上是否啟用 TDE

如果您的來源資料庫未啟用「通透資料加密 (TDE)」,當您將資料庫移轉至 Oracle Cloud Infrastructure (OCI) 或在災害復原期間並不會加密資料。您必須手動加密未加密的資料。一旦在 OCI 中,任何新資料都會自動加密。

  1. 判斷表格空間是否已加密。
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    當表格空間未加密時,輸出看起來會與下列類似:

    TABLESPACE_NAME 	       		ENC
    ------------------------------ ---
    SYSTEM                          NO
    SYSAUX                          NO
    UNDOTBS1                        NO
    TEMP                            NO
    USERS			      NO
  2. 在檔案系統上尋找關聯的資料庫資料檔 (.dbf)。
    SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files;

    輸出看起來將與下列類似:

    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

在來源資料庫上啟用 TDE 加密

通透資料加密 (TDE)」可讓您加密儲存在表格和表格空間中的機密資料。具有資料存取權的資料庫使用者或應用程式,會以通透方式解密加密資料。

  1. 移至來源資料庫中的 $ORACLE_BASE 目錄。
    bash-4.2$ pwd
    /opt/oracle/admin/ORCLCDB
  2. 建立名為 wallet 的目錄。
    $ mkdir wallet
  3. 建立公事包,以及混合使用文數字字元的安全密碼。
    此步驟會建立並開啟公事包。資料庫開啟之後,公事包會維持開啟,直到明確關閉公事包或關閉資料庫為止 (公事包自動關閉時)。
    SQL> alter system set encryption key identified by "wallet_password";
  4. 重新啟動資料庫後重新開啟已關閉的公事包。
    SQL> alter system set wallet open identified by "wallet_password";
  5. 加密表格空間。
    下列程式碼使用 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. 檢查表格空間是否已加密。
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    輸出看起來將與下列類似:

    TABLESPACE_NAME 	       ENC
    ------------------------------ ---
    SYSTEM			    YES
    SYSAUX			    YES
    UNDOTBS1                       YES
    TEMP			      NO
    USERS			     YES
  7. 確認檔案系統上關聯的資料庫資料檔 (.dbf) 已加密。
    SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files;

    輸出看起來將與下列類似:

    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