Oracle Database 21cで追加されたDBCAのオプション・パラメータの動作を確認します。
対象のパラメータはconfigureTDE
です。DBCAでデータベースを作成する際にTDE(Transparent Data Encryption / 透過的データ暗号化)を構成します。
ヘルプによる用法は次の通りです。
[-configureTDE <true | false> Specify true to configure TDE wallet]
[-sourceTdeWalletPassword <Specify password for source database TDE wallet>]
[-tdeAlgorithm <Specify the TDE Algorithm Type. Default is AES128>]
[-primaryDBTdeWallet <Specify the location for TDE wallet of primary database>]
[-tdeWalletRoot <Specify the location for TDE wallet root init parameter>]
[-pdbTDEPassword <Specify password for PDB TDE wallet>]
[-encryptPDBTablespaces <Specify ALL to encrypt all Tablespaces or A comma separated list of name:value pairs with tablespace encryption to true/false. For example SYSTEM:true,SYSAUX:false>]
[-tdeWalletModeForPDB <Type of keystore, either UNITED or ISOLATED. Default is UNITED>]
[-tdeWalletLoginType <Specify the TDE Wallet Login Type, PASSWORD | AUTO_LOGIN | LOCAL_AUTO_LOGIN. Default is PASSWORD for SI and AUTO_LOGIN is default for RAC]
[-encryptTablespaces <Specify ALL to encrypt all Tablespaces or A comma separated list of name:value pairs with tablespace encryption to true/false. For example SYSTEM:true,SYSAUX:false>]
[-sourcePdbTDEPassword <Specify password for source PDB TDE wallet and it is used only in creation of PDB from existing PDB which has TDE wallet>]
- まず
‐configureTDE true
を指定することでTDEウォレットを構成する。 - さらに細かな指定をする場合は従属するオプション・パラメータを指定する。
- インデントされている
sourceTdeWalletPassword
以下のパラメータを任意選択
- インデントされている
指定しようと思ったら項目がたくさんありますが、configureTDE true
のみの指定で動作を確認してみます。
TDEの利用には適切なライセンスが必要です。
製品マニュアルの次の項をご参照ください。
- Oracle Databaseデータベース・ライセンス情報ユーザー・マニュアル, 21c
1.3 Oracle Database製品で許可される機能、オプションおよびManagement Pack
表1-11 セキュリティ
構成
- Oracle Database 21c Enterprise Edition (21.3)
- Oracle Eneterprise Linux 8.2
実践
DBCAでデータベース作成を実行します。サイレントモードです。
オプション・パラメータで-configureTDE true
を付けます。
$ dbca -silent -createDatabase -gdbName db21tde -templateName General_Purpose.dbc -configureTDE true
Enter SYS user password:
Enter SYSTEM user password:
Enter password for the TDE wallet:
Prepare for db operation
10% complete
Copying database files
・・・以下、略・・・
SYSパスワードとSYSTEMパスワードに加えてTDEウォレットのパスワードの入力が求められました。
以後はコマンドの完了まで処理が進みます。
TDE関連ビューで設定を確認する
作成されたデータベース(CDB)にログインしてTDE関連の設定状態を確認してみます。
暗号化表領域
暗号化が適用されたのはUSERS表領域のみでした。
システム系の表領域も暗号化させるには-encryptTablespaces
を指定する必要がありそうです。
後日、-encryptTablespaces ALL
を付け加えてdbcaを実行してみました。
ページ末尾の補足情報をご参照ください。
SQL> SELECT TABLESPACE_NAME,ENCRYPTED FROM DBA_TABLESPACES ORDER BY 1;
TABLESPACE_NAME ENC
------------------------------ ---
SYSAUX NO
SYSTEM NO
TEMP NO
UNDOTBS1 NO
USERS YES
SQL>
暗号化アルゴリズム
使用された暗号化アルゴリズムは AES128 です。
これはコマンドのヘルプにある[-tdeAlgorithm <Specify the TDE Algorithm Type. Default is AES128>]
の通りです。
SQL> SELECT TS#,ENCRYPTIONALG,ENCRYPTEDTS FROM V$ENCRYPTED_TABLESPACES;
TS# ENCRYPT ENC
---------- ------- ---
4 AES128 YES
SQL>
暗号化ウォレット
暗号化ウォレットは次のような構成です。
SQL> SELECT * FROM V$ENCRYPTION_WALLET;
WRL_TYPE
--------------------
WRL_PARAMETER
--------------------------------------------------------------------------------
STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
------------------------------ -------------------- --------- -------- ---------
CON_ID
----------
FILE
/u01/app/oracle/admin/db21tde/wallet_root/tde/
OPEN AUTOLOGIN SINGLE NONE NO
1
FILE
OPEN AUTOLOGIN SINGLE UNITED NO
2
ちなにみこのディレクトリの下にあるファイルは以下の通りです。
$ ls -l /u01/app/oracle/admin/db21tde/wallet_root/tde/
total 12
-rw------- 1 oracle oinstall 4040 Sep 19 17:37 cwallet.sso
-rw------- 1 oracle oinstall 2555 Sep 19 17:37 ewallet_2022091908375917.p12
-rw------- 1 oracle oinstall 3995 Sep 19 17:37 ewallet.p12
$
TDE関連の初期化パラメータ設定を確認する
続いて初期化パラメータを確認してみます。
WALLET_ROOT
とTDE_CONFIGURATION
によってキーストアは統一モード1で構成されています。
SQL> SHOW PARAMETER WALLET_ROOT
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
wallet_root string /u01/app/oracle/admin/db21tde/
wallet_root
SQL>
SQL> SHOW PARAMETER TDE_CONFIGURATION
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
tde_configuration string keystore_configuration=file
SQL>
ちなみにTDEの構成を指定せずに作成したデータベースでは上記いずれもNULL(未設定)状態です。
SQL> SHOW PARAMETER ENCRYPT_NEW_TABLESPACES
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
encrypt_new_tablespaces string ALWAYS
SQL>
SQL> SHOW PARAMETER TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
tablespace_encryption_default_algori string AES128
thm
SQL>
まとめ
DBCAでのデータベース作成時にTDEを構成できるのは便利です。
ただ、この記事で試したのはTDEのおおもとのTDE構成のみです。運用環境のデータベース構築に適用するには、製品マニュアルを参照してもう少し踏み込んだ確認が必要に思いました。
補足情報
- TDE構成有無での初期化パラメータ設定差異
本記事で示している初期化パラメータについては、TDE構成あり(configureTDE true
)で作成したデータベースとそうでないデータベースでは下表のように違いがありました。
初期化パラメータ | TDE構成あり | TDE構成なし |
---|---|---|
wallet_root | $ORACLE_BASE/admin//wallet_root | - |
tde_configuration | keystore_configuration=file | ‐ |
encrypt_new_tablespaces | ALWAYS | CLOUD_ONLY |
tablespace_encryption_default_algorithm | AES128 | AES128 |
- sqlnet.oraファイルの構成状態
DBCAでのTDE構成によるsqlnet.oraファイルには特に変化はありませんでした。
初期化パラメータWALLET_ROOT
が使用されているためsqlnet.oraファイルにSQLNET.ENCRYPTION_WALLET_LOCATION
に関する記述はないようです。
データベース・リファレンスの初期化パラメータWALLET_ROOTの項には次の注意書きがあります。
ノート:SQLNET.ENCRYPTION_WALLET_LOCATIONパラメータはOracle Database 18cでは非推奨です。
$ ls -l $ORACLE_BASE_HOME/network/admin/sqlnet.ora*
-rw-r----- 1 oracle oinstall 197 Feb 21 2022 /u01/app/oracle/homes/OraDB21Home3/network/admin/sqlnet.ora
$
$ cat /u01/app/oracle/homes/OraDB21Home3/network/admin/sqlnet.ora
# sqlnet.ora Network Configuration File: /u01/app/oracle/homes/OraDB21Home3/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
$
- 全表領域の暗号化指定での確認
後日、-encryptTablespaces ALL
を付け加えてdbcaを実行してみました。
初期構成される表領域はすべて暗号化状態です。
$ dbca -silent -createDatabase -gdbName db21tde2 -templateName General_Purpose.dbc -configureTDE true -encryptTablespaces ALL
$ export ORACLE_SID=db21tde2
$ sqlplus / as sysdba
・・・中略・・・
SQL> SELECT TABLESPACE_NAME,ENCRYPTED FROM DBA_TABLESPACES ORDER BY 1;
TABLESPACE_NAME ENC
------------------------------ ---
SYSAUX YES
SYSTEM YES
TEMP YES
UNDOTBS1 YES
USERS YES
SQL>
-
キーストアの統一モードはOracle Database 18cから実装されている機能です。CDBとPDBのキーストアの管理の方法で統一モードと分離モードがあります。詳しくは製品マニュアルをご確認ください ↩