ソース・データベースのデータの暗号化

透過的データ暗号化(TDE)は、Oracle Databaseに保存されているデータを透過的に暗号化します。アプリケーションがSQLを使用してデータにアクセスする方法に影響を与えることなく、オペレーティング・システムからファイルに格納されているデータベース・データへの不正なアクセスを防止します。 TDEOracle Databaseと完全に統合されており、データベース・バックアップ全体(RMAN )、データ・ポンプ・エクスポート、アプリケーション表領域全体または特定の機密列を暗号化できます。暗号化されたデータは、表領域の記憶域ファイル、一時表領域、UNDO表領域、またはREDOログなどの他のファイルにあるかどうかにかかわらず、データベース内で暗号化されたままです。

ソース・データベースで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