3 統一モードの構成
統一モードでは、CDB、およびキーストアが統一モードになっているPDBの共通のキーストアを作成できます。
CDBおよびPDBのキーは共通キーストアに格納されます。
3.1 統一モードの構成について
統一モード(デフォルト)では、キーストアはCDBルートと、統一モードで構成されているすべてのPDB間で共有されます。統一モードの各PDBには、共有キーストアに独自のマスター暗号化キーのセットがあります。
統一モードのキーストアを持つPDBのキーは、CDBルートまたはPDBから作成できます。
この設計により、1つのキーストアでCDB環境全体を管理し、PDBでそのキーストアを共有できますが、個々の統一モードのPDBでこのキーストアの動作をカスタマイズできます。たとえば、統一モードのPDBでは、CDBルートで作成した統合キーストア内のPDB用のTDEマスター暗号化キーを構成し、キーストアをローカルで開き、キーストアをローカルで閉じることができます。これらのアクションを実行するには、CDBルートのキーストアが開いている必要があります。
統一モードまたは分離モードを使用するように環境を構成する前は、CDB環境内のすべてのPDBは、統一モードであるとみなされます。
統一モードを使用するには、次の一般的なステップに従う必要があります。
-
CDBルートで、
WALLET_ROOT
パラメータとTDE_CONFIGURATION
パラメータを設定することで、統一モードを使用するようにデータベースを構成します。WALLET_ROOT
パラメータは、ウォレット・ディレクトリの場所を設定し、TDE_CONFIGURATION
パラメータは、使用するキーストアのタイプを設定します。 -
静的初期化パラメータ
WALLET_ROOT
の設定後にデータベースを再起動してから、動的初期化パラメータTDE_CONFIGURATION
を設定します。 -
CDBルートで、キーストアを作成し、キーストアを開き、TDEマスター暗号化キーを作成します。
-
統一モードの各PDBで、統一モードのPDBでローカルにキーストアを開いたり、PDBのTDEマスター暗号化キーを作成したりするなど、必要に応じてTDEマスター暗号化キーのタスクを実行します。キーストアはCDBルートで管理されますが、PDBでTDEを使用できるようにするには、PDB固有のTDEマスター暗号化キーがキーストアに含まれている必要があることに注意してください。
CDBルートから統一モードでADMINISTER KEY MANAGEMENT
文を実行すると、文でCONTAINER
句が受け入れられ、それをALL
に設定した場合、その文は、CDBルートおよびそれに関連付けられた統一モードのPDBにのみ適用されます。分離モードのPDBはすべて影響を受けません。
3.2 統一モードで許可される操作
CDBルートで実行される多くのADMINISTER KEY MANAGEMENT
操作は、統一モードのPDBのキーストアおよび暗号化キーに適用されます。
CDBルートで使用可能な統一モード関連の操作
表3-1では、CDBルートで実行できるADMINISTER KEY MANAGEMENT
操作について説明します。
表3-1 CDBルートでのADMINISTER KEY MANAGEMENT統一モード操作
操作 | 構文 | ノート |
---|---|---|
キーストアの作成 |
ADMINISTER KEY MANAGEMENT
CREATE KEYSTORE
IDENTIFIED BY keystore_password; |
CDBルートでキーストアを作成した後、デフォルトで、そのキーストアは、統一モードのPDBで使用できます。 |
キーストアを開く |
ADMINISTER KEY MANAGEMENT
SET KEYSTORE OPEN
IDENTIFIED BY
[EXTERNAL STORE | keystore_password]
[CONTAINER = ALL | CURRENT]; |
この操作の |
キーストア・パスワードの変更 |
ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD IDENTIFIED BY old_keystore_password SET new_keystore_password WITH BACKUP [USING 'backup_identifier']; |
|
キーストアのバックアップ |
ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE [USING 'backup_identifier'] [FORCE KEYSTORE] IDENTIFIED BY [EXTERNAL STORE | keystore_password] [TO 'keystore_location']; |
|
強制せずにキーストアを閉じる |
ADMINISTER KEY MANAGEMENT
SET KEYSTORE CLOSE
[IDENTIFIED BY [EXTERNAL STORE | keystore_password]]
[CONTAINER = ALL | CURRENT]; |
- |
強制的にキーストアを閉じる |
ADMINISTER KEY MANAGEMENT
FORCE KEYSTORE CLOSE
[IDENTIFIED BY [EXTERNAL STORE | keystore_password]]
[CONTAINER = ALL | CURRENT]; |
- |
新しいTDEマスター暗号化キーの作成およびアクティブ化(キー更新) |
ADMINISTER KEY MANAGEMENT SET [ENCRYPTION] KEY [FORCE KEYSTORE] [USING TAG 'tag_name'] IDENTIFIED BY [EXTERNAL STORE | keystore_password] WITH BACKUP [USING 'backup_identifier'] [CONTAINER = ALL | CURRENT] |
- |
今すぐ( |
ADMINISTER KEY MANAGEMENT [SET | CREATE] [ENCRYPTION] KEY 'mkid:mk | mk' [USING ALGORITHM 'algorithm'] [FORCE KEYSTORE] [USING TAG 'tag_name'] IDENTIFIED BY [EXTERNAL STORE | keystore_password] [WITH BACKUP [USING 'backup_identifier']] [CONTAINER = CURRENT]; |
- |
既存のTDEマスター暗号化キーのアクティブ化 |
ADMINISTER KEY MANAGEMENT USE [ENCRYPTION] KEY 'key_id' IDENTIFIED BY [EXTERNAL STORE | keystore_password] WITH BACKUP [USING 'backup_identifier']; |
|
TDEマスター暗号化キーのタグ付け |
ADMINISTER KEY MANAGEMENT SET TAG 'tag' FOR 'key_id' IDENTIFIED BY [EXTERNAL STORE | keystore_password ] WITH BACKUP [USING 'backup_identifier']; |
|
TDEマスター暗号化キーを新しいキーストアに移動する |
ADMINISTER KEY MANAGEMENT MOVE [ENCRYPTION] KEYS TO NEW KEYSTORE 'keystore_location1' IDENTIFIED BY keystore1_password FROM [FORCE] KEYSTORE IDENTIFIED BY keystore_password [WITH IDENTIFIER IN { 'key_id' [, 'key_id' ]... | ( subquery ) } ] WITH BACKUP [USING 'backup_identifier']; |
マスター暗号化キーは、同じコンテナ内のキーストアにのみ移動できます(たとえば、CDBルートのキーストア間や同じPDBのキーストア間)。CDBルートのキーストアのマスター暗号化キーをPDBのキーストアに移動することはできず、その逆もできません。
|
統一モードのPDBで使用可能な操作
表3-2では、統一モードのPDBで実行できるADMINISTER KEY MANAGEMENT
操作について説明します。
表3-2 ADMINISTER KEY MANAGEMENT統一モードPDB操作
操作 | 構文 | ノート |
---|---|---|
キーストアを開く |
ADMINISTER KEY MANAGEMENT
SET KEYSTORE CLOSE
[IDENTIFIED BY EXTERNAL STORE | keystore_password]
[CONTAINER = CURRENT]; |
この操作では、 |
強制せずにキーストアを閉じる |
ADMINISTER KEY MANAGEMENT
SET KEYSTORE CLOSE
[EXTERNAL STORE | keystore_password]
[CONTAINER = CURRENT]; |
- |
強制的にキーストアを閉じる |
ADMINISTER KEY MANAGEMENT
FORCE KEYSTORE CLOSE
IDENTIFIED BY
[EXTERNAL STORE | keystore_password]
[CONTAINER = CURRENT]; |
- |
新しいTDEマスター暗号化キーを作成およびアクティブ化する(キー更新またはローテーション) |
ADMINISTER KEY MANAGEMENT SET [ENCRYPTION] KEY [FORCE KEYSTORE] [USING TAG 'tag_name'] IDENTIFIED BY EXTERNAL STORE | keystore_password WITH BACKUP [USING 'backup_identifier'] [CONTAINER = CURRENT]; |
- |
今すぐ( |
ADMINISTER KEY MANAGEMENT SET | CREATE [ENCRYPTION] KEY 'mkid:mk | mk' [USING ALGORITHM 'algorithm'] [FORCE KEYSTORE] [USING TAG 'tag'] IDENTIFIED BY EXTERNAL STORE | keystore_password WITH BACKUP [USING 'backup_identifier'] [CONTAINER = CURRENT]; |
- |
既存のTDEマスター暗号化キーのアクティブ化 |
ADMINISTER KEY MANAGEMENT USE [ENCRYPTION] KEY 'key_id' IDENTIFIED BY EXTERNAL STORE | keystore_password WITH BACKUP [USING 'backup_identifier']; |
|
TDEマスター暗号化キーのタグ付け |
ADMINISTER KEY MANAGEMENT SET TAG 'tag' FOR 'key_id' [FORCE KEYSTORE] IDENTIFIED BY EXTERNAL STORE | keystore_password WITH BACKUP [USING 'backup_identifier']; |
|
暗号化キーを新しいキーストアに移動する |
ADMINISTER KEY MANAGEMENT MOVE [ENCRYPTION] KEYS TO NEW KEYSTORE 'new_keystore_location' IDENTIFIED BY new_keystore_password FROM [FORCE] KEYSTORE IDENTIFIED BY keystore_password [WITH IDENTIFIER IN { 'key_id' [, 'key_id' ]... | ( subquery ) } ] WITH BACKUP [USING 'backup_identifier']; |
|
CDBルートの統一モードのキーストアにあるキーをPDBの分離モードのキーストアに移動する |
ADMINISTER KEY MANAGEMENT ISOLATE KEYSTORE IDENTIFIED BY isolated_keystore_password FROM ROOT KEYSTORE [FORCE KEYSTORE] IDENTIFIED BY EXTERNAL STORE | united_keystore_password WITH BACKUP [USING backup_id]; |
|
PDBのクローンが分離されているTDEマスター暗号化キーを使用している場合に |
ADMINISTER KEY MANAGEMENT FORCE ISOLATE KEYSTORE IDENTIFIED BY isolated_keystore_password FROM ROOT KEYSTORE [FORCE KEYSTORE] IDENTIFIED BY [EXTERNAL STORE | united_keystore_password] [WITH BACKUP [USING backup_id]]; |
- |
3.3 統一モードのキーストアの場所とタイプの構成
統一モードでは、パラメータを設定してALTER SYSTEM
文を実行することで、キーストアの場所とタイプを構成できます。
3.3.1 統一モードでのキーストアの場所およびタイプの構成について
キーストアとは、TDEマスター暗号化キーを格納するコンテナです。
キーストアを構成する前に、まず静的初期化パラメータWALLET_ROOT
を設定して、その場所を定義する必要があります。その後でデータベースを再起動して、データベースにマスター暗号化キーの取得元を指示する動的初期化パラメータTDE_CONFIGURATION
を設定する必要があります。この設定は、キーの取得元になるTDEウォレット、Oracle Key VaultまたはOracle Cloud Interface (OCI)キー管理サービス(KMS)のドキュメントに従います。この設定が作成されていない場合、Oracle Databaseは、sqlnet.ora
ファイルをチェックします。別のTDEウォレット(そのウォレットのコピーなど)を作成して、キーが含まれているファイルを必要に応じてエクスポートすることもできます。WALLET_ROOT
の場所に構成したウォレットの削除が必要な場合は、すべてのウォレット(バックアップと自動ログイン・ウォレットを含む)を古い場所から新しい場所にコピーした後でのみ削除してください。その後で、新しいTDEウォレットの場所を指すようにWALLET_ROOT
を再設定する必要があります。
WALLET_ROOT
パラメータとTDE_CONFIGURATION
パラメータを使用してキーストアの場所を構成すると、CDBにログインしてTDEウォレットを作成して開き、TDEマスター暗号化キーを設定できるようになります。これらのステップを完了したら、データの暗号化を開始できます。
3.3.2 初期化パラメータ・ファイルおよびALTER SYSTEMを使用した統一モードの構成
環境がサーバー・パラメータ・ファイル(spfile
)に依存している場合は、SCOPE
を指定したALTER SYSTEM SET
を使用して、WALLET_ROOT
およびTDE_CONFIGURATION
を設定できます。
3.3.3 例: 複数のデータベースで同じホストを共有する場合のTDEウォレットの構成
WALLET_ROOT
パラメータを設定することで、同じホストを共有するように複数のデータベースを構成できます。
WALLET_ROOT
パラメータはOracleデータベースの内部にあるため、複数のデータベースで同じホストを共有できるようにするパラメータの設定のみが必要です。
たとえば:
ALTER SYSTEM SET WALLET_ROOT = '/etc/ORACLE/KEYSTORES/${ORACLE_SID}' SCOPE = SPFILE;
各データベースに対して個々のTDEウォレットを完全に分離して実装するには、WALLET_ROOT
パラメータ設定にORACLE_SID
(またはOracle Real Application ClustersではORACLE_UNQNAME
)を追加します。
3.3.4 例: Oracle Automatic Storage Managementディスク・グループ用のTDEウォレットの構成
Oracle Real Applications Clusters (Oracle RAC)環境では、WALLET_ROOT
パラメータは、そのデータベースのすべてのOracle RACインスタンスからアクセスできるOracle Automatic Storage Management (ASM)の共有ディレクトリを指します。
次の例では、ASMのTDEウォレットについてWALLET_ROOT
およびTDE_CONFIGURATION
を設定する方法を示します。
ALTER SYSTEM SET WALLET_ROOT = '+DATA/unique_name_of_database' SCOPE = SPFILE SID = '*';
たとえば、この値を+DATA/FINRAC
に設定すると、TDEウォレットの作成時に/tde
ディレクトリが自動的に生成されます。
関連トピック
3.4 統合モードでのTDEウォレットおよびTDEマスター暗号化キーの構成
統合モードでは、TDEウォレットはCDBルートに存在しますが、このウォレットのマスター・キーは、TDEウォレットが統合モードであるPDBで使用できます。
3.4.1 統合モードでのTDEウォレットおよびTDEマスター暗号化キーの構成について
統一モードでは、CDBルートで作成されたTDEウォレットは、統一モードのPDBからアクセス可能になります。
一般に、統合モードを有効にした後に統合モードのTDEウォレットを構成するには、CDBルートでTDEウォレットを作成して開き、このTDEウォレットのマスター暗号化キーを作成します。その後、CDB環境全体からアクセスできる表と表領域のデータの暗号化を開始できます。
V$ENCRYPTION_WALLET
動的ビューでは、TDEウォレットのステータスと場所が示されます。たとえば、次の問合せでは、CDBルートのTDEウォレット(CON_ID 1
)の開閉ステータスとTDEウォレットの場所、およびそれに関連付けられている統一モードのPDBが表示されます。WRL_PARAMETER
列では、CDBルートのTDEウォレットの場所がWALLET_ROOT/tde
ディレクトリ内にあることが示されています。
SELECT CON_ID, STATUS, WRL_PARAMETER FROM V$ENCRYPTION_WALLET; CON_ID STATUS WRL_PARAMETER ------ ------ ----------------------------- 1 OPEN /app/oracle/wallet/tde/ 2 CLOSED 3 OPEN 4 OPEN 5 OPEN
この出力では、このCDB内の他のPDBに対してキーストアのパスはリストされていません。それらのPDBは、CDBルート内のキーストアを使用するからです。これらのいずれかのPDBが分離されており、分離モードのPDBでキーストアを作成した場合は、この問合せを実行したときに、WRL_PARAMETER
列で分離モードのPDBのキーストア・パスが示されます。
セキュアな外部パスワード・ストアでTDEウォレット・パスワードを非表示にできます:
ADMINISTER KEY MANAGEMENT ADD SECRET 'TDE_wallet_password'
FOR CLIENT 'TDE_WALLET' INTO [LOCAL]
AUTO_LOGIN KEYSTORE 'WALLET_ROOT/tde_seps';
この機能では、パスワードをオペレーティング・システムから隠すことができます。それにより、終夜のバッチ・スクリプトなどのユーザーの操作なしにデータベースにアクセスできるスクリプトや他のツールにクリアテキスト・キーストア・パスワードを保存する必要がなくなります。このウォレットの場所は、wallet_root/tde_seps
です。マルチテナント環境では、ADMINISTER KEY MANAGEMENT
文をIDENTIFIED BY EXTERNAL STORE
句を使用して実行すると、様々なPDBがこの外部ストアの場所にアクセスできます。このように、パスワードをまとめて配置すると、パスワードの更新は外部ストアで一度のみで済みます。
3.4.2 ステップ1: TDEウォレットの作成
TDEウォレットのディレクトリの場所を指定すると、このウォレットを作成できるようになります。
3.4.2.1 TDEウォレットの作成について
TDEウォレットには異なる3つのタイプがあります。
パスワードで保護されたTDEウォレット、自動ログインTDEウォレットおよびローカル自動ログインTDEウォレットを作成できます。
問合せSELECT * FROM V$ENCRYPTION_WALLET
を実行すると、自動ログインTDEウォレットが自動的に開かれることに注意してください。たとえば、パスワードで保護されたTDEウォレットと、自動ログインTDEウォレットがあるとします。パスワードで保護されたTDEウォレットが開いているときに、そのパスワードで保護されたTDEウォレットを閉じてからV$ENCRYPTION_WALLET
ビューを問い合せると、TDEウォレットは開いていると出力に示されます。ただし、これはV$ENCRYPTION_WALLET
が自動ログインTDEウォレットを開いて、その自動ログイン・ウォレットのステータスを表示したためです。
関連トピック
3.4.2.2 パスワードで保護されたTDEウォレットの作成
パスワード保護されたTDEウォレットには、TDEマスター・キーを保護するために使用するパスワードが必要です。統一モードでは、CDBルート内にTDEウォレットを作成する必要があります。
ADMINISTER KEY MANAGEMENT
文を使用します。
ewallet.p12
ファイルが、指定されたTDEウォレットの場所に生成されます。たとえば、WALLET_ROOT
パラメータを/etc/ORACLE/KEYSTORES/${ORACLE_SID}
に設定し、TDE_CONFIGURATION
パラメータをFILE
(TDEの場合、ウォレットのルートの場所にtde
ディレクトリが作成されます)に設定した場合、TDEウォレットは、/etc/ORACLE/KEYSTORES/${ORACLE_SID}/tde
ディレクトリに作成されます。TDEウォレットの名前はewallet.p12
です。
関連トピック
3.4.2.3 自動ログインTDEウォレットまたはローカル自動ログインTDEウォレットの作成
パスワード保護されたTDEウォレットにかわる方法として、自動ログインTDEウォレットまたはローカル自動ログインTDEウォレットのいずれかを作成できます。
次のガイドラインに従ってください。
- 自動ログインTDEウォレット(
.sso
ファイル)の作成後は、PKCS#12
ウォレット(ewallet.p12
ファイル)は削除しないでください。将来、TDEマスター暗号化キーを再生成またはキー更新するには、PKCS#12
ウォレットが必要です。 - 透過的データ暗号化では、正しい場所(
WALLET_ROOT/tde
)で使用可能な場合にのみ自動ログインTDEウォレットが使用され、暗号化されたTDEウォレットを開くためのSQL文がまだ実行されていないことに注意してください。ENCRYPTION_WALLET_LOCATION
パラメータが設定されている場合、このパラメータは非推奨となったことに注意してください。Oracleでは、かわりにWALLET_ROOT
静的初期化パラメータおよびTDE_CONFIGURATION
動的初期化パラメータを使用することをお薦めします。
3.4.3 ステップ2: TDEウォレットを開く
作成したTDEウォレットのタイプに応じて、使用する前にウォレットを手動で開く必要があります。
3.4.3.1 TDEウォレットのオープンについて
パスワードで保護されたTDEウォレットは、そのウォレット内でのTDEマスター暗号化キーの作成やアクセスが可能になるように開いておく必要があります。
透過的データ暗号化の多くの操作は、TDEウォレットが開いていることを必要とします。TDEウォレットは、次の2つの方法で開くことができます:
-
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
文を発行して、手動でウォレットを開きます。その後、操作を実行できます。 -
操作を実行するために使用される
ADMINISTER KEY MANAGEMENT
文にFORCE KEYSTORE
句を含めます。FORCE KEYSTORE
は、操作の間にTDEウォレットを一時的に開きます。その操作が完了すると、TDEウォレットは再度閉じられます。FORCE KEYSTORE
は、データベースの負荷が高い場合に役に立ちます。このシナリオでは、データベース内の暗号化されたオブジェクトへの同時アクセスにより、自動ログインTDEウォレットは閉じられた直後に、ユーザーがパスワードベースのTDEウォレットを開く機会を得る前に続けて開かれます。
TDEウォレットのステータスには、開いている、閉じている、開いていてもマスター暗号化キーがない、開いていても不明なマスター暗号化キーがある、定義されていない、または使用できない(つまりWALLET_ROOT/tde
の場所にない)というものがあります。
手動でTDEウォレットを開くと、そのウォレットは手動で閉じるまで開いたままになります。PDBまたはCDBを再起動するたびに、パスワードTDEウォレットを手動で開いて暗号化と復号化の操作を再有効化する必要があります。
TDEウォレットが開いているかどうかのステータスは、V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せると確認できます。
3.4.4 ステップ3: TDEウォレットでのTDEマスター暗号化キーの設定
TDEウォレットを開くと、そのウォレットに対するTDEマスター暗号化キーを設定できるようになります。
3.4.4.1 TDEウォレットTDEマスター暗号化キーの設定について
TDEマスター暗号化キーはTDEウォレットに格納されます。
TDEマスター暗号化キーでは、TDE表キーと表領域暗号化キーを保護します。デフォルトでは、TDEマスター暗号化キーは、TDEによって生成されるキーです。V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せることで、TDEウォレットにTDEマスター暗号化キーが設定されていないかどうか、または不明なTDEマスター暗号化キーがあるかどうかを確認できます。
データベースの外部で作成されたマスター暗号化キーをTDEウォレットにインポートできます(独自のキー持込み(BYOK))。すぐに使用するためにキーを設定するか(ADMINISTER KEY MANAGEMENT SET
を使用)後で使用するためにキーを作成し(ADMINISTER KEY MANAGEMENT CREATE KEY
を使用)、ADMINISTER KEY MANAGEMENT USE KEY
文でそれをアクティブ化することができます。
3.5 統一モードのPDBで許可されない操作
統一モードのPDBで許可されないADMINISTER KEY MANAGEMENT
操作は、CDBルートで実行できます。
操作は次のとおりです。
-
キーストアの操作:
-
キーストアでのマージ操作の実行
-
キーストアのエクスポート
-
キーストアのインポート
-
キーストアの移行
-
キーストアの逆移行
-
PDBのキーストアへのCDBルートにあるキーストアのキーの移動
-
CDBルートにある統一モードのキーストアへのPDBにあるキーの移動
-
-
暗号化キーの操作:
-
CONTAINER = ALL
句を使用した、各プラガブル・データベース(PDB)での後から使用する新しいTDEマスター暗号化キーの作成
-
-
クライアント・シークレットの操作:
-
クライアント・シークレットの追加
-
クライアント・シークレットの更新
-
クライアント・シークレットの削除
-
3.6 統一モードのPDBによるコンテナ・データベースのOracle Key Vault用の構成
すべての統一モードのPDBとCDBのTDEマスター・キーは、Oracle Key Vault内の同じ仮想ウォレットに存在します。
3.6.1 統一モードのPDBによるコンテナ・データベースのOracle Key Vault用の構成について
Oracle Key Vaultは、最大かつ最も多様なOracleデータベース・デプロイメントでも、TDEマスター・キー管理専用に構築された、耐障害性が高くスケーラブルで、継続的に利用可能なキーおよびシークレット管理プラットフォームです。
外部キーストアはOracleデータベースの外部にあります。Oracleデータベースは外部キーストアとのインタフェースをとることができますが、Oracleインタフェースの外部でそれらを操作することはできません。Oracleデータベースは外部キーストアにキーの作成をリクエストできますが、このキーが外部データベースに格納される方法を定義することはできません。外部キーストアの例は、Oracle Key Vaultキーストアです。サポートされている外部キーストアは、Oracle Key VaultおよびOracle Cloud Infrastructure Vaultです。(反対に、TDEを使用して作成されるTDEウォレットの場合は、Oracleデータベースが完全な制御権限を持ちます。つまり、SQL文を使用してこのタイプのキーストアを操作できます。)
外部キーストアを構成するには、まずTDE_CONFIGURATION
パラメータ設定にキーストア・タイプを定義し、外部キーストアを構成して開き、最初のTDEマスター暗号化キーを外部キーストアに設定する必要があります。要するに、データベースごとに1つの外部キーストアがあり、データベースは、TDE_CONFIGURATION
パラメータで定義されているキーストア・タイプを確認することでこのキーストアを見つけます。
3.6.2 統一モードのPDBによるコンテナ・データベースのOracle Key Vault用の構成について
統一モードの場合は、コンテナ・データベース(CDB)のWALLET_ROOT
パラメータとTDE_CONFIGURATION
パラメータを設定することで、Oracle Key Vaultを構成できます。
新しいデプロイメントにパラメータWALLET_ROOT
およびTDE_CONFIGURATION
を設定することをお薦めします。あるいは、sqlnet.ora file
の古い構成から、できるだけ早く(四半期ごとのバンドル・パッチを次に適用するときなど)、WALLET_ROOT
およびTDE_CONFIGURATION
を使用して新しい構成に移行できます。
統一モードは、Oracle Databaseリリース12.1.0.2以降でsqlnet.ora
のTDE構成で使用されるデフォルトのTDE設定です。Oracle Databaseリリース18c以降では、sqlnet.ora
のTDE構成は非推奨です。まず、静的初期化パラメータWALLET_ROOT
を既存のディレクトリに設定する必要があります。この変更が取得されるには、データベースの再起動が必要です。再起動後、動的TDE_CONFIGURATION
パラメータのKEYSTORE_CONFIGURATION
属性をOKV
(Oracle Key Vaultへのパスワードで保護された接続の場合)、またはOracle Key Vaultへの自動オープン接続の場合はOKV|FILE
に設定し、構成済の外部キーストアを開いてから、TDEマスター暗号化キーを設定します。これらのタスクを完了すると、データベース内のデータを暗号化できるようになります。
3.6.3 ステップ1: 統一モード用のOracle Key Vaultの構成
統一モードPDB用のOracle Key Vaultは、コンテナ・データベース(CDB)のWALLET_ROOT
パラメータとTDE_CONFIGURATION
パラメータを設定することで構成できます。
3.6.4 ステップ2: Oracle Key Vaultへの接続のオープン
TDEキー管理にOracle Key Vaultを使用するようにデータベースを構成したら、使用前にOracle Key Vaultへの接続を開く必要があります。
3.6.4.1 Oracle Key Vaultへの接続のオープンについて
暗号化または復号化を実行する前に、Oracle Key Vaultへの接続を開いてデータベースがアクセスできるようにしておく必要があります。
データベースにリカバリ操作が必要な場合(たとえば、正常に停止しなかったデータベースにリカバリが必要な暗号化された表領域がある場合)、データベース自体を開く前にOracle Key Vaultへの接続を開いておく必要があります。
Oracle Key Vaultの接続を開くには、次の2つの方法があります:
-
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
文を発行して、キーストアを手動で開きます。その後、操作を実行できます。 -
ADMINISTER KEY MANAGEMENT
文にFORCE KEYSTORE
句を含めます。FORCE KEYSTORE
は操作中にキーストアを一時的に開き、操作が完了すると、キーストアは再度閉じられます。FORCE KEYSTORE
は、データベースの負荷が高い場合に役に立ちます。このシナリオでは、データベース内の暗号化されたオブジェクトへの同時アクセスにより、自動ログイン・キーストアは、閉じられた直後でユーザーがパスワードベースのキーストアを開く機会を持つ前に開かれ続けます。
キーストアのステータスを確認するには、V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せます。キーストアには、CLOSED
、NOT_AVAILABLE
(つまりWALLET_ROOT
の場所にない)、OPEN
、OPEN_NO_MASTER_KEY
、OPEN_UNKNOWN_MASTER_KEY_STATUS
というステータスがあります。
外部キーストアの場合は、データベースがマウント状態だと、データ・ディクショナリを使用できないため、マスター・キーが設定されているかどうかを確認できないということに注意してください。この場合、ステータスはOPEN_UNKNOWN_MASTER_KEY_STATUS
になります。
関連トピック
3.6.5 ステップ3: Oracle Key VaultでのTDEマスター暗号化キーの設定
Oracle Key Vaultへの接続を開くと、TDEマスター暗号化キーを設定する準備が整います。
3.6.5.1 外部キーストアのTDEマスター暗号化キーの設定について
外部キーストア内に格納されたTDEマスター暗号化キーを作成する必要があります。
Oracle Databaseは、Oracle Key VaultまたはOracle Cloud Infrastructure (OCI)キー管理サービス(KMS)のマスター暗号化キーを使用して、データベース内部のTDE表キーまたは表領域暗号化キー(データ暗号化キー)を暗号化または復号化します。
これまでにウォレットによるTDEを構成したことがない場合は、Oracle Key VaultまたはOCI KMSでマスター暗号化キーを設定する必要があります。すでにウォレットによるTDEを構成していた場合は、データベースをOracle Key VaultまたはOCI KMSに移行する必要があります。
現行のマスター暗号化キーとともに、すべてのTDEキーストア(TDEウォレット、Oracle Key VaultおよびOCI KMS)は、マスター暗号化キーをキー更新するキー更新操作のたびに生成される履歴マスター暗号化キーを保持します。こうした履歴マスター・キーにより、以前にいずれかの履歴マスター暗号化キーを使用して作成されたOracle Databaseのバックアップをリストアできます。Oracle Key Vaultを使用するようにデータベースを移行する前に、TDEウォレットからすべての履歴キーをアップロードできるのはOracle Key Vaultのみです。Oracle Key Vaultへの移行後には、TDEウォレットを削除できます。これにより、暗号化サーバーに暗号化キーが存在することを許可しないというセキュリティ規則を満たします。
3.6.5.2 外部キーストアのハートビート・バッチ・サイズ
各ハートビート期間中に発行されるハートビートのバッチのサイズを制御できます。
PDBが外部キー・マネージャを使用するように構成されている場合、GEN0
バックグラウンド・プロセスは、PDBのかわりに外部キー・マネージャへのハートビート・リクエストを実行する必要があります。このバックグラウンド・プロセスにより、外部キー・マネージャが使用可能であり、PDBのTDEマスター暗号化キーが外部キー・マネージャから使用可能であり、暗号化と復号化の両方に使用できることが確認されます。GEN0
バックグラウンド・プロセスは、ハートビート期間(デフォルトは3秒)内にこのリクエストを完了する必要があります。
外部キー・マネージャを使用するように非常に多数のPDB (1000など)が構成されている場合は、ハートビートをバッチ処理するようにHEARTBEAT_BATCH_SIZE
データベース・インスタンス初期化パラメータを構成することで、割り当てられたハートビート期間内に各PDBに対してハートビートを実行する時間がなかった場合に、ハング・アナライザがGEN0
プロセスが停止していると誤ってフラグを設定する可能性を軽減できます。
ハートビート・バッチ・サイズを設定することで、PDBのバッチ間でハートビートをずらして、ハートビート期間中にバッチ内の各PDBに対してバッチごとにハートビートを完了できるようにしたり、PDBマスター暗号化キーをOracle Key Vaultサーバーから確実にフェッチしてOracle Key Vault永続キャッシュにキャッシュできるようにすることができます。HEARTBEAT_BATCH_SIZE
パラメータは、ハートビート期間ごとに外部キー・マネージャに送信されるハートビートのバッチのサイズを構成します。値は2から100の間にする必要があり、デフォルトは5です。ハートビート期間のデフォルトの期間は3秒です。
たとえば、500個のPDBが構成されており、Oracle Key Vaultを使用している場合、GEN0
が単一のPDBのかわりにハートビートを実行するのに要した通常の時間は、0.5秒未満です。また、CDB$ROOT
が、Oracle Key Vault (OKV
)などの外部キー・マネージャを使用するように構成されているとします。したがって、通常は、3秒のハートビート期間ごとに5つのハートビート(CDB$ROOT
に1つと、4つのPDBバッチに4つ)を単一のバッチで送信できます。
HEARTBEAT_BATCH_SIZE
パラメータで1つのバッチで送信されるハートビートの数を構成しても、CDB$ROOT
が外部キー・マネージャを使用するように構成されている場合は、各ハートビート・バッチにCDB$ROOT
のハートビートが含まれている必要があります。HEARTBEAT_BATCH_SIZE
パラメータの最小値は2、最大値は100です。CDB$ROOT
が外部キー・マネージャを使用するように構成されている場合、ハートビートの各バッチにはCDB$ROOT
用にハートビート1つが含まれます。このため、最小バッチ・サイズは2になります。外部キー・マネージャを使用するように構成されている可能性があるため、CDB$ROOT
用に1つ予約する必要があります。
たとえば、HEARTBEAT_BATCH_SIZE
パラメータを次のように設定するとします。
ALTER SYSTEM SET HEARTBEAT_BATCH_SIZE=3 SCOPE=BOTH SID='*';
各反復は、GEN0
の3秒間のハートビート期間1つに対応します。
例1: Oracle Key Vaultを使用するように構成されたコンテナのハートビートの設定
コンテナ・リストが1 2 3 4 5 6 7 8 9 10で、すべてのコンテナがOracle Key Vault (OKV
)を使用するように構成されているとします。反復は次のとおりです。
- 反復1: バッチを構成するコンテナ: 1 2 3
- 反復2: バッチを構成するコンテナ: 1 4 5
- 反復3: バッチを構成するコンテナ: 1 6 7
- 反復4: バッチを構成するコンテナ: 1 8 9
- 反復5: バッチを構成するコンテナ: 1 10
- このサイクルを繰り返します。
例2: キーストアが異なる分離されたPDBのハートビートの設定(Oracle Key Vaultのルート・コンテナ)
この例では、コンテナ・リストは1 2 3 4 5 6 7 8 9 10であり、奇数のPDBのみがOKVを使用するように構成され、偶数のPDBはTDEウォレット(FILE
)を使用するように構成されています。
- 反復1: バッチを構成するコンテナ: 1 3 5
- 反復2: バッチを構成するコンテナ: 1 7 9
- 反復3: バッチを構成するコンテナ: 1
- このサイクルを繰り返します。
例3: キーストアが異なる分離されたPDBのハートビートの設定(TDEウォレットのルート・コンテナ)
コンテナ・リストが1 2 3 4 5 6 7 8 9 10で、偶数のコンテナ番号のみがOracle Key Vaultを使用するように構成され、奇数のコンテナがFILE
を使用するように構成されているとします。次の例では、FILE
を使用するように構成されているため、CDB$ROOT
のハートビートはありません。
- 反復1: バッチを構成するコンテナ: 2 4 6
- 反復2: バッチを構成するコンテナ: 8 10
- このサイクルを繰り返します。
3.6.5.3 外部キーストアの統一モードPDBのTDEマスター暗号化キーの設定
PDBが統一モードに設定されている場合にキーストアのTDEマスター暗号化キーを設定するには、SET KEY
句を指定して、ADMINISTER KEY MANAGEMENT
文を使用します。
3.6.5.4 暗号化されたデータベースのTDEウォレットからOracle Key VaultまたはOCI KMSへの移行
TDEウォレットからOracle Key VaultまたはOracle Cloud Infrastructure (OCI)キー管理サービス(KMS)による集中型キー管理に切り替えるには、現行およびリタイア済のすべてのTDEマスター・キーをアップロードした後で、TDEウォレットからOracle Key VaultまたはOCI KMSにデータベースを移行する必要があります。
Oracle Data PumpやOracle Recovery Managerなどのツールは、TDEウォレットを使用してエクスポートまたはバックアップしたデータに復号化と暗号化の操作を実行するために、古いTDEウォレットにアクセスする必要があります。現在のマスター暗号化キーともに、Oracleキーストアでは、マスター暗号化キーをローテーションするキーの更新操作のたびに生成される履歴マスター暗号化キーを保持します。これらの履歴マスター暗号化キーにより、履歴マスター暗号化キーのいずれかを使用して、以前に作成されたOracleデータベースのバックアップをリストアできます。