3. キーストアを自動でオープンするようにする

3. キーストアを自動でオープンするようにする#

Databaseを再起動した際、以下の結果のようになりKeystoreは再びクローズします。

CDBにて実行#
SQL> select * from v$encryption_wallet;
"WRL_TYPE","WRL_PARAMETER","STATUS","WALLET_TYPE","WALLET_ORDER","KEYSTORE_MODE","FULLY_BACKED_UP","CON_ID"
"FILE","/opt/oracle/admin/FREE/wallet/tde/","CLOSED","UNKNOWN","SINGLE","NONE","UNDEFINED",1
"FILE",,"CLOSED","UNKNOWN","SINGLE","UNITED","UNDEFINED",2
"FILE",,"CLOSED","UNKNOWN","SINGLE","UNITED","UNDEFINED",3

そのため、以下のコマンドにて再び明示的にオープンにする必要がありますが、この操作が少々面倒な場面もあります。

administer key management set keystore open identified by <password>;

そこで、ここでは自動ログインキーストアを作成し、Databaseが起動した際に自動でオープンするように設定してみます。

1. キーストアをオープンする#

キーストアがオープンしていない場合、こちらの手順にてキーストアをオープンします。

CDBにて実行#
SQL> select * from v$encryption_wallet;
"WRL_TYPE","WRL_PARAMETER","STATUS","WALLET_TYPE","WALLET_ORDER","KEYSTORE_MODE","FULLY_BACKED_UP","CON_ID"
"FILE","/opt/oracle/admin/FREE/wallet/tde/","CLOSED","UNKNOWN","SINGLE","NONE","UNDEFINED",1
"FILE",,"CLOSED","UNKNOWN","SINGLE","UNITED","UNDEFINED",2
"FILE",,"CLOSED","UNKNOWN","SINGLE","UNITED","UNDEFINED",3

SQL> administer key management set keystore open identified by OracleKM123# container = all;

keystore altered.

-- オープンしていることを確認する
SQL> select * from v$encryption_wallet;
"WRL_TYPE","WRL_PARAMETER","STATUS","WALLET_TYPE","WALLET_ORDER","KEYSTORE_MODE","FULLY_BACKED_UP","CON_ID"
"FILE","/opt/oracle/admin/FREE/wallet/tde/","OPEN","PASSWORD","SINGLE","NONE","NO",1
"FILE",,"OPEN","PASSWORD","SINGLE","UNITED","NO",2
"FILE",,"OPEN","PASSWORD","SINGLE","UNITED","NO",3

container = all 句を忘れた場合、CDBだけがオープンしますので、その後PDBに別途接続してオープンするコマンドを実行すれば問題ありません。

2. 自動ログインのキーストアを作成#

キーストアをオープンするために自動でログインするキーストアを作成します。

CDBにて実行#
SQL> administer key management create auto_login keystore from keystore identified by OracleKM123#;

keystore altered.

SQL> select * from v$encryption_wallet;
"WRL_TYPE","WRL_PARAMETER","STATUS","WALLET_TYPE","WALLET_ORDER","KEYSTORE_MODE","FULLY_BACKED_UP","CON_ID"
"FILE","/opt/oracle/admin/FREE/wallet/tde/","OPEN","PASSWORD","SINGLE","NONE","NO",1
"FILE",,"OPEN","PASSWORD","SINGLE","UNITED","NO",2
"FILE",,"OPEN","PASSWORD","SINGLE","UNITED","NO",3

-- 作成されたキーストアを確認
SQL> !ls -l /opt/oracle/admin/FREE/wallet/tde/
total 24
-rw-------. 1 oracle oinstall 7016 Feb 21 11:07 cwallet.sso
-rw-------. 1 oracle oinstall 2555 Nov 25 06:27 ewallet_2024112506271655.p12
-rw-------. 1 oracle oinstall 4059 Nov 25 08:10 ewallet_2024112508100476.p12
-rw-------. 1 oracle oinstall 6955 Nov 25 08:10 ewallet.p12

この時点で cwallet.sso が作成され、 ewallet のバックアップも作成されたことが確認できると思います。 CDBで実行していますので、上記ではCDBの鍵のみが登録されていますが、今回の環境ではPDBも同じ鍵を共有しているためPDBも自動でオープンされることになります。

一旦CDBから以下の操作を行いDBを再起動します。

CDBにて実行#
-- DBをシャットダウン
SQL> shu immediate

-- DBを立ち上げる
SQL> startup

SQL> select * from v$encryption_wallet;
"WRL_TYPE","WRL_PARAMETER","STATUS","WALLET_TYPE","WALLET_ORDER","KEYSTORE_MODE","FULLY_BACKED_UP","CON_ID"
"FILE","/opt/oracle/admin/FREE/wallet/tde/","OPEN","AUTOLOGIN","SINGLE","NONE","NO",1
"FILE",,"OPEN","AUTOLOGIN","SINGLE","UNITED","NO",2
"FILE",,"OPEN","AUTOLOGIN","SINGLE","UNITED","NO",3

改めて確認すると、STATUS列が OPEN 、WALLET_TYPE列が AUTOLOGIN となっており、再起動を行っても自動でオープンされたことがわかります。

以上でTDEのデモは終了です。