マルチテナントのPDBで透過的データ暗号化を使用する際は、キーストア(ウォレット)の作り方によって統一モードと分離モードの二つのパターンがある。
統一モード:ルートコンテナとすべてのPDBが一つのキーストアを利用する。マスター暗号化キーは個々のPDB毎に作成可能。
分離モード:PDB毎に個別のキーストアを作成して利用する。
Advanced Securityガイド
統一モードでは、CDB、およびキーストアが統一モードになっているPDBの共通のキーストアを作成できます。
Advanced Securityガイド
分離モードでは、各プラガブル・データベース(PDB)のキーストアを作成できます。
ただ、どうやら分離モードはオンプレミス環境では使用できないようだ(単にライセンスやサポートの問題なのか、物理的に実行できないのかは不明)。
ここでは、統一モードでPDB毎にマスター暗号化キーを作成してみる。
ルートコンテナでの操作
先にキーストアの場所を作成しておく。
$ mkdir -p /home/oracle/wallet/cdb19/tde
ルートコンテナでwallet_rootパラメータを設定する。
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> alter system set wallet_root='/home/oracle/wallet/cdb19' scope=spfile;
設定反映のためいったん再起動。
さらにルートコンテナでtde_configurationパラメータを設定する。
SQL> alter system set tde_configuration="KEYSTORE_CONFIGURATION=FILE" scope=both;
キーストア(+自動ログインキーストア)を作成する。
SQL> administer key management create keystore '/home/oracle/wallet/cdb19/tde' identified by oracle;
SQL> administer key management create auto_login keystore from keystore '/home/oracle/wallet/cdb19/tde' identified by oracle;
マスター暗号化キーを設定。
SQL> administer key management set key force keystore identified by oracle with backup;
PDBでの操作
PDBに接続してキーストアをオープンする。
SQL> alter session set container=cdb19p1;
SQL> administer key management set keystore open identified by oracle;
この時点でキーストアの状態を確認しても、マスターキーがないと認識されている。
SQL> select status from v$encryption_wallet;
STATUS
------------------------------
OPEN_NO_MASTER_KEY
改めて、PDB用のマスター暗号化キーを作成する。
SQL> administer key management set key force keystore identified by oracle with backup;
キーストアがオープンされたことを確認する。
SQL> select status from v$encryption_wallet;
STATUS
------------------------------
OPEN
コメント