3 統一モードの構成

統一モードでは、CDB、およびキーストアが統一モードになっているPDBの共通のキーストアを作成できます。

CDBおよびPDBのキーは共通キーストアに格納されます。

3.1 統一モードの構成について

統一モード(デフォルト)では、キーストアはCDBルートと、統一モードで構成されているすべてのPDB間で共有されます。統一モードの各PDBには、共有キーストアに独自のマスター暗号化キーのセットがあります。

統一モードのキーストアを持つPDBのキーは、CDBルートまたはPDBから作成できます。

この設計により、1つのキーストアでCDB環境全体を管理し、PDBでそのキーストアを共有できますが、個々の統一モードのPDBでこのキーストアの動作をカスタマイズできます。たとえば、統一モードのPDBでは、CDBルートで作成した統合キーストア内のPDB用のTDEマスター暗号化キーを構成し、キーストアをローカルで開き、キーストアをローカルで閉じることができます。これらのアクションを実行するには、CDBルートのキーストアが開いている必要があります。

統一モードまたは分離モードを使用するように環境を構成する前は、CDB環境内のすべてのPDBは、統一モードであるとみなされます。

統一モードを使用するには、次の一般的なステップに従う必要があります。

  1. CDBルートで、WALLET_ROOTパラメータとTDE_CONFIGURATIONパラメータを設定することで、統一モードを使用するようにデータベースを構成します。

    WALLET_ROOTパラメータは、ウォレット・ディレクトリの場所を設定し、TDE_CONFIGURATIONパラメータは、使用するキーストアのタイプを設定します。

  2. 静的初期化パラメータWALLET_ROOTの設定後にデータベースを再起動してから、動的初期化パラメータTDE_CONFIGURATIONを設定します。

  3. CDBルートで、キーストアを作成し、キーストアを開き、TDEマスター暗号化キーを作成します。

  4. 統一モードの各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で使用できます。CONTAINER句を含めないでください。

キーストアを開く

ADMINISTER KEY MANAGEMENT 
SET KEYSTORE OPEN
IDENTIFIED BY
[EXTERNAL STORE | keystore_password]
[CONTAINER = ALL | CURRENT];

この操作のEXTERNAL STORE句では、WALLET_ROOT/tde_sepsディレクトリにあるSSOウォレットからキーストア・パスワードがフェッチされます。

キーストア・パスワードの変更

ADMINISTER KEY MANAGEMENT 
ALTER KEYSTORE PASSWORD
IDENTIFIED BY old_keystore_password
SET new_keystore_password WITH BACKUP 
[USING 'backup_identifier'];

CONTAINER句を含めないでください。

キーストアのバックアップ

ADMINISTER KEY MANAGEMENT
BACKUP KEYSTORE 
[USING 'backup_identifier']
[FORCE KEYSTORE]
IDENTIFIED BY [EXTERNAL STORE | keystore_password]
[TO 'keystore_location'];

CONTAINER句を含めないでください。

強制せずにキーストアを閉じる

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]

-

今すぐ(SET)または後から(CREATE)ユーザー定義のTDEマスター暗号化キーを作成する

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'];

CONTAINER句を含めないでください。

TDEマスター暗号化キーのタグ付け

ADMINISTER KEY MANAGEMENT 
SET TAG 'tag' FOR 'key_id'
IDENTIFIED BY [EXTERNAL STORE | keystore_password ]
WITH BACKUP 
[USING 'backup_identifier'];

CONTAINER句を含めないでください。

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のキーストアに移動することはできず、その逆もできません。

CONTAINER句を含めないでください。

統一モードの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];

この操作では、EXTERNAL_STORE句でTDE SEPS SSOウォレット内のパスワードが使用されます。このウォレットは、WALLET_ROOTの場所のtde_sepsディレクトリにあります。

強制せずにキーストアを閉じる

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];

-

今すぐ(SET)または後から(CREATE)使用するユーザー定義のTDEマスター暗号化キーを作成する

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'];

CONTAINER句を含めないでください。

TDEマスター暗号化キーのタグ付け

ADMINISTER KEY MANAGEMENT
SET TAG 'tag' FOR 'key_id'
[FORCE KEYSTORE]
IDENTIFIED BY EXTERNAL STORE | keystore_password
WITH BACKUP [USING 'backup_identifier'];

CONTAINER句を含めないでください。

暗号化キーを新しいキーストアに移動する

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'];

CONTAINER句を含めないでください。

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];

