11 他の Oracle機能で透過的データ暗号化を使用
Oracle Data Encryptionは、Oracle Data GuardやOracle Real Application ClustersなどのOracle機能とともに使用できます。
- 透過的データ暗号化とエクスポートおよびインポート操作との連携
Oracle Data Pumpによって、暗号化列を含む表をエクスポートおよびインポートしたり、ダンプ・セット全体を暗号化することができます。 - Oracle Data Guardでの透過的データ暗号化の使用について
ソフトウェアおよびハードウェアの両方のキーストアに関して、Oracle Data Guardは透過的データ暗号化(TDE)をサポートしています。 - 透過的データ暗号化とOracle Real Application Clustersとの連携
Oracle Real Application Clusters (Oracle RAC)ノードでは、ソフトウェア・キーストアとハードウェア・セキュリティ・モジュールの両方を共有できます。 - 透過的データ暗号化とSecureFilesとの連携
LOBが格納されるSecureFilesには、圧縮、重複除外および暗号化の3つの機能があります。 - 透過的データ暗号化とOracle Call Interfaceとの連携
透過的データ暗号化は、Oracle Call Interface (OCI)の動作に影響しません。 - 透過的データ暗号化とエディションとの連携
透過的データ暗号化は、Oracle Databaseのエディション機能に影響しません。 - マルチデータベース環境で機能するように透過的データ暗号化を構成
同じサーバー上の各Oracle Database (同じOracleバイナリを共有しているが異なるデータ・ファイルを使用しているデータベースなど)は、それぞれ独自のTDEキーストアにアクセスする必要があります。
親トピック: 透過的データ暗号化の使用
透過的データ暗号化とエクスポートおよびインポート操作との連携
Oracle Data Pumpによって、暗号化列を含む表をエクスポートおよびインポートしたり、ダンプ・セット全体を暗号化することができます。
- 暗号化データされたデータのエクスポートおよびインポートについて
暗号化列を持つ表のエクスポートとインポートには、Oracle Data Pumpを使用できます。 - 暗号化された列のある表のエクスポートおよびインポート
ENCRYPTION=ENCRYPTED_COLUMNS_ONLY
設定を使用して、暗号化された列のある表をエクスポートおよびインポートできます。 - Oracle Data Pumpを使用してダンプ・セット全体を暗号化
Oracle Data Pumpによって、透過的データ暗号化列のみではなく、ダンプ・セット全体を暗号化できます。 - 暗号化されたデータ・ディクショナリ・データでのOracle Data Pumpの使用
Oracle Data Pumpは、暗号化されたパスワードおよびその他の暗号化されたデータの保護を提供します。
親トピック: 他の Oracle機能における透過的データ暗号化の使用
暗号化データされたデータのエクスポートおよびインポートについて
暗号化列を持つ表のエクスポートとインポートには、Oracle Data Pumpを使用できます。
ソフトウェアおよびハードウェアの両方のキーストアに関して、暗号化された列を含む表をエクスポートする必要がある際に次の点が重要です。
-
転送中も機密データが解読されないように保つ必要があります。
-
権限のあるユーザーは、宛先にインポートされたデータを復号化できる必要があります。
Oracle Data Pumpを使用して暗号化列を含む表をエクスポートおよびインポートする場合、ENCRYPTION
パラメータを使用してダンプ・ファイル・セットのデータを暗号化できるようにします。ENCRYPTION
パラメータには、次の値を指定できます。
-
ENCRYPTED_COLUMNS_ONLY
: 暗号化列が暗号化された形式でダンプ・ファイル・セットに書き込まれます。 -
DATA_ONLY
: すべてのデータが暗号化された形式でダンプ・ファイル・セットに書き込まれます。 -
METADATA_ONLY
: すべてのメタデータがダンプ・ファイル・セットに暗号化された形式で書き込まれます。 -
ALL
: すべてのデータとメタデータが暗号化された形式でダンプ・ファイル・セットに書き込まれます。 -
NONE
: ダンプ・ファイル・セットに対して暗号化は使用されません。
Oracle Data Pumpを使用してダンプ・セット全体を暗号化
Oracle Data Pumpによって、透過的データ暗号化列のみではなく、ダンプ・セット全体を暗号化できます。
インポートでは、パスワードまたはキーストアTDEマスター暗号化キーのいずれかを使用してデータを復号化できます。パスワードを指定しなかった場合、データの復号化にはキーストアのTDEマスター暗号化キーが使用されます。ターゲット・データベースにおいて、キーストアが存在して開いている必要があります。この開いているキーストアは、ターゲット・データベースで列暗号化データを再暗号化する際にも必要です。
ENCRYPTION_MODE=TRANSPARENT
設定を使用すると、キーストアに格納されているTDEマスター暗号化キーを使用してダンプ・ファイル・セットを透過的に暗号化できます。この場合、パスワードは不要です。キーストアは、ターゲット・データベースに存在して開かれている必要があり、インポート操作中に列暗号化メタデータを正常に復号化するためにソース・データベースのTDEマスター暗号化キーを含んでいる必要があります。
この開いているキーストアは、ターゲット・データベースで列暗号化メタデータを再暗号化する際にも必要です。キーストアがすでにターゲット・データベースに存在している場合には、ソース・データベースのキーストアから現在のTDEマスター暗号化キーをエクスポートし、ターゲット・データベースのキーストアにインポートできます。
-
ENCRYPTION_MODE
パラメータを使用して、暗号化モードを指定します。ENCRYPTION_MODE=DUAL
によって、キーストアに格納されているTDEマスター暗号化キーと指定したパスワードを使用してダンプ・セットが暗号化されます。
たとえば、二重暗号化モードを使用して、暗号化されたデータをエクスポートする場合、次のようにします。
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr_enc.dmp ENCRYPTION=all ENCRYPTION_PASSWORD=encryption_password ENCRYPTION_PWD_PROMPT=yes ENCRYPTION_ALGORITHM=AES256 ENCRYPTION_MODE=dual Password: password_for_hr Encryption Password: password_for_encryption
暗号化されたデータ・ディクショナリ・データでのOracle Data Pumpの使用
Oracle Data Pumpの操作では、暗号化されたパスワードおよびその他の暗号化されたデータが保護されます。
ソース・データベースでの固定ユーザー・データベース・パスワードの暗号化を有効にすると、Oracle Data Pumpエクスポート操作のダンプにより、データベース・リンクのパスワードの既知の無効なパスワードが格納されます。このパスワードは、エクスポート操作によってデータベースから抽出された暗号化パスワードのかわりに適用されています。「ORA-39395: 警告: インポート後、オブジェクト<データベース・リンク名>にパスワードの再設定が必要です
」という警告メッセージが結果として表示されます。Oracle Database 18c以上のデータベースにデータをインポートした場合、無効なパスワードを持つデータベース・リンク・オブジェクトがターゲット・データベースに作成されたときにこの同じ警告が表示されます。これが発生すると、次のようにデータベース・リンクのパスワードをリセットする必要があります。
ALTER DATABASE LINK database_link_name CONNECT TO schema_name IDENTIFIED BY password;
データベース・リンクについての情報を検索するために、V$DBLINK
動的ビューを問い合せることができます。
固定ユーザー・データベース・パスワードの暗号化がソース・データベースで無効になっている場合、Data Pumpに対する変更はありません。不明瞭化されたデータベース・リンクのパスワードは、以前のリリースと同様にエクスポートおよびインポートされます。
この場合、Oracleでは、次のことをお薦めします。
-
不明瞭化されたデータベース・リンクのパスワードをさらに保護できるように、
expdp
コマンドでENCRYPTION_PASSWORD
パラメータを設定します。 -
画面にエコーされるのではなく、プロンプトから対話式にパスワードを入力できるように、
ENCRYPTION_PWD_PROMPT
パラメータをYES
に設定します。
ENCRYPTION_PASSWORD
とENCRYPTION_PWD_PROMPT
の両方のパラメータがインポート操作で使用できます。ENCRYPTION_PWD_PROMPT
は、expdp
およびimpdp
のコマンドライン・クライアントでのみ使用できるのに対して、ENCRYPTION_PASSWORD
は、コマンドライン・クライアントとDBMS_DATAPUMP
PL/SQLパッケージの両方で使用できます。
インポート操作時に、キーストアが開いているか閉じているかにより、暗号化パスワードが指定されている必要があるかどうかの動作が影響を受けます。キーストアがエクスポート操作中に開いていて、暗号化パスワードを指定した場合は、インポート操作中にパスワードを指定する必要はありません。キーストアがエクスポート操作中に閉じられている場合は、インポート操作中にパスワードを指定する必要があります。
Oracle Data Guardでの透過的データ暗号化の使用について
ソフトウェアおよびハードウェアの両方のキーストアに関して、Oracle Data Guardは透過的データ暗号化(TDE)をサポートしています。
プライマリ・データベースでTDEを使用する場合、Data Guard構成の各スタンバイ・データベースには、プライマリ・データベースからの暗号化キーストアのコピーが必要です。プライマリ・データベースでTDEマスター暗号化キーを再設定した場合は、そのTDEマスター暗号化キーが格納されているプライマリ・データベースから各スタンバイ・データベースにキーストアをコピーする必要があります。
次の点に注意してください。
-
ウォレットベースのTDEによるキー更新操作では、新しいTDEマスター暗号化キーがまだ使用可能でないため、スタンバイ・データベースでの管理リカバリ・プロセス(MRP)が失敗します。この問題を回避するには、プライマリ・データベースで
ADMINISTER KEY MANAGEMENT CREATE KEY
文を使用して、新しいTDEマスター暗号化キーをウォレットに挿入します。ウォレットをスタンバイ・データベースにコピーしてから、プライマリでADMINISTER KEY MANAGEMENT USE KEY
文を実行します。 -
データをスタンバイ・データベースに転送する場合、ログ・ファイル内の暗号化データは暗号化されたままです。暗号化データは転送中も暗号化されたままです。
関連項目
親トピック: 他の Oracle機能における透過的データ暗号化の使用
透過的データ暗号化とOracle Real Application Clustersとの連携
Oracle Real Application Clusters (Oracle RAC)ノードでは、ソフトウェア・キーストアとハードウェア・セキュリティ・モジュールの両方を共有できます。
- Oracle Real Application Clustersでの透過的データ暗号化の使用について
Oracle Databaseでは、Oracle Real Application Clusters (Oracle RAC)ノードがソフトウェア・キーストアを共有できます。 - 非共有ファイル・システムを使用したOracle RACへのソフトウェア・キーストアの格納
ソフトウェア・キーストアを格納するために共有ファイル・システムを使用しない場合は、キーストアを関連するノードにコピーする必要があります。
親トピック: 他の Oracle機能における透過的データ暗号化の使用
Oracle Real Application Clustersでの透過的データ暗号化の使用について
Oracle Databaseでは、Oracle Real Application Clusters (Oracle RAC)ノードがソフトウェア・キーストアを共有できます。
Oracle Key VaultまたはPKCS11互換のハードウェア・セキュリティ・モジュールを使用するTDE構成では、データベースの各インスタンスから外部キー・マネージャへのネットワーク接続が使用されます。Oracle Key Vaultでは、Oracle RAC対応データベースのインスタンスごとに1つのエンドポイントを作成し、Oracle RAC対応データベースごとに1つの仮想ウォレットを作成する必要があります。次に、その仮想ウォレットを、そのデータベースに属するすべてのエンドポイントのデフォルト・ウォレットにします。Oracle RAC対応のData Guard構成では、すべてのインスタンス(プライマリおよびすべてのスタンバイ・データベース)で1つの仮想ウォレットが共有されます。この構成では、関連するすべてのインスタンスが自動的に同期されるため、キー設定操作とキー更新操作は完全に透過的に行われます。これにより、クラスタ内のその他の各ノードにソフトウェア・キーストアを手動でコピーする必要がなくなります。オラクル社は、共有ファイル・システム上にソフトウェア・キーストアを作成することをお薦めします。
オラクル社は、共有ファイル・システム上にソフトウェア・キーストアを作成することをお薦めします。これによってすべてのインスタンスが、同じ共有ソフトウェア・キーストアにアクセスできます。対象の環境でOracle Automatic Storage Management Cluster File System (Oracle ACFS)を使用している場合は、これが共有ウォレットの推奨される場所です。ACFSを使用できない場合は、ASMでウォレットを直接共有する(+DATA/$ORACLE_UNQNAME/WALLETS
など)ことが代替の方法です。
キーストア操作(キーストアの開閉、TDEマスター暗号化キーのキー更新など)は、任意の1つのOracle RACインスタンスで実行可能です。内部的には、Oracleデータベースにより、各Oracle RACノードでキーストアのコンテキストが同期されます。こうすることで、キーストア操作の結果が、クラスタ内の他のすべてのOracle RACインスタンスに表示されます。同様に、TDEマスター暗号化キーのキー更新操作が実行されると、新しいキーが各Oracle RACインスタンスで使用可能になります。TDEマスター暗号化キーのエクスポート、キーストアのパスワードのローテーション、キーストアのマージ、キーストアのバックアップを含む他のキーストア操作なども、1つのインスタンスのみから実行できます。
共有ファイル・システムを使用する場合は、次のようにすべてのOracle RACインスタンスのWALLET_ROOT
静的システム・パラメータが同じ共有ソフトウェア・キーストアの場所を指していることを確認します。
ALTER SYSTEM SET WALLET_ROOT = '+DATA/$ORACLE_UNQNAME/WALLETS' SCOPE = SPFILE SID ='*'; ALTER SYSTEM SET TDE_CONFIGURATION = "KEYSTORE_CONFIGURATION=FILE" SCOPE = BOTH SID = '*';
注意:
ENCRYPTION_WALLET_LOCATION
パラメータが設定されている場合、このパラメータは非推奨となったことに注意してください。かわりに、WALLET_ROOT
静的初期化パラメータおよびTDE_CONFIGURATION
動的初期化パラメータを使用することをお薦めします。
透過的データ暗号化とSecureFilesとの連携
LOBが格納されるSecureFilesには、圧縮、重複除外および暗号化の3つの機能があります。
- 透過的データ暗号化およびSecureFilesについて
SecureFilesの暗号化では、LOBの暗号化機能を提供するためにTDEを使用します。 - 例: 特定の暗号化アルゴリズムを使用したSecureFiles LOBの作成
CREATE TABLE
文によって、暗号化を指定してSecureFiles LOBを作成できます。 - 例: 列パスワードを指定したSecureFiles LOBの作成
CREATE TABLE
文によって、列パスワードを指定してSecureFiles LOBを作成できます。
親トピック: 他の Oracle機能における透過的データ暗号化の使用
透過的データ暗号化およびSecureFilesについて
SecureFilesの暗号化では、LOBの暗号化機能を提供するためにTDEを使用します。
表を作成または変更する際に、SecureFiles記憶域を使用する必要があるSecureFiles暗号化やLOB列を指定できます。現在の透過的データ暗号化(TDE)構文を使用するか、またはLOB列に関するLOBパラメータの一部としてENCRYPT
句を使用することによって、LOB列の暗号化を有効化できます。現在の構文またはLOBパラメータにおけるDECRYPT
オプションによって、暗号化を無効化できます。
親トピック: 透過的データ暗号化とSecureFilesとの連携
例: 特定の暗号化アルゴリズムを使用したSecureFiles LOBの作成
CREATE TABLE
文によって、暗号化を指定してSecureFiles LOBを作成できます。
例11-1では、CREATE TABLE
文でSecureFiles LOBを作成する方法を示しています。
例11-1 特定の暗号化アルゴリズムを使用したSecureFiles LOBの作成
CREATE TABLE table1 ( a BLOB ENCRYPT USING 'AES256') LOB(a) STORE AS SECUREFILE ( CACHE );
親トピック: 透過的データ暗号化とSecureFilesとの連携
例: 列パスワードを指定したSecureFiles LOBの作成
CREATE TABLE
文によって、列パスワードを指定してSecureFiles LOBを作成できます。
例11-2では、暗号化された列に対してパスワード保護を使用するSecureFiles LOBの作成例を示しています。
LOB列のすべてのLOBが、同じ暗号化の指定で暗号化されます。
例11-2 列パスワードを指定したSecureFiles LOBの作成
CREATE TABLE table1 (a VARCHAR2(20), b BLOB)
LOB(b) STORE AS SECUREFILE (
CACHE
ENCRYPT USING 'AES192' IDENTIFIED BY password
);
親トピック: 透過的データ暗号化とSecureFilesとの連携
透過的データ暗号化とOracle Call Interfaceとの連携
透過的データ暗号化は、Oracle Call Interface (OCI)の動作に影響しません。
多くの実用的な目的のために、TDEは行の受渡し機能を除き、OCIに対して透過的です。行を使用可能にするキーは受信ポイントでは使用できないため、OCIの行の受渡し機能をTDEで使用できません。
親トピック: 他の Oracle機能における透過的データ暗号化の使用
透過的データ暗号化とエディションとの連携
透過的データ暗号化は、Oracle Databaseのエディション機能に影響しません。
多くの実用的な目的のために、TDEはエディションに対して透過的です。表は常に非エディション化オブジェクトです。TDEの列暗号化によって、表の列が暗号化されます。エディションは、TDEの表領域の暗号化によって影響されません。
親トピック: 他の Oracle機能における透過的データ暗号化の使用
マルチデータベース環境で機能するように透過的データ暗号化を構成
同じサーバー上の各Oracle Database (同じOracleバイナリを共有しているが異なるデータ・ファイルを使用しているデータベースなど)は、それぞれ独自のTDEキーストアにアクセスする必要があります。
キーストアは、データベース間で共有されるようには設計されていません。設計によって、データベースごとに1つのキーストアが必要となっています。複数のデータベースには同じキーストアを使用できません。
-
複数データベース環境に対してキーストアの使用を構成するには、次のオプションのいずれかを使用します。
-
オプション1: CDB (またはスタンドアロン・データベース)ごとに、
WALLET_ROOT
静的初期化パラメータおよびTDE_CONFIGURATION
動的初期化パラメータ(KEYSTORE_CONFIGURATION
属性をFILE
に設定)を個別に設定することで、キーストアの場所を指定します。WALLET_ROOT
パラメータを有効にするには、KEYSTORE_CONFIGURATION
属性にFILE
を設定する必要があります。例:
WALLET_ROOT = $ORACLE_BASE/admin/db_unique_name TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE"
-
オプション2:
WALLET_ROOT
およびTDE_CONFIGURATION
が設定されておらず、データベースが同じOracleホームを共有している場合は、sqlnet.ora
にWALLET_LOCATION
およびENCRYPTION_WALLET_LOCATION
パラメータが設定されていないことを確認します。デフォルトでは、sqlnet.ora
は$ORACLE_BASE/network/admin
ディレクトリ($ORACLE_BASE
が設定されている場合)または$ORACLE_HOME/network/admin
ディレクトリにあります。これにより、
$ORACLE_BASE/admin/db_unique_name/wallet
($ORACLE_BASE
が設定されている場合)または$ORACLE_HOME/admin/db_unique_name/wallet
ディレクトリにあるキーストアをOracle Databaseが使用できます。 -
オプション3: オプション1および2が実行可能でない場合、個別の
sqlnet.ora
ファイルを各データベースにつき1つ使用します。TNS_ADMIN
環境変数が、正しいデータベース構成を指すように正確に設定されていることを確認します。ただし、リリース19c以降では、WALLET_ROOT
およびTDE_CONFIGURATION
初期化パラメータが優先され、sqlnet.ora
のENCRYPTION_WALLET_LOCATION
パラメータは非推奨になったことに注意してください。
-
注意:
他のデータベースからキーストアを使用することによって、データの一部または全部が失われる可能性があります。