Oracle Data Encryptionは、Oracle Data GuardやOracle Real Application ClustersなどのOracle機能とともに使用できます。
内容は次のとおりです。
Oracle Data Pumpを使用して、暗号化された列を含む表をエクスポートおよびインポートしたり、ダンプ・セット全体を暗号化できます。
内容は次のとおりです。
暗号化列を持つ表のエクスポートとインポートには、Oracle Data Pumpを使用できます。
ソフトウェアおよびハードウェアの両方のキーストアに関して、暗号化された列を含む表をエクスポートする必要がある際に次の点が重要です。
転送中も機密データが解読されないように保つ必要があります。
権限のあるユーザーは、宛先にインポートされたデータを復号化できる必要があります。
Oracle Data Pumpを使用して暗号化列を含む表をエクスポートおよびインポートする場合、ENCRYPTION
パラメータを使用してダンプ・ファイル・セットのデータを暗号化できるようにします。ENCRYPTION
パラメータには、次の値を指定できます。
ENCRYPTED_COLUMNS_ONLY
: 暗号化列が暗号化された形式でダンプ・ファイル・セットに書き込まれます。
DATA_ONLY
: すべてのデータが暗号化された形式でダンプ・ファイル・セットに書き込まれます。
METADATA_ONLY
: すべてのメタデータがダンプ・ファイル・セットに暗号化された形式で書き込まれます。
ALL
: すべてのデータとメタデータが暗号化された形式でダンプ・ファイル・セットに書き込まれます。
NONE
: ダンプ・ファイル・セットに対して暗号化は使用されません。
ENCRYPTION=ENCRYPTED_COLUMNS_ONLY
設定を使用して、暗号化された列のある表をエクスポートおよびインポートできます。
暗号化列を含む表のエクスポートを試行する前に、キーストアが開いていることを確認します。
マルチテナント環境では、プラガブル・データベース(PDB)内のデータをエクスポートする場合、ウォレットがPDB内でオープン状態であることを確認します。rootにエクスポートする場合、ウォレットがroot内でオープン状態であることを確認します。
キーストアが開いているかどうかを確認するには、V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せます。キーストアを開く必要がある場合は、次のSQL文を実行します。
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY software_keystore_password [CONTAINER = ALL | CURRENT];
software_keystore_password
設定は、キーストアのパスワードです。キーストアが開いている必要があるのは、暗号化列の復号化にはTDE表キーを使用する必要があり、そのためにはTDEマスター暗号化鍵へのアクセスが必要なためです。列は、エクスポートされる前にパスワードを使用して再暗号化されます。
エクスポート・ダンプ・ファイル・セットの列データを暗号化する際に使用するパスワードを、ENCRYPTION_PASSWORD
パラメータを使用して指定し、EXPDP
コマンドを実行します。
次に、employee_data
表をエクスポートする例を示します。ENCRYPTION_PWD_PROMPT = YES
設定によって、対話式でパスワードを求めるプロンプトの表示が可能となり、これは推奨されるセキュリティ上の措置となっています。
expdp hr TABLES=employee_data DIRECTORY=dpump_dir
DUMPFILE=dpcd2be1.dmp ENCRYPTION=ENCRYPTED_COLUMNS_ONLY
ENCRYPTION_PWD_PROMPT = YES
Password: password_for_hr
エクスポートされたデータをターゲット・データベースにインポートするには、ENCRYPTION_PASSWORD
パラメータによって設定されエクスポート操作に使用したものと同じパスワードを確実に指定してください。
このパスワードは、データの復号化に使用されます。データは、ターゲット・データベースに生成された新しいTDE表キーを使用して再暗号化されます。ターゲット・データベースがTDEマスター暗号化鍵にアクセスするためには、キーストアが開いている必要があります。次に、employee_data
表をインポートする例を示します。
impdp hr TABLES=employee_data DIRECTORY=dpump_dir
DUMPFILE=dpcd2be1.dmp
ENCRYPTION_PWD_PROMPT = YES
Password: password_for_hr
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_ALGORITHM=AES256 ENCRYPTION_MODE=dual Password: password_for_hr
関連項目:
Oracle Data Pumpおよびこれに関連する暗号化パラメータの使用に関する詳細は、『Oracle Databaseユーティリティ』を参照してください。
ソフトウェアおよびハードウェアの両方のキーストアに関して、Oracle Data Guardは透過的データ暗号化(TDE)をサポートしています。
プライマリ・データベースでTDEを使用する場合、Data Guard構成の各スタンバイ・データベースには、プライマリ・データベースからの暗号化キーストアのコピーが必要です。プライマリ・データベースでTDEを使用する場合、Data Guard構成の各スタンバイ・データベースには、これにマージされたプライマリ・データベースからのキーストアがある暗号化キーストアが必要です。プライマリ・データベースでTDEマスター暗号化鍵を再設定した場合は、そのTDEマスター暗号化鍵が格納されているプライマリ・データベースのキーストアを各スタンバイ・データベースにマージする必要があります。
次の点に注意してください。
データをスタンバイ・データベースに転送する場合、ログ・ファイル内の暗号化データは暗号化されたままです。暗号化データは転送中も暗号化されたままです。
TDEは、SQL*Loaderのダイレクト・パス・ロードと連携します。暗号化列にロードされるデータは、ダイレクト・パス・ロードの過程で透過的に暗号化されます。
マテリアライズド・ビューは、TDE表領域暗号化と連携します。暗号化表領域にはマテリアライズド・ビューとマテリアライズド・ビュー・ログの両方を作成できます。マテリアライズド・ビューは、TDE列暗号化とも連携します。
関連項目:
TDEとロジカル・スタンバイ・データベースの併用の詳細は、Oracle Data Guard概要および管理を参照してください。
マテリアライズド・ビューの詳細は、Oracle Databaseアドバンスト・レプリケーションを参照してください
Oracle Key Vault環境でTDEとOracle Data Guardを使用する方法は、『Oracle Key Vault管理者ガイド』
Oracle Real Application Clusters (Oracle RAC)のノードでは、ソフトウェア・キーストアを共有できます。ハードウェアのセキュリティ・モジュール・キーストアは、ネットワーク接続を使用して共有する必要があります。ソフトウェア・キーストアは、Oracle RACの共有されていないファイル・システムに格納できます。
内容は次のとおりです。
関連項目:
Oracle Key Vault環境でTDEとOracle RACを使用する方法は、『Oracle Key Vault管理者ガイド』
Oracle Databaseでは、Oracle Real Application Clustersノードがソフトウェア・キーストアを共有できます。ハードウェアのセキュリティ・モジュールは、各データベース・インスタンスに対してネットワーク接続を使用します。
これによって、すべてのノードにソフトウェア・キーストアを手動でコピーし同期化する必要がなくなります。オラクル社は、共有ファイル・システム上にソフトウェア・キーストアを作成することをお薦めします。これによってすべてのインスタンスが、同じ共有ソフトウェア・キーストアにアクセスできます。自動ストレージ管理(ASM)を使用するようにOracle RACを構成する場合、キーストアをASMディスク・グループに格納します。
ハードウェアのセキュリティ・モジュールの場合には、各データベース・インスタンスに対してネットワーク接続を使用します。したがって、すべてのデータベース・インスタンスがこのハードウェアのセキュリティ・モジュールにアクセス可能です。
すべてのインスタンスで実行または同期される必要があるキーストア操作(キーストアの開閉またはキー更新)は、任意の1つのOracle RACインスタンスで実行可能です。この同期操作は、クラスタ内のその他のOracle RACインスタンスに適用されます。つまり、ユーザーが1つのインスタンスに対して開閉したキーストアは、すべてのOracle RACインスタンスに対して開閉されます。同様に、1つのデータベース・インスタンスで実行したTDEマスター暗号化鍵のキー更新操作は、すべてのデータベース・インスタンスに適用されます。TDEマスター暗号化鍵のエクスポート、キーストアのパスワードのローテーション、キーストアのマージ、キーストアのバックアップを含む他のキーストア操作なども、1つのインスタンスのみから実行できます。
共有ファイル・システムを使用する場合は、すべてのOracle RACインスタンスのsqlnet.ora
ファイルにおけるENCRYPTION_WALLET_LOCATION
またはWALLET_LOCATION
パラメータ設定が、必ず同じ共有ソフトウェア・キーストアの場所を指すようにします。また、適切なディレクトリ権限を割り当てることによって、共有ソフトウェア・キーストアのセキュリティを確保する必要もあります。
ソフトウェア・キーストアを格納するために共有ファイル・システムを使用しない場合は、キーストアを関連するノードにコピーする必要があります。
ADMINISTER KEY MANAGEMENT
またはSYSKM
権限が付与されたユーザーとして、データベース・インスタンスにログインします。
マルチテナント環境で、rootまたは適切なPDBにログインします。例:
sqlplus sec_admin@hrpdb as syskm
Enter password: password
Connected.
最初のOracle Real Application Clusters (Oracle RAC)ノードのTDEマスター暗号化鍵を再設定します。
詳細は、キーストアのTDEマスター暗号化鍵の設定および再設定を参照してください。
新しいTDEマスター暗号化鍵が格納されたキーストア・ファイルを、最初のノードから他のすべてのノードにコピーします。
キーストア・ファイルの場所を確認するには、V$ENCRYPTION_WALLET
ビューのWRL_PARAMETER
列を問い合せます。すべてのデータベース・インスタンスのWRL_PARAMETER
設定を確認するには、GV$ENCRYPTION_WALLET
ビューを問い合せます。
任意の1つのノードのキーストアを閉じてから再度開きます。(マルチテナント・コンテナ・データベース(CDB)を使用している場合は、rootでこれらの文を実行します。)
ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY software_keystore_password; ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY software_keystore_password [CONTAINER = ALL | CURRENT];
注意:
ある1つのOracle RACインスタンスで実行されるキーストアを開く、閉じるなどのキーストア操作は、他のすべてのOracle RACインスタンスに適用されます。これは、共有ファイル・システムを使用していない場合にも当てはまります。
すべてのOracle RACノードで新しいTDEマスター暗号化鍵が使用されるようになりました。
LOBを保存するには、SecureFilesを使用します。また、SecureFilesの記憶域には、圧縮、重複除外および暗号化の3つの機能があります。
内容は次のとおりです。
関連項目:
SecureFiles暗号化の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。
SecureFilesの暗号化では、LOBの暗号化機能を提供するためにTDEを使用します。
表を作成または変更する際に、SecureFiles記憶域を使用する必要があるSecureFiles暗号化やLOB列を指定できます。現在の透過的データ暗号化(TDE)構文を使用するか、またはLOB列に関するLOBパラメータの一部としてENCRYPT
句を使用することによって、LOB列の暗号化を有効化できます。現在の構文またはLOBパラメータにおけるDECRYPT
オプションによって、暗号化を無効化できます。
CREATE TABLE
文によって、暗号化を指定してSecureFiles LOBを作成できます。
例6-1では、CREATE TABLE
文でSecureFiles LOBを作成する方法を示しています。
例6-1 特定の暗号化アルゴリズムを使用したSecureFiles LOBの作成
CREATE TABLE table1 ( a BLOB ENCRYPT USING 'AES256') LOB(a) STORE AS SECUREFILE ( CACHE );
CREATE TABLE
文によって、列パスワードを指定してSecureFiles LOBを作成できます。
例6-2では、暗号化された列に対してパスワード保護を使用するSecureFiles LOBの作成例を示しています。
LOB列のすべてのLOBが、同じ暗号化の指定で暗号化されます。
例6-2 列パスワードを指定したSecureFiles LOBの作成
CREATE TABLE table1 (a VARCHAR2(20), b BLOB)
LOB(b) STORE AS SECUREFILE (
CACHE
ENCRYPT USING 'AES192' IDENTIFIED BY password
);
マルチテナント環境では、実行できるTDE操作はrootにいるかPDBにいるかによって変わります。
内容は次のとおりです。
マルチテナント環境で、列および表領域の両方に透過的データ暗号化を使用できます。
次の点に注意してください。
作成するキーストアは、特定のPDB内ではなくホストのマルチテナント環境に存在します。複数のPDBはこのホスト上で動作中に、単一のキーストアにアクセス可能です。暗号化を使用する各PDBには、このキーストアに格納されている透過的データ暗号化のTDEマスター暗号化鍵があります。
各PDBには個別のTDEマスター暗号化鍵があります。PDB固有のキー管理のADMINISTER KEY MANAGEMENT
文を使用して、PDB内でのみ各PDB用のTDEマスター暗号化鍵を管理する必要があります。rootまたはPDBから、CDBにおけるPDBのTDEマスター暗号化鍵についての情報を確認するために適切なビューを問合せできます。たとえば、V$ENCYRYPTION_KEYS
ビューのPDBID
列は、TDEマスター暗号化鍵が属するPDBを示しています。
各PDBのキーストア内で、透過的データ暗号化のTDEマスター暗号化鍵を個別に管理できます。各PDB向けのTDEマスター暗号化鍵を、個別にローテーションできます。詳細は、「TDEマスター暗号化鍵のエクスポートおよびインポート」を参照してください。
rootからキーストア操作の大部分を実行します。キーストア・パスワードのローテーションやキーストアのマージなどのキーストア操作は、rootで実行する必要があります。鍵を開く、閉じる、リセットする、作成するなど、PDB内で実行できるキー管理の操作がいくつかあります。rootからすべてのPDBに操作を実行することもできます。適用可能な場合には、ADMINISTER KEY MANAGEMENT
文にCONTAINER
句があります。CONTAINER=ALL
と設定すると、すべてのPDBにアクションが実行されます。
詳細は、次の各項を参照してください。
透過的データ暗号化を使用するPDBを、新しいホスト・コンピュータに移動する予定の場合、TDEマスター暗号化鍵も移動する必要があります。TDEマスター暗号化鍵をあるホスト・コンピュータから別のコンピュータに移動するには、「TDEマスター暗号化鍵のエクスポートおよびインポート」に記載されている手順を使用します。
特定のADMINISTER KEY MANAGEMENT
キーストア操作は、rootでのみ実行される必要があります。
操作は次のとおりです。
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE
文を使用したパスワードベースのソフトウェア・キーストアの作成
ADMINISTER KEY MANAGEMENT CREATE [LOCAL] AUTO_LOGIN KEYSTORE FROM KEYSTORE
文を使用した自動ログインのソフトウェア・キーストアの作成
ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD
文を使用したソフトウェア・キーストアのパスワードの変更
ADMINISTER KEY MANAGEMENT MERGE KEYSTORE
文を使用したソフトウェア・キーストアのマージ
ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE
キーストアを使用したソフトウェア・キーストアのバックアップ
ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY... MIGRATE USING
文を使用したソフトウェア・キーストアからハードウェア・キーストアへの移行
ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY... REVERSE MIGRATE
文を使用したハードウェア・セキュリティ・モジュールからソフトウェア・キーストアへの逆移行
ADMINISTER KEY MANAGEMENT ADD|UPDATE|DELETE SECRET
文を使用したシークレットの追加、更新および削除
問合せまたは識別子リストに基づいた、キーの選択的なエクスポートおよびインポート
鍵およびキーストア操作に関するCONTAINER=ALL設定の動作状況
この項に記載されている鍵およびキーストア操作に関して、CONTAINER=ALL
設定を指定できます。CONTAINER=ALL
設定を指定することによって、CDB内のすべてのPDBで同じ操作が実行されます。rootでのみCONTAINER=ALL
設定を使用できることに留意してください。CONTAINER
句はオプションです。CONTAINER
句を省略すると、デフォルトはCONTAINER = CURRENT
になります。
許可されているCONTAINER=ALL
操作は次のとおりです。
キーストアを開く。CONTAINER=ALL
設定を使用してキーストアを開くと、関連するすべてのPDBのキーストアが開きます。
キーストアを閉じる。CONTAINER=ALL
設定を使用してキーストアを閉じると、関連するすべてのPDBのキーストアが閉じます。
TDEマスター暗号化鍵を作成する。CONTAINER=ALL
設定を使用してTDEマスター暗号化鍵を作成すると、開いているすべてのPDBに鍵が作成されます。最近作成された鍵を確認するには、V$ENCRYPTION_KEYS
ビューのCREATION_TIME
列を問い合せます。CONTAINER=ALL
操作でタグの指定もできますが、この操作によってすべてのPDBの鍵が同じタグで作成されることに注意してください。各TDEマスター暗号化鍵に個別のタグを作成する必要があり、これは、エラー発生時に鍵作成操作が成功したPDBがこのタグによって識別可能であるためです。ADMINISTER KEY MANAGEMENT SET TAG
文を使用して、後でタグを変更できます。
キー更新操作を実行する。CONTAINER=ALL
設定でキー更新操作を実行することによって、開いているすべてのPDBで鍵が作成され、有効化されます。最近作成された鍵を確認するには、V$ENCRYPTION_KEYS
ビューのCREATION_TIME
列を問い合せます。最近アクティブ化された鍵を確認するには、V$ENCRYPTION_KEYS
ビューのACTIVATION_TIME
列を問い合せます。CONTAINER=ALL
操作でタグの指定もできますが、この操作によってすべてのPDBの鍵が同じタグで作成されることに注意してください。このタグは、エラー時に鍵作成操作が成功したPDBの識別にも役立ちます。ADMINISTER KEY MANAGEMENT SET TAG
文を使用して、後でタグを変更できます。
rootまたはPDBのいずれかで、次の一部のキーストア操作を実行できます。
操作は次のとおりです。
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
文を使用して、キーストアを開く
ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE
文を使用して、キーストアを閉じる
rootまたはPDBのいずれかで、次のキー管理操作を実行できます。
ADMINISTER KEY MANAGEMENT SET TAG
文を使用した、TDEマスター暗号化鍵のタグの作成
ADMINISTER KEY MANAGEMENT CREATE KEY
文を使用した、TDEマスター暗号化鍵の作成
ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY
文を使用した、TDEマスター暗号化鍵の再設定またはローテーション
ADMINISTER KEY MANAGEMENT USE KEY
文を使用した、TDEマスター暗号化鍵のアクティブ化
ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS
文を使用した、TDEマスター暗号化鍵のエクスポート
ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS
文を使用した、TDEマスター暗号化鍵のインポート
PDB向けにTDEマスター暗号化鍵をエクスポートまたはインポートするには、ADMINISTER KEY MANAGEMENT EXPORT
およびADMINISTER KEY MANAGEMENT IMPORT
文を使用します。
内容は次のとおりです。
CDB以外のデータベースのTDEマスター暗号化鍵をエクスポートおよびインポートする場合と同じ方法で、rootから任意のTDEマスター暗号化鍵をエクスポートおよびインポートできます。
PDB内からTDEマスター暗号化鍵をエクスポートおよびインポートすることで、PDBに属するすべてのTDEマスター暗号化鍵をエクスポートおよびインポートできます。PDBのTDEマスター暗号化鍵のエクスポートおよびインポートでは、PDBのアンプラグとプラグ操作がサポートされます。PDBのアンプラグとプラグでは、PDBに属するすべてのTDEマスター暗号化鍵、およびメタデータが対象になります。したがって、PDB内から鍵をエクスポートする場合、ADMINISTER KEY MANAGEMENT EXPORT
文のWITH IDENTIFIER
句は許可されません。WITH IDENTIFIER
句は、rootでのみ許可されます。
ルートに自動ログイン・キーストアがある場合、またはキーストアが閉じている場合は、FORCE KEYSTORE
句を含める必要があります。キーストアがパスワードに外部ストアを使用するように構成されている場合、IDENTIFIED BY EXTERNAL STORE
句を使用します。たとえば、このシナリオにおいてエクスポート操作を実行するには、次のようにします。
ADMINISTER KEY MANAGEMENT EXPORT KEYS WITH SECRET "my_secret" TO '/etc/TDE/export.exp' FORCE KEYSTORE IDENTIFIED BY EXTERNAL STORE;
このADMINISTER KEY MANAGEMENT EXPORT
操作では、鍵がエクスポートされるだけでなく、PDB環境(およびクローニング操作)に必要なメタデータも作成されます。
PDBの内部では、TDEマスター暗号化鍵のエクスポート操作によって、鍵がエクスポートされるPDBと同じGUIDを持つPDBにより作成またはアクティブ化された鍵がエクスポートされます。基本的に、エクスポートが実行されるPDBに属しているすべての鍵がエクスポートされます。
PDB内のエクスポート・ファイルからTDEマスター暗号化鍵がインポートされるのは、そのTDEマスター暗号化鍵が同じGUIDを持つ別のPDBからエクスポートされている場合のみです。CDBへのPDBのプラグインをサポートするため、インポートでは、WITH IDENTIFIER
句なしでエクスポートされたCDB以外のTDEマスター暗号化鍵を含むエクスポート・ファイルからもTDEマスター暗号化鍵がインポートされます。PDB名やデータベースIDなどのPDB固有の詳細は、CDBごとに変化する可能性があるため、PDB固有の情報は、更新されたPDB情報を反映するようにインポート時に変更されます。
注意:
PDB内では、PDB全体のキーのみエクスポートできます。問合せまたは識別子に基づいた選択的なエクスポート機能はrootに制限されています。
PDB向けのTDEマスター暗号化鍵をエクスポートまたはインポートするには、キーストアを開いてから、EXPORT ENCRYPTION KEYS WITH SECRET
またはIMPORT ENCRYPTION KEYS WITH SECRET
句を含むADMINISTER KEY MANAGEMENT
文を使用する必要があります。
ADMINISTER KEY MANAGEMENT
またはSYSKM
権限を付与されたユーザーとしてPDBにログインします。
例:
sqlplus sec_admin@hr_pdb as syskm
Enter password: password
Connected.
利用可能なPDBを検索するには、DBA_PDBS
データ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_name
コマンドを実行します。
キーストアが開いていることを確認します。
V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せると、キーストアが開いているかどうかを確認できます。
キーストアを開く必要があることがわかった場合は、「手順3: ソフトウェア・キーストアを開」を参照してください。
「例: PDBからTDEマスター暗号化鍵をエクスポート」の例に従って、エクスポートまたはインポート操作を実行します。
ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS
SQL文を使用し、PDBからTDEマスター暗号化鍵をエクスポートできます。
例6-3では、PDB hr_pdb1
からTDEマスター暗号化鍵をエクスポートする方法を示しています。
例6-3 PDBからTDEマスター暗号化鍵をエクスポート
sqlplus sec_admin@hr_pdb1 as syskm Enter password: password Connected. ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS WITH SECRET "my_secret" TO '/export.p12' IDENTIFIED BY password_cdb1;
ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS SQL文を使用して、PDBにTDEマスター暗号化鍵をインポートできます。
例6-4では、PDB hr_pdb2
へTDEマスター暗号化鍵をインポートする方法を示しています。
例6-4 PDBにTDEマスター暗号化鍵をインポート
sqlplus sec_admin@hr_pdb2 as syskm Enter password: password Connected. ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS WITH SECRET "my_secret" FROM '/tmp/export.p12' IDENTIFIED BY password_cdb2 WITH BACKUP;
暗号化されたデータのあるPDBを、CDBに追加またはCDBから削除できます。
1つのCDBからPDBをアンプラグして、別のCDBにプラグインできます。
アンプラグされたデータベースには、データ・ファイルおよび他の関連ファイルが含まれます。エクスポート・ファイルは、アンプラグされたPDBのファイルの一部を構成する別のファイルであり、アンプラグされたPDBとともに転送する必要があります。
アンプラグするPDBのTDEマスター暗号化鍵をエクスポートします。
PDB向けのTDEマスター暗号化鍵のエクスポートおよびインポートを参照してください。
『Oracle Database管理者ガイド』に説明されている方法で、PDBをアンプラグします。
注意:
TDSマスター暗号化鍵を最初にエクスポートしないで間違ってPDBをアンプラグしても、暗号化鍵は失われません。この情報はまだデータベース内にあります。PDBをCDBにプラグインしなおし、TDEマスター暗号化鍵をエクスポートしてから、PDBをアンプラグします。
暗号化データを含むPDBをCDBにプラグインするには、TDEマスター暗号化鍵をPDBにインポートしてから、そこで構成する必要があります。
『Oracle Database管理者ガイド』に説明されている方法で、アンプラグされたPDBをCDBにプラグインすることによって、PDBを作成します。
プラグ操作後のPDBのオープン操作中に、Oracle DatabaseによってPDBに暗号化データが含まれるかどうかが判別されます。その場合、PDBはRESTRICTED
モードでオープンされます。
PDBのオープン・モードの詳細は、『Oracle Database管理者ガイド』を参照してください。
TDEマスター暗号化鍵をPDBにインポートします。
「PDB向けのTDEマスター暗号化鍵のエクスポートおよびインポート」を参照してください。
『Oracle Database管理者ガイド』の説明に従って、PDBをクローズしてからPDBを再オープンします。
キーストアを開きます。
次の項を参照してください。
PDBにTDEマスター暗号化鍵を設定します。
次の項を参照してください。
マルチテナント環境でキーストアの開閉操作がどのように機能するかを知っておく必要があります。
マルチテナント環境における各PDBに関して、透過的データ暗号化の操作が続行できるように、PDBにおいてパスワードベースのソフトウェア・キーストアまたはハードウェア・キーストアを明示的に開く必要があります。(自動ログイン・ソフトウェア・キーストアおよびローカル自動ログイン・ソフトウェア・キーストアは自動的に開きます。)PDBのキーストアを閉じることによって、PDBのすべての透過的データ暗号化操作がブロックされます。
CDBにおいて、PDBにおけるキーストア操作の開閉操作は、rootにおけるキーストアの開閉状態に依存します。
次の点に注意してください。
個別のPDBにおいてソフトウェアのパスワードベースのキーストアまたはハードウェア・キーストアを手動で開くには、rootでキーストアを開く必要があります。
個々のPDBでTDEマスター暗号化鍵を設定する前に、rootで鍵を設定する必要があります。
(自動ログイン・ソフトウェア・キーストアおよびローカル自動ログイン・ソフトウェア・キーストアは自動的に開きます。)これらを最初にrootからまたはPDBから、手動で開く必要はありません。
rootでキーストアを閉じると、これに依存するPDBのキーストアも閉じられます。rootにおいてキーストアを閉じる操作は、CONTAINER
句がALL
に設定されていてキーストアを閉じる操作を実行することと同等です。
rootでキーストアを開いてCONTAINER
をALL
に設定すると、これに依存するPDBのキーストアも開きます。
V$ENCRYPTION_WALLET
ビューでは、PDBのキーストアのステータス(オープン、クローズ、ソフトウェアまたはハードウェア・キーストアを使用しているかどうかなど)が表示されています。このビューを使用する便利なファンクションを作成して、CDB環境におけるすべてのPDBのキーストアのステータスを確認できます。
V$ENCRYPTION_WALLET
ビューを使用してキーストアのステータスを検出するファンクションを作成するには、CREATE PROCEDURE
PL/SQL文を使用します。
例6-5では、このファンクションを作成する方法を示しています。
例6-5 CDBにおけるすべてのPDBに関するキーストアのステータスを確認するファンクション
CREATE OR REPLACE PROCEDURE all_pdb_v$encryption_wallet IS err_occ BOOLEAN; curr_pdb VARCHAR2(30); pdb_name VARCHAR2(30); wrl_type VARCHAR2(20); status VARCHAR2(30); wallet_type VARCHAR2(20); wallet_order VARCHAR2(12); fully_backed_up VARCHAR2(15); wrl_parameter VARCHAR2(4000); cursor sel_pdbs IS SELECT NAME FROM V$CONTAINERS WHERE NAME <> 'PDB$SEED' order by con_id desc; BEGIN -- Store the original PDB name SELECT sys_context('userenv', 'con_name') INTO curr_pdb FROM DUAL; IF curr_pdb <> 'CDB$ROOT' THEN dbms_output.put_line('Operation valid in ROOT only'); END IF; err_occ := FALSE; dbms_output.put_line('---'); dbms_output.put_line('PDB_NAME WRL_TYPE STATUS '); dbms_output.put_line('------------------------------ -------- ------------------------------'); dbms_output.put_line('WALLET_TYPE WALLET_ORDER FULLY_BACKED_UP'); dbms_output.put_line('-------------------- ------------ ---------------'); dbms_output.put_line('WRL_PARAMETER'); dbms_output.put_line('--------------------------------------------------------------------------'); FOR pdbinfo IN sel_pdbs LOOP pdb_name := DBMS_ASSERT.ENQUOTE_NAME(pdbinfo.name, FALSE); EXECUTE IMMEDIATE 'ALTER SESSION SET CONTAINER = ' || pdb_name; BEGIN pdb_name := rpad(substr(pdb_name,1,30), 30, ' '); EXECUTE IMMEDIATE 'SELECT wrl_type from V$ENCRYPTION_WALLET' into wrl_type; wrl_type := rpad(substr(wrl_type,1,8), 8, ' '); EXECUTE IMMEDIATE 'SELECT status from V$ENCRYPTION_WALLET' into status; status := rpad(substr(status,1,30), 30, ' '); EXECUTE IMMEDIATE 'SELECT wallet_type from V$ENCRYPTION_WALLET' into wallet_type; wallet_type := rpad(substr(wallet_type,1,20), 20, ' '); EXECUTE IMMEDIATE 'SELECT wallet_order from V$ENCRYPTION_WALLET' into wallet_order; wallet_order := rpad(substr(wallet_order,1,9), 12, ' '); EXECUTE IMMEDIATE 'SELECT fully_backed_up from V$ENCRYPTION_WALLET' into fully_backed_up; fully_backed_up := rpad(substr(fully_backed_up,1,9), 15, ' '); EXECUTE IMMEDIATE 'SELECT wrl_parameter from V$ENCRYPTION_WALLET' into wrl_parameter; wrl_parameter := rpad(substr(wrl_parameter,1,79), 79, ' '); dbms_output.put_line(pdb_name || ' ' || wrl_type || ' ' || status); dbms_output.put_line(wallet_type || ' ' || wallet_order || ' ' || fully_backed_up); dbms_output.put_line(wrl_parameter); EXCEPTION WHEN OTHERS THEN err_occ := TRUE; END; END LOOP; IF err_occ = TRUE THEN dbms_output.put_line('One or more PDB resulted in an error'); END IF; END; . / set serveroutput on exec all_pdb_v$encryption_wallet;
透過的データ暗号化は、Oracle Call Interface (OCI)の動作に影響しません。
多くの実用的な目的のために、TDEは行の受渡し機能を除き、OCIに対して透過的です。行を使用可能にする鍵は受信ポイントでは使用できないため、OCIの行の受渡し機能をTDEで使用できません。
透過的データ暗号化は、Oracle Databaseのエディション機能に影響しません。
多くの実用的な目的のために、TDEはエディションに対して透過的です。表は常に非エディション化オブジェクトです。TDEの列暗号化によって、表の列が暗号化されます。エディションは、TDEの表領域の暗号化によって影響されません。
同じサーバー上の各Oracle Database (同じOracleバイナリを共有しているが異なるデータ・ファイルを使用しているデータベースなど)は、それぞれ独自のTDEキーストアにアクセスする必要があります。
キーストアは、データベース間で共有されるようには設計されていません。設計によって、データベースごとに1つのキーストアが必要となっています。複数のデータベースには同じキーストアを使用できません。
複数データベース環境に対してsqlnet.ora
ファイルを構成するには、次のオプションを使用します。
オプション1: データベースが同じOracleホームを共有する場合、sqlnet.ora
ファイルをデフォルトの場所(ORACLE_HOME
/network/admin
ディレクトリ)に保持します。
この場合、デフォルトの場所を使用することをお薦めします。sqlnet.ora
ファイルに、WALLET_LOCATION
またはENCRYPTION_WALLET_LOCATION
エントリがないことを確認します。これらの2つのエントリがsqlnet.ora
ファイルにない場合、透過的データ暗号化は、デフォルトのsqlnet.ora
の場所からキーストアにアクセスします。
オプション2: オプション1がご使用のサイトで実行可能な場合、ORACLE_SID
のような環境変数設定に基づき、キーストアの場所を指定できます。
例:
ENCRYPTION_WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /home/oracle/wallet/$ORACLE_SID)
オプション3: オプション1および2が実行可能でない場合、個別のsqlnet.ora
ファイルを各データベースにつき1つ使用します。TNS_ADMIN
環境変数が、正しいデータベース構成を指すように正確に設定されていることを確認します。TNS_ADMIN
変数の詳細および設定例は、SQL*Plusユーザーズ・ガイドおよびリファレンスを参照してください。
注意:
他のデータベースからキーストアを使用することによって、データの一部または全部が失われる可能性があります。