CONTAINER句を含めないでください。

PDBのクローンが分離されているTDEマスター暗号化キーを使用している場合にFORCE句を使用し、CDBルート内のキーストアのTDEマスター暗号化キーをPDBの分離モードのキーストアに(移動するのではなく)コピーする

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を設定できます。

  1. OracleデータベースのCDBルートが存在するデータベース・サーバーにログインします。
  2. 必要に応じて、ウォレット・ディレクトリを作成します。
    このディレクトリにはウォレットを含めることはできません。オペレーティング・システム・レベルのバックアップ中に暗号化されたデータベースでキーストア(ウォレットまたはOracle Key Vaultインストール・ツリー)をバックアップしないように、 $ORACLE_HOMEまたは$ORACLE_BASEの外部にディレクトリを作成することをお薦めします。
  3. ALTER SYSTEM 権限が付与されている一般ユーザーとして、CDBルートに接続します。
  4. 次のALTER SYSTEM文を実行します:
    ALTER SYSTEM SET WALLET_ROOT='/etc/ORACLE/KEYSTORES/${ORACLE_SID}' SCOPE = SPFILE;
  5. CDBを再起動します。
    SHUTDOWN IMMEDIATE
    STARTUP
  6. CDBルートで、WALLET_ROOT設定を確認します。
    SHOW PARAMETER WALLET_ROOT

    出力のVALUE列に、walletディレクトリの絶対パスの場所が示されるはずです。たとえば:

    wallet_root string /etc/ORACLE/KEYSTORES/finance
  7. 次の構文を使用して、TDE_CONFIGURATION動的初期化パラメータを設定してキーストアのタイプを指定します。
    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=keystore_type" 
    SCOPE=BOTH;

    ここでは次のように指定します。

    • keystore_typeには、次のいずれかに設定できます:

      • FILE。TDEキーストアを構成します。

      • OKV。Oracle Key Vaultキーストアを構成します。

    • scope_typeはスコープのタイプを設定します。この場合は、BOTHです。

    サーバー・パラメータ・ファイル(spfile)を使用している場合にTDEキーストアを構成するには:

    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE" 
    SCOPE=BOTH SID = '*';
  8. TDE_CONFIGURATIONパラメータの設定を確認します。
    SHOW PARAMETER TDE_CONFIGURATION
    

    VALUE列に、KEYSTORE_CONFIGURATION=が前に付加されたキーストア・タイプが示されるはずです。

  9. TDE_CONFIGURATIONパラメータが正しく設定されていることを確認します。
    SELECT CON_ID, KEYSTORE_MODE FROM V$ENCRYPTION_WALLET;
    出力は次のようになります。
        CON_ID KEYSTORE
    ---------- --------
             1 NONE
             2 UNITED
             3 UNITED
             4 UNITED
             5 UNITED
    
    CDBルート(CON_ID 1)は常にNONE状態になり、この段階で、残りのCON_IDUNITEDに設定されているはずです。PDBは、どのように構成したのかに応じて、UNITEDまたはISOLATEDのいずれかです。V$ENCRYPTION_WALLETビューを問い合せると、「ORA-46691: KEYSTORE_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ウォレットを作成する必要があります。

CDBルートでこのTDEウォレットを作成すると、すべての統合PDBで使用可能になりますが、分離されたPDBでは使用できなくなります。
TDEウォレットには、TDE関連のセキュリティ・オブジェクトのみを含めることができ、他のデータベースまたはアプリケーション・コンポーネントによって使用されるセキュリティ・オブジェクトを含めることはできません。また、orapkiまたはmkstoreを使用して、パスワード保護または(ローカル)自動オープンTDEウォレットを作成しないでください。かわりに、ADMINISTER KEY MANAGEMENT文を使用します。
  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与された一般ユーザーとして、CDBルートに接続します。
  2. SHOW PARAMETERコマンドを使用して、WALLET_ROOTが設定され、TDE_CONFIGURATIONKEYSTORE_CONFIGURATION=FILEに設定されていることを確認します。
  3. 次の構文を使用して、ADMINISTER KEY MANAGEMENT SQL文を実行してTDEウォレットを作成します:
    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 
    IDENTIFIED BY TDE_wallet_password;

    /tdeディレクトリが存在していない場合は、WALLET_ROOTの下に自動的に作成されます。Oracle Automatic Storage Management (Oracle ASM)で、/tdeディレクトリがまだ存在しない場合は自動的に作成されるように、WALLET_ROOT+DATA/ORACLE_UNQNAMEを指している必要があります。

    この指定では、TDE_wallet_passwordは、セキュリティ管理者が作成するTDEウォレットのパスワードです。

    たとえば、WALLET_ROOT/tdeディレクトリにTDEウォレットを作成するには、次のようにします:

    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY TDE_wallet_password;
    
    keystore altered.

    この文を実行すると、TDEウォレットであるewallet.p12ファイルがウォレットの場所に生成されます。

