1. TDEの事前準備
実施内容
- TDEに関連する初期化パラメータを設定する
- Keystore(ウォレット)およびTDEマスター暗号鍵を作成する
1-1. 初期化パラメータの設定
Section titled “1-1. 初期化パラメータの設定”TDEに関連するパラメータの設定を行っていきます。なお、各パラメータの詳細については、以下ページも参照ください。
wallet_root
Section titled “wallet_root”TDEで使用されるマスター暗号鍵は、OS上のファイル(12c以降は Keystore と呼ばれる)として保存されます。
wallet_rootは、このKeystore(ウォレット)を格納するルートディレクトリを指定します。
wallet_root に指定するディレクトリは任意の場所に指定できますが、事前に存在するディレクトリを用意し、oracleユーザーが読み書きできる権限にしておくのが確実です。(用意がなくとも初期化パラメータの設定時に作成されますので、操作は必須ではありません)
ディレクトリはここでは /opt/oracle/admin/FREE/wallet を指定します。
wallet_root は静的パラメータのため、SPFILEに設定後に再起動します。
CDBに接続し、以下のコマンドでパラメータを設定します。PDBから実行はできませんので、CDBから実行を行ってください。
-- パラメータを設定SQL> alter system set wallet_root='/opt/oracle/admin/FREE/wallet' scope=spfile;
-- 静的パラメータのため、再起動するまでは反映されないSQL> select inst_id, name, value, issys_modifiable from gv$parameter where name = 'wallet_root';
INST_ID NAME VALUE ISSYS_MODIFIABLE__________ ______________ ________ ___________________ 1 wallet_root FALSE
-- 再起動SQL> shutdown immediateSQL> startup
-- 再起動後、設定が反映されているSQL> select inst_id, name, value, issys_modifiable from gv$parameter where name = 'wallet_root';
INST_ID NAME VALUE ISSYS_MODIFIABLE__________ ______________ ________________________________ ___________________ 1 wallet_root /opt/oracle/admin/FREE/wallet FALSEtde_configuration
Section titled “tde_configuration”tde_configuration はTDEで使用される Keystore の種類を設定します。
tde_configuration は、TDEで使用するKeystoreの種類(FILE/Oracle Key Vaultなど)や、統一モードまたは分離モードの前提となる設定に関わります。19cからは分離モードがサポートされ、PDBごとに固有の Keystore を使用できるようになりました。
このパラメータはルートコンテナ(CDB$ROOT)に対して設定し、統一モードのPDBはその値を継承します(分離PDBは個別設定が可能)。
サポートされる Keystore は以下の通りです。