これらのステップを完了すると、TDEウォレットを含む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ウォレットには、どちらもシステム生成パスワードがあります。これらは、PKCS#12ベースのファイルでもあります。自動ログインTDEウォレットは、このTDEウォレットが存在するコンピュータとは異なるコンピュータから開くことができますが、ローカル自動ログインTDEウォレットは、そのウォレットが作成されたコンピュータからしか開けません。自動ログインとローカル自動ログインの両方のTDEウォレットは、パスワードで保護されたTDEウォレットから作成されます。これらのいずれを作成しても、データベースの停止時間は不要です。
  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与された一般ユーザーとして、CDBルートに接続します。
  2. SHOW PARAMETERコマンドを使用して、WALLET_ROOTが設定され、TDE_CONFIGURATIONKEYSTORE_CONFIGURATION=FILEに設定されていることを確認します。
  3. 次の構文を使用して、自動ログインTDEウォレットまたはローカル自動ログインTDEウォレットを作成します:
    ADMINISTER KEY MANAGEMENT CREATE [LOCAL] AUTO_LOGIN KEYSTORE 
    FROM KEYSTORE IDENTIFIED BY TDE_wallet_password;

    ここでは次のように指定します。

    • LOCALを使用すると、ローカル自動ログインTDEウォレットを作成できます。そうでない場合、TDEウォレットに別のコンピュータからアクセスできるようにするときには、この句を省略します。LOCALを指定すると、ローカル自動ログイン・ウォレット・ファイルcwallet.ssoが作成され、このウォレットはそれが作成されたホストに関連付けられます。Oracle Real Application Clusters (Oracle RAC)環境の場合は、Oracle RACノードごとにホスト名が異なるため、LOCALキーワードを省略します。Oracle RACインスタンスのローカル自動ログイン・ウォレットを構成した場合は、cwallet.ssoファイルが作成された最初のOracle RACノードのみ、TDEウォレットにアクセスできます。最初のノードからではなく別のノードからTDEウォレットを開こうとすると、cwallet.ssoが自動的に開かれるという問題が発生するため、TDEウォレットを自動で開くことができなくなります。この制限事項が当てはまるのは、Oracle RACクラスタのcwallet.ssoファイルの保持に共有の場所を使用している場合です。これは、LOCALの使用が有効なのは、Oracle RAC環境の各ノードに別個のcwallet.ssoファイル(同じ資格証明を含む)がある場合のみであるためです。

    • TDE_wallet_passwordは、作成するTDEウォレットのパスワードです。

    たとえば、<WALLET_ROOT>/tdeディレクトリにある、パスワードで保護されたTDEウォレットの自動ログインTDEウォレットを作成するには:

    ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE 
    FROM KEYSTORE IDENTIFIED BY password;
    
    keystore altered.

    この文を実行した後、cwallet.ssoファイルがTDEウォレットの場所に表示されます。ewallet.p12ファイルがパスワード保護されたウォレットです。

次のガイドラインに従ってください。

  • 自動ログイン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.3.2 統一モードのPDBでTDEウォレットを開く