有効化すると設定した値によって wallet_root 配下に以下のディレクトリが作成されます。そのため、このパラメータ設定のためには wallet_root を先に有効にしておく必要があります。
| 方式 | 作成されるディレクトリ |
|---|---|
| FILE | <wallet_root>/tde |
| Oracle Key Vault | <wallet_root>/okv |
参考リンク:26ai - TDE_CONFIGURATION
今回はデモのため、DBサーバー上の FILE Keystore を使用します。
-- パラメータを設定SQL> alter system set tde_configuration='keystore_configuration=file' scope=both;
-- すぐに反映されているSQL> select inst_id, name , value , issys_modifiable from gv$parameter where name = 'tde_configuration';
INST_ID NAME VALUE ISSYS_MODIFIABLE__________ ____________________ ______________________________ ___________________ 1 tde_configuration keystore_configuration=file IMMEDIATE
-- 現在では Keystore は認識されていない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/ NOT_AVAILABLE UNKNOWN SINGLE NONE UNDEFINED 1FILE NOT_AVAILABLE UNKNOWN SINGLE UNITED UNDEFINED 2FILE NOT_AVAILABLE UNKNOWN SINGLE UNITED UNDEFINED 3CDB$ROOTで tde_configuration を設定すると、統一(united)PDBは基本的に値を継承します。
1-2. Keystore の作成
Section titled “1-2. Keystore の作成”暗号化鍵を格納するための Keystore を作成します。 Keystoreおよびキー管理には SYSKM(または ADMINISTER KEY MANAGEMENT 権限)が必要です。
以下の操作は SYS ユーザーでも可能ですが、Keystore 操作の専用ユーザーとして SYSKM ユーザーも用意されているため、ここでは SYSKM ユーザーを使用します。
以下のコマンドで Keystore を作成します。デフォルトではPKCS#12ベースのキーストレージファイルに保存されます。
-- SYSKMユーザーで接続SQL> conn / as syskmConnected.SQL> show con_name userCON_NAME------------------------------CDB$ROOTUSER is "SYSKM"
-- Keystore を作成SQL> administer key management create keystore identified by <password>;この操作により、wallet_root 配下に tde ディレクトリが作成され、その中にパスワードウォレット ewallet.p12 が作成されます。
$ tree /opt/oracle/admin/FREE/wallet/opt/oracle/admin/FREE/wallet└── tde └── ewallet.p12
1 directory, 1 file作成された Keystore は orapki コマンドから中身を確認することもできます。
-- orapki コマンドで確認SQL> !orapki wallet display -wallet /opt/oracle/admin/FREE/wallet/tde -pwd "<password>" -detailsOracle PKI Tool Release 23.0.0.0.0 - ProductionVersion 23.0.0.0.0Copyright (c) 2004, 2026, Oracle and/or its affiliates. All rights reserved.
=======================Requested Certificates:=======================-------------------------Requested Certificate [1]-------------------------Subject: CN=oracle=============================Oracle Secret Store entries:=============================ORACLE.SECURITY.ID.ENCRYPTION.ORACLE.SECURITY.KB.ENCRYPTION.また、データベースから Keystore が正しく認識されていることが V$ENCRYPTION_WALLETビューからも確認することができます。
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 1FILE CLOSED UNKNOWN SINGLE UNITED UNDEFINED 2FILE CLOSED UNKNOWN SINGLE UNITED UNDEFINED 3上記の結果からわかる通り、 作成直後は Keystore の STATUS=CLOSED となっています。この状態では Keystore は使用できませんので、次のコマンドにて Keystore を OPEN にします。
SQL> administer key management set keystore open identified by <password> container=current;
Key MANAGEMENT succeeded.
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_NO_MASTER_KEY PASSWORD SINGLE NONE UNDEFINED 1FILE CLOSED UNKNOWN SINGLE UNITED UNDEFINED 2FILE CLOSED UNKNOWN SINGLE UNITED UNDEFINED 3STATUS が OPEN_NO_MASTER_KEY になっていれば「Keystoreは開いたが、マスター暗号鍵がまだ無い」状態です。
1-3. CDBのマスター暗号鍵の作成
Section titled “1-3. CDBのマスター暗号鍵の作成”KeystoreをOPENしただけでマスター暗号鍵は存在しない状態です。
SQL> select * from v$encryption_keys;
no rows selectedそのため、続く手順にてマスター暗号鍵を作成します。今回はCDB、PDBを一括で暗号化するために”統一モード”で鍵を作成します。 統一モードでは、CDBおよび(統一モードの)PDBのキーは共通のKeystoreに格納されることになります。
まずはCDBのKeystoreをオープンします。
SQL> administer key management set key using tag 'v1.0_MEK' identified by <password> with backup container=current;USING TAGは省略可能ですが、ローテーション管理のため付与が推奨されます。WITH BACKUPにより、ewallet_YYYYMMDD...p12のようなバックアップが作成されます。- また、今回は使用していませんが、
force keystore句でオープンしていないkeystoreに対して作成することができます。
バックアップが作成され、新しいkeystoreが作成されていることを確認します。
# 作成されたファイルを確認[oracle@db-tut tde]$ ls -ltotal 8-rw-------. 1 oracle oinstall 2563 Feb 9 04:12 ewallet_2026020904125329.p12-rw-------. 1 oracle oinstall 4003 Feb 9 04:12 ewallet.p12-rw-------. 1 oracle oinstall 0 Feb 9 04:08 ewallet.p12.lck
# orapkiコマンドで確認[oracle@db-tut tde]$ orapki wallet display -wallet /opt/oracle/admin/FREE/wallet/tde -pwd "<password>" -detailsOracle PKI Tool Release 23.0.0.0.0 - ProductionVersion 23.0.0.0.0Copyright (c) 2004, 2026, Oracle and/or its affiliates. All rights reserved.
=======================Requested Certificates:=======================-------------------------Requested Certificate [1]-------------------------Subject: CN=oracle=============================Oracle Secret Store entries:=============================ORACLE.SECURITY.DB.ENCRYPTION.AYR7Rvt8DE8qhEm4JlOxDVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAORACLE.SECURITY.ID.ENCRYPTION.ORACLE.SECURITY.KB.ENCRYPTION.ORACLE.SECURITY.KM.ENCRYPTION.AYR7Rvt8DE8qhEm4JlOxDVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAORACLE.SECURITY.KT.ENCRYPTION.AYR7Rvt8DE8qhEm4JlOxDVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA一方、データベースからも認識されていることを確認できます。
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 1FILE CLOSED UNKNOWN SINGLE UNITED UNDEFINED 2FILE CLOSED UNKNOWN SINGLE UNITED UNDEFINED 3
SQL> select key_id, tag, creation_time, activation_time, key_use, keystore_type, origin, backed_up, algorithm, con_id from v$encryption_keys order by activation_time desc;
KEY_ID TAG CREATION_TIME ACTIVATION_TIME KEY_USE KEYSTORE_TYPE ORIGIN BACKED_UP ALGORITHM CON_ID_______________________________________________________ ___________ ______________________________________ ______________________________________ _____________ ____________________ _________ ____________ ____________ _________AYR7Rvt8DE8qhEm4JlOxDVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA v1.0_MEK 09-FEB-26 04.12.53.307377000 AM GMT 09-FEB-26 04.12.53.307379000 AM GMT TDE IN PDB SOFTWARE KEYSTORE LOCAL NO AES256 11-4. PDBのマスター暗号鍵作成
Section titled “1-4. PDBのマスター暗号鍵作成”PDB側でも同様に、そのPDBのマスター暗号鍵を作成します。統一モードのため、キーは共通のKeystoreに格納されます。
-- PDBに接続を切り替えSQL> alter session set container=freepdb1;SQL> show con_nameCON_NAME------------------------------FREEPDB1
-- PDBでウォレットの状態を確認SQL> select * from v$encryption_wallet;
WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_ORDER KEYSTORE_MODE FULLY_BACKED_UP CON_ID___________ ________________ _________ ______________ _______________ ________________ __________________ _________FILE CLOSED UNKNOWN SINGLE UNITED UNDEFINED 3
-- PDBでマスター暗号鍵を認識しているか確認SQL> select * from v$encryption_keys;
no rows selectedPDB のマスター暗号鍵を作成します。(以下の実行ではSYSユーザーを使用しています)
今回のように、Keystore が閉じている場合でも、FORCE KEYSTORE句を付けることにより「閉じているKeystoreに対しても操作可能」になります。
SQL> administer key management set key using tag 'v1.1_MEK' force keystore identified by <password> with backup container=current;
Key MANAGEMENT succeeded.作成されたことを確認します。
SQL> select * from v$encryption_wallet;
WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_ORDER KEYSTORE_MODE FULLY_BACKED_UP CON_ID___________ ________________ _________ ______________ _______________ ________________ __________________ _________FILE OPEN PASSWORD SINGLE UNITED NO 3
SQL> select key_id, tag, creation_time, activation_time, key_use, keystore_type, origin, backed_up, algorithm, con_id from v$encryption_keys order by activation_time desc;
KEY_ID TAG CREATION_TIME ACTIVATION_TIME KEY_USE KEYSTORE_TYPE ORIGIN BACKED_UP ALGORITHM CON_ID_______________________________________________________ ___________ ______________________________________ ______________________________________ _____________ ____________________ _________ ____________ ____________ _________ASYVqAGBX0NTmukahQkZd2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA v1.1_MEK 09-FEB-26 04.28.05.780650000 AM GMT 09-FEB-26 04.28.05.780652000 AM GMT TDE IN PDB SOFTWARE KEYSTORE LOCAL NO AES256 3これでPDBのマスター暗号鍵も作成されました。
orapkiコマンドからもウォレットに鍵が作成されたことが確認できます。
[oracle@db-tut tde]$ orapki wallet display -wallet /opt/oracle/admin/FREE/wallet/tde -pwd "<password>" -detailsOracle PKI Tool Release 23.0.0.0.0 - ProductionVersion 23.0.0.0.0Copyright (c) 2004, 2026, Oracle and/or its affiliates. All rights reserved.
=======================Requested Certificates:=======================-------------------------Requested Certificate [1]-------------------------Subject: CN=oracle=============================Oracle Secret Store entries:=============================ORACLE.SECURITY.DB.ENCRYPTION.ASYVqAGBX0NTmukahQkZd2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAORACLE.SECURITY.DB.ENCRYPTION.AYR7Rvt8DE8qhEm4JlOxDVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAORACLE.SECURITY.ID.ENCRYPTION.ORACLE.SECURITY.KB.ENCRYPTION.ORACLE.SECURITY.KM.ENCRYPTION.ASYVqAGBX0NTmukahQkZd2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAORACLE.SECURITY.KM.ENCRYPTION.AYR7Rvt8DE8qhEm4JlOxDVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAORACLE.SECURITY.KT.ENCRYPTION.ASYVqAGBX0NTmukahQkZd2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAORACLE.SECURITY.KT.ENCRYPTION.AYR7Rvt8DE8qhEm4JlOxDVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAこれでTDEの事前準備(パラメータ設定、Keystore作成、CDB/PDBのマスター暗号鍵作成)が完了しました。 次の手順から、実際に表領域暗号化を行います。
- 26ai - V$ENCRYPTION_WALLET — ウォレットの状態とTDEウォレットの場所に関する情報を表示
- 26ai - V$ENCRYPTION_KEYS — マスターキーの説明属性を表示