統一モードでTDEウォレットを開くには、ADMINISTER KEY MANAGEMENT文をSET KEYSTORE OPEN句とともに使用する必要があります。

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与された一般ユーザーとして、CDBルートに接続します。
  2. CDBルートでTDEウォレットを開きます。
    たとえば:
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY password;
    
    keystore altered.

    このCDBがWALLET_ROOT/tde_sepsに格納されたTDEウォレット・パスワードで構成されていて、WALLET_ROOT/tdeに(ローカル)自動ログインTDEウォレットがある場合は、次に示すように、FORCE KEYSTORE句とIDENTIFIED BY EXTERNAL STORE句をADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN文に含める必要があります:

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    FORCE KEYSTORE 
    IDENTIFIED BY EXTERNAL STORE;
    
    keystore altered.

    WALLET_ROOTパラメータが設定されている場合、Oracle DatabaseはWALLET_ROOT/tde_sepsディレクトリ内の外部ストアを検索します。

  3. TDEウォレットを開くPDBがREAD WRITEモードになっていることを確認してください。
    たとえば:
    SHOW PDBS
    
    CON_ID CON_NAME   OPEN MODE    RESTRICTED
    ------ ---------- ------------ -----------
    2      PDB$SEED   READ ONLY    NO
    3      CDB1_PDB1  READ WRITE   NO

    いずれかのPDBに、READ WRITEとは異なるOPEN MODE値が設定されている場合、次の文を実行してPDBを開くと、READ WRITEモードに設定されます。

    ALTER PLUGGABLE DATABASE CDB1_PDB1 OPEN;

    この時点で、CDBルートとPDBの両方でTDEウォレットを開くことができます。

  4. PDBに接続します。
  5. ADMINISTER KEY MANAGEMENT文を実行してTDEウォレットを開きます。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY TDE_wallet_password | EXTERNAL STORE;
    keystore altered.

    (ローカル)自動ログインTDEウォレットが開いているときにパスワードで保護されたTDEウォレットを開くには、FORCE KEYSTORE句を次のように指定します。

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    FORCE KEYSTORE 
    IDENTIFIED BY TDE_wallet_password | EXTERNAL STORE;
    keystore altered.

    FORCE KEYSTOREは、負荷が高いデータベースにも役立ちます。TDEウォレット資格証明が外部ストアに存在するため、この文にはIDENTIFIED BY EXTERNAL STORE句が含まれています。これにより、この文自体にTDEウォレットのパスワードを指定することなく、パスワードで保護されたTDEウォレットを開くことができます。

    WALLET_ROOTパラメータがCDBで設定されている場合、統一されたPDBはWALLET_ROOT/tde_sepsディレクトリ内の外部ストアを検索します。

  6. TDEウォレットが開いていることを確認します。
    SELECT STATUS FROM V$ENCRYPTION_WALLET;
TDEウォレットが開いていても、まだTDEマスター暗号化キーを作成していない場合は、V$ENCRYPTION_WALLETビューのSTATUS列のステータスがOPEN_NO_MASTER_KEYになっていることでわかります。

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.4.4.2 統一モードのTDEウォレットのTDEマスター暗号化キーの設定

PDBが統一モードで構成されている場合に、TDEウォレットのTDEマスター暗号化キーを設定するには、ADMINISTER KEY MANAGEMENT文をSET KEY句とともに使用します。

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与された一般ユーザーとして、CDBルートに接続します。
  2. CDBがREAD WRITEモードでオープンしていることを確認します。
    OPEN_MODEREAD WRITEに設定されている場合、TDEマスター暗号化キーを設定できます。ステータスを検索するには、V$DATABASE動的ビューのOPEN_MODE列を問い合せます。(このビューにアクセスできない場合は、SYSDBAとして接続し、問合せを再試行します。このタイプの問合せに対してSYSKMとして接続するには、これに対するパスワード・ファイルを作成する必要があります。)
  3. ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY文を実行して、TDEウォレットのTDEマスター暗号化キーを設定します。
    次の構文を使用します。
    ADMINISTER KEY MANAGEMENT SET KEY 
    [USING TAG 'tag'] 
    [FORCE KEYSTORE] 
    IDENTIFIED BY EXTERNAL STORE | TDE_wallet_password 
    WITH BACKUP [USING 'backup_identifier'];

    ここでは次のように指定します。

    • tagは、定義する関連の属性および情報です。この設定は、一重引用符(' ')で囲みます。
    • TDEウォレットが閉じている場合は、FORCE KEYSTOREを含める必要があります。これにより、TDEマスター暗号化キーを設定する前に、キーストアが自動的に開きます。また、FORCE KEYSTORE句は、自動ログインTDEウォレットが構成されていて現時点で開いているときには、パスワードで保護されたTDEウォレットを開くように切り替えます。

    • IDENTIFIED BYでは、TDEウォレットのパスワードを指定します。また、TDEウォレットのパスワードが外部ストアにある場合は、IDENTIFIED BY EXTERNAL STORE句を使用できます。

    • WITH BACKUPでは、TDEウォレットのバックアップを作成します。このオプションは、パスワードで保護されたTDEウォレットに対して使用する必要があります。オプションでUSING句を使用し、バックアップの簡単な説明を追加できます。この説明は一重引用符(' ')で囲みます。この識別子は名前付きのTDEウォレット・ファイルに付加されます(たとえば、ewallet_time_stamp_emp_key_backup.p12では、emp_key_backupがバックアップ識別子になっています)。オペレーティング・システムで使用されているファイル命名規則に従ってください。

    たとえば、TDEウォレットがパスワードで保護されていて、開いている場合に、現在のコンテナでTDEマスター暗号化キーを設定するには、次のようにします:

    ADMINISTER KEY MANAGEMENT SET KEY 
    IDENTIFIED BY EXTERNAL STORE | TDE_wallet_password 
    WITH BACKUP USING 'emp_key_backup';

    TDEウォレットが閉じている場合:は、次のように指定します:

    ADMINISTER KEY MANAGEMENT SET KEY 
    [USING TAG 'tag']
    FORCE KEYSTORE
    IDENTIFIED BY EXTERNAL STORE | TDE_wallet_password 
    WITH BACKUP USING 'emp_key_backup';
  4. TDEマスター暗号化キーが設定されていることを確認します。
    SELECT MASTERKEY_ACTIVATED FROM V$DATABASE_KEY_INFO;

    出力はYESとなっている必要があります。

3.4.5 ステップ4: 統一モードでのデータの暗号化

この時点で構成が完了しているため、データの暗号化を開始できます。

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パラメータを設定することで構成できます。

  1. WALLET_ROOTパラメータが設定されている場合は、Oracle Key Vaultクライアント・ソフトウェアをWALLET_ROOT/okvディレクトリにインストールします。
  2. ALTER SYSTEM管理権限が付与されたユーザーとして、データベース・インスタンスにログインします。
  3. TDE_CONFIGURATION動的初期化パラメータを設定して、次の構文を使用してキーストア・タイプを指定します。
    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=keystore_type" SCOPE=BOTH SID = '*';

    ここでは次のように指定します。

    • Oracle Key Vaultキーストアを構成する場合、keystore_typeOKVです。

    たとえば、Oracle Key Vaultを使用するようにデータベースを構成するには、次のようにします。

    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=OKV" 
    SCOPE=BOTH SID = '*";

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列を問い合せます。キーストアには、CLOSEDNOT_AVAILABLE(つまりWALLET_ROOTの場所にない)、OPENOPEN_NO_MASTER_KEYOPEN_UNKNOWN_MASTER_KEY_STATUSというステータスがあります。

外部キーストアの場合は、データベースがマウント状態だと、データ・ディクショナリを使用できないため、マスター・キーが設定されているかどうかを確認できないということに注意してください。この場合、ステータスはOPEN_UNKNOWN_MASTER_KEY_STATUSになります。

3.6.4.2 統一モードのPDBでのOracle Key Vault接続のオープン

統一モードでOracle Key Vault接続を開くには、ADMINISTER KEY MANAGEMENT文とともにSET KEYSTORE OPEN句を使用する必要があります。

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与された一般ユーザーとして、CDBルートに接続します。
  2. 次の構文を使用して、CDBルートのキーストアを開きます。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY EXTERNAL STORE | "Oracle_Key_Vault_password" 
    [CONTAINER = ALL | CURRENT];

    ここでは次のように指定します。

    • IDENTIFIED BYは次のいずれかの設定にできます。

      • EXTERNAL STOREは、外部ストアに格納されたキーストア・パスワードを使用して、キーストア操作を実行します。

      • Oracle_Key_Vault_passwordは、Oracle Key Vaultクライアントのインストール時に指定したOracle Key Vaultのパスワードです。パスワードが指定されていない場合、ADMINISTER KEY MANAGEMENT文のパスワードはNULLになります。このパスワードは二重引用符で囲みます。

    • CONTAINERでは、Oracle Key Vault接続を開くスコープを指定します。

      • ALLは、ルート・コンテナと開いているすべての統一PDBのために、Oracle Key Vaultへの接続を開きます。
      • CURRENTは、ルート・コンテナのためにOracle Key Vaultへの接続を開きます。

    パスワードにセミコロン(;)が含まれている場合は、そのパスワードを二重引用符で囲みます。

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY "Oracle_Key_Vault_password";
  3. キーストアを開くPDBが、READ WRITEモードになっていることを確認してください。
  4. PDBに接続し、ADMINISTER KEY MANAGEMENT文を実行してキーストアを開きます。
    たとえば:
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY "external_key_manager_password";
  5. キーストアが開いていることを確認します。
    SELECT STATUS FROM V$ENCRYPTION_WALLET;
  6. PDBを再起動するたびにこの手順を繰り返します。

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文を使用します。

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与された一般ユーザーとして、CDBルートに接続します。
  2. データベースがREAD WRITEモードでオープンしていることを確認します。

    OPEN_MODEREAD WRITEに設定されている場合、マスター暗号化キーを設定できます。マルチテナント環境以外の環境に関するステータスを検索するには、V$DATABASE動的ビューのOPEN_MODE列を問い合せます。マルチテナント環境の場合は、show pdbsコマンドを実行します。

  3. マスター暗号化キーのインメモリー・キャッシングを有効または無効にするには、TDE_KEY_CACHE初期化パラメータを設定します。
    このオプション設定は、キー管理にOCIキー管理サービス(KMS)を使用するOracle Cloud Infrastructure (OCI)のデータベースでのみ使用できます。
    マスター暗号化キーのインメモリー・キャッシュを有効にすると、データ暗号化キーの復号化中にOCI KMSへの依存性を減らすのに役立ちます。マスター暗号化キーをデータベースに対してローカルにすることで、かわりにキー・サーバーをコールした場合に断続的なネットワークの問題が原因で発生する可能性がある障害を回避して、データベースの可用性を向上させることができます。TRUEに設定するとインメモリー・キャッシュが有効になり、FALSEに設定すると無効になります。
    ALTER SYSTEM SET TDE_KEY_CACHE = TRUE SCOPE=BOTH SID='*';
  4. ハートビート・バッチ・サイズを構成するには、HEARTBEAT_BATCH_SIZE初期化パラメータを設定します。
    HEARTBEAT_BATCH_SIZEパラメータは、ハートビート期間ごとに外部キー・マネージャに送信される「ハートビートのバッチ」のサイズを構成します。2 (ゼロ)から100の値を入力します。デフォルト値は5です。ハートビート期間のデフォルトの期間は3秒です。ハートビート・バッチ・サイズを設定することで、PDBのバッチ間でハートビートをずらして、ハートビート期間中にバッチ内の各PDBに対してバッチごとにハートビートを完了できるようにしたり、PDBのTDEマスター暗号化キーをOracle Key Vaultサーバーから確実にフェッチしてOracle Key Vault永続キャッシュにキャッシュできるようにすることができます。(HEARTBEAT_BATCH_SIZEの動作の詳細は、外部キーストアのハートビート・バッチ・サイズを参照してください。)
    ALTER SYSTEM SET HEARTBEAT_BATCH_SIZE=3 SCOPE=BOTH SID='*';
  5. ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY文を実行して、キーストアのTDEマスター暗号化キーを設定します。
    ADMINISTER KEY MANAGEMENT SET KEY 
    [USING TAG 'tag'] 
    [FORCE KEYSTORE] 
    IDENTIFIED BY [EXTERNAL STORE | "external_key_manager_password"];
    

    ここでは次のように指定します。

    • tagは、定義する関連の属性および情報です。この設定は、一重引用符(' ')で囲みます。

    • FORCE KEYSTOREは、この操作のためにパスワードで保護されたTDEウォレットを一時的に開きます。この操作のためには、TDEウォレットを開く必要があります。

    • IDENTIFIED BYは次のいずれかの設定にできます。

      • EXTERNAL STOREは、外部ストアに格納されたキーストア・パスワードを使用して、キーストア操作を実行します。

      • external_key_manager_passwordは、Oracle Key VaultまたはOCI Vault - Key Managementの外部キーストア・マネージャ用です。このパスワードは二重引用符で囲みます。Oracle Key Vaultの場合は、Oracle Key Vaultクライアントのインストール時に指定したパスワードを入力します。その時点でパスワードが指定されていない場合、ADMINISTER KEY MANAGEMENT文のパスワードはNULLになります。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEY 
    FORCE KEYSTORE 
    IDENTIFIED BY "external_key_manager_password";
    
    keystore altered.
  6. TDEマスター暗号化キーが設定されていることを確認します。
    SELECT MASTERKEY_ACTIVATED FROM V$DATABASE_KEY_INFO;

    出力はYESとなっている必要があります。

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データベースのバックアップをリストアできます。

3.6.6 ステップ4: 統一モードでのデータの暗号化

外部キーストアまたはOracle Key Vaultキーストアの構成が完了したので、データの暗号化を開始できます。