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 
['keystore_location']
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 OPEN
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 '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']];

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を設定して、ソフトウェア・キーストア、Oracle Key Vaultまたはその他の外部キーストアからそれぞれのドキュメントに従ってマスター暗号化キーを取得するようデータベースに指示する必要があります。この設定が作成されていない場合、Oracle Databaseは、sqlnet.oraファイルをチェックします。必要に応じて、キーストアのコピーなどの他のキーストアを作成したり、キーが含まれているファイルをエクスポートすることができます。WALLET_ROOTの場所で構成したキーストアを除去または削除する必要がある場合は、このキーストア内のTDEマスター暗号化キーを別のキーストアに移動した後でのみ行う必要があります。次に、キーストアの新しい場所を指すようにWALLET_ROOTを再設定する必要があります。

WALLET_ROOTおよびTDE_CONFIGURATIONパラメータを使用してソフトウェア・キーストアの場所を構成したら、CDBにログインしてキーストアを作成して開き、次にTDEマスター暗号化キーを設定できます。これらのステップを完了したら、データの暗号化を開始できます。

3.3.2 初期化パラメータ・ファイルの編集による統一モードの構成

初期化パラメータ・ファイル内のWALLET_ROOTパラメータとTDE_CONFIGURATIONパラメータの両方を設定することにより、統一モードを構成できます。

  1. OracleデータベースのCDBルートが存在するサーバーにログインします。
  2. 必要に応じて、ウォレット・ディレクトリを作成します。
    通常、ウォレット・ディレクトリは$ORACLE_BASE/admin/db_unique_nameディレクトリにあり、walletという名前が付いています。このディレクトリが空であることを確認してください。
  3. デフォルトでは$ORACLE_HOME/dbsディレクトリにある初期化パラメータ・ファイルを編集して、次のパラメータを含めます。
    • WALLET_ROOT。ウォレット・ディレクトリの場所を指すようにします。

      たとえば、orclという名前のデータベースの場合、次のようになります。

      wallet_root=$ORACLE_BASE/admin/orcl/wallet
    • TDE_CONFIGURATION。次のキーストア・タイプのいずれかを指定します。
      • FILEは、ソフトウェア・キーストアを示します。Oracle Databaseは、ルートの$ORACLE_BASE/admin/orcl/wallet/tdeにキーストアを作成します。

      • OKVは、Oracle Key Vaultキーストアを示します。KEYSTORE_CONFIGURATIONがOracle Key Vaultを含むように設定されている場合、データベースでOracle Key Vaultクライアント・ソフトウェアを自動的に検出するには、このクライアント・ソフトウェアをWALLET_ROOT/okvにインストールする必要があります。

      たとえば、TDEキーストア・タイプを指定するために、次のようにします。

      ALTER SYSTEM SET TDE_CONFIGURATION = 'KEYSTORE_CONFIGURATION=FILE' 
      SCOPE = BOTH SID = '*'
  4. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、CDBルートにログインします。
  5. 構成の設定を確認します。
    • WALLET_ROOTパラメータ:
      SHOW PARAMETER WALLET_ROOT

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

    • TDE_CONFIGURATIONパラメータ:
      SHOW PARAMETER TDE_CONFIGURATION

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

    値が表示されない場合は、これらの設定を追加した初期化パラメータ・ファイルの場所を指して、STARTUPコマンドでデータベースを再起動してください。たとえば:
    STARTUP PFILE = /u01/oracle/dbs/init.ora
  6. 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 初期化パラメータ・ファイルおよびALTER SYSTEMを使用した統一モードの構成

環境がサーバー・パラメータ・ファイル(spfile)に依存している場合は、SCOPEを指定したALTER SYSTEM SETを使用して、WALLET_ROOTおよびTDE_CONFIGURATIONを設定できます。

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

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

    wallet_root string /u01/opt/oracle/product
  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.4 例: 複数のデータベースで同じホストを共有する場合のソフトウェア・キーストアの構成

WALLET_ROOTパラメータを設定することで、同じホストを共有するように複数のデータベースを構成できます。

WALLET_ROOTパラメータはOracleデータベースの内部にあるため、複数のデータベースで同じホストを共有できるようにするパラメータの設定のみが必要です。

たとえば:

ALTER SYSTEM SET WALLET_ROOT = '/etc/ORACLE/KEYSTORES/$ORACLE_SID' SCOPE = SPFILE;

各データベースに対して個々のソフトウェア・キーストアを完全に分離して実装するには、WALLET_ROOTパラメータ設定にORACLE_SID (またはOracle Real Application ClustersではORACLE_UNQNAME)を追加します。

3.3.5 例: Oracle Automatic Storage Managementディスク・グループ用のソフトウェア・キーストアの構成

Oracle Real Applications Clusters (Oracle RAC)環境では、WALLET_ROOTパラメータは、そのデータベースのすべてのOracle RACインスタンスからアクセスできるOracle Automatic Storage Management (ASM)の共有ディレクトリを指します。

次の例では、ASMのソフトウェア・キーストアについてWALLET_ROOTおよびTDE_CONFIGURATIONを設定する方法を示します。

ALTER SYSTEM SET WALLET_ROOT = '+DATA/unique_name_of_database' SCOPE = SPFILE SID = '*';

たとえば、この値を+DATA/FINRACに設定すると、ウォレットの作成時に/tdeディレクトリが自動的に生成されます。

3.4 統合モードでのソフトウェア・キーストアおよびTDEマスター暗号化キーの構成

統一モードでは、ソフトウェア・キーストアは、CDBルート内に存在しますが、このキーストアのマスター・キーは、統一モードのキーストアを持つPDBで使用可能です。

3.4.1 統合モードでのソフトウェア・キーストアおよびTDEマスター暗号化キーの構成について

統一モードでは、CDBルートで作成されたキーストアは、統一モードのPDBからアクセス可能になります。

一般的に、統一モードを有効にした後、統一モードのソフトウェア・キーストアを構成するには、CDBルートでキーストアを作成して開き、そのキーストアのマスター暗号化キーを作成します。その後、CDB環境全体からアクセスできる表と表領域のデータの暗号化を開始できます。

V$ENCRYPTION_WALLET動的ビューでは、キーストアのステータスと場所が示されます。たとえば、次の問合せでは、CDBルート・キーストア(CON_ID 1)のステータス(開いている/閉じている)と場所、およびそれに関連付けられている統一モードのPDBのキーストアが示されます。WRL_PARAMETER列では、CDBルート・キーストアの場所が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のキーストア・パスが示されます。

安全性の高い外部パスワード・ストアでソフトウェア・キーストア・パスワードを非表示にできます。

ADMINISTER KEY MANAGEMENT ADD SECRET 'software-keystore-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: ソフトウェア・キーストアの作成

ソフトウェア・キーストアのディレクトリの場所を指定したら、キーストアを作成できます。

3.4.2.1 ソフトウェア・キーストアを作成することについて

3つの異なるタイプのソフトウェア・キーストアがあります。

パスワード保護されたソフトウェア・キーストア、自動ログイン・ソフトウェア・キーストアおよびローカル自動ログイン・ソフトウェア・キーストアを作成できます。

問合せSELECT * FROM V$ENCRYPTION_WALLETを実行すると、自動ログイン・ソフトウェア・キーストアが自動的に開くため、注意してください。たとえば、パスワード保護されたキーストアと自動ログイン・キーストアがあるとします。パスワード保護されたキーストアが開いているときに、このパスワード保護されたキーストアを閉じて、V$ENCRYPTION_WALLETビューを問い合せると、出力にキーストアが開いていることが示されます。ところが、これはV$ENCRYPTION_WALLETが自動ログイン・ソフトウェア・キーストアを開いて、自動ログイン・キーストアのステータスを表示したことによるものです。

3.4.2.2 パスワード保護されたソフトウェア・キーストアの作成

パスワード保護されたソフトウェア・キーストアには、TDEマスター・キーを保護するために使用するパスワードが必要です。統一モードでは、CDBルート内にキーストアを作成する必要があります。

CDBルートでキーストアを作成すると、そのキーストアは、すべての統一モードの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文を実行してキーストアを作成します。
    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 
    IDENTIFIED BY software_keystore_password;

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

    この指定では、software_keystore_passwordは、セキュリティ管理者が作成するキーストアのパスワードです。

    たとえば、WALLET_ROOT/tdeディレクトリにキーストアを作成するには、次のようにします。

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

    この文を実行すると、キーストアとなるewallet.p12ファイルがキーストアの場所に生成されます。

これらのステップを実行すると、キーストアを含むewallet.p12ファイルが、指定したキーストアの場所に生成されます。たとえば、WALLET_ROOTパラメータを$ORACLE_BASE/walletに設定し、TDE_CONFIGURATIONパラメータをFILE (TDEの場合、ウォレットのルートの場所にtdeディレクトリが作成されます)に設定した場合、キーストアは、$ORACLE_BASE/wallet/tdeディレクトリに作成されます。キーストアの名前は、ewallet.p12です。
3.4.2.3 自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアの作成

パスワード保護されたキーストアに代わる方法として、自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアのいずれかを作成できます。

これらのキーストアの両方は、システム生成パスワードを持っています。これらは、PKCS#12ベースのファイルでもあります。自動ログイン・ソフトウェア・キーストアは、このキーストアがあるコンピュータとは違うコンピュータから開くことができますが、ローカル自動ログイン・ソフトウェア・キーストアは、このキーストアが作成されたコンピュータからしか開けません。自動ログイン・キーストアとローカル自動ログイン・キーストアの両方は、パスワード保護されたソフトウェア・キーストアから作成されます。これらのいずれを作成しても、データベースの停止時間は不要です。
  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与された一般ユーザーとして、CDBルートに接続します。

    SQL*Plusがすでに開かれていて、この間にinit.oraファイルを変更してWALLET_ROOTパラメータを設定した場合、SQL*Plusに再接続します。データベース・セッションはinit.oraの変更が有効になる前に変更される必要があります。

  2. SHOW PARAMETERコマンドを使用して、WALLET_ROOTが設定され、TDE_CONFIGURATIONKEYSTORE_CONFIGURATION=FILEに設定されていることを確認します。
  3. パスワード保護されたソフトウェア・キーストアを作成します。
    たとえば:
    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/etc/ORACLE/WALLETS/orcl' 
    IDENTIFIED BY keystore_password;
  4. 次の構文を使用して、自動ログイン・キーストアまたはローカル自動ログイン・キーストアを作成します。
    ADMINISTER KEY MANAGEMENT CREATE [LOCAL] AUTO_LOGIN KEYSTORE 
    FROM KEYSTORE 'keystore_location' 
    IDENTIFIED BY software_keystore_password;
    

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

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

    • keystore_locationは、自動ログイン・キーストアを作成するパスワード保護されたキーストアのディレクトリの場所に対するパスです(WALLET_ROOT/tdeなど)。この設定は、一重引用符(' ')で囲みます。この場所を確認するには、V$ENCRYPTION_WALLETビューのWRL_PARAMETER列を問い合せます。

    • software_keystore_passwordは、作成元のキーストアのパスワードです。

    たとえば、パスワード保護されたキーストアの自動ログイン・ソフトウェア・キーストアを/etc/ORACLE/WALLETS/tdeディレクトリに作成するには、次のようにします。

    ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE 
    FROM KEYSTORE '/etc/ORACLE/WALLETS/tde' 
    IDENTIFIED BY password;
    
    keystore altered.
    

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

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

  • 自動ログイン・キーストア(.ssoファイル)の作成後は、PKCS#12ウォレット(ewallet.p12ファイル)は削除しないでください。将来、TDEマスター暗号化キーを再生成またはキー更新するには、PKCS#12ウォレットが必要です。デフォルトでは、このファイルは$ORACLE_BASEまたは$ORACLE_HOMEの場所のadmin/db_unique_name/walletディレクトリにあります。
  • 透過的データ暗号化が自動ログイン・キーストアを使用するのは、このキーストアが正しい場所(WALLET_ROOT/tdeENCRYPTION_LOCATIONまたはデフォルトのキーストアの場所)にあり、かつ、暗号化されたキーストアを開くためのSQLがまだ実行されていない場合のみであることに留意してください。自動ログイン・キーストアにはシステム生成のパスワードがあり、暗号化されていることに注意してください。ENCRYPTION_WALLET_LOCATIONパラメータが設定されている場合、このパラメータは非推奨となったことに注意してください。かわりに、WALLET_ROOT静的初期化パラメータおよびTDE_CONFIGURATION動的初期化パラメータを使用することをお薦めします。

3.4.3 ステップ2: ソフトウェア・キーストアを開く

作成したキーストアの種類に応じて、使用する前にキーストアを手動で開く必要があります。

3.4.3.1 ソフトウェア・キーストアを開くことについて

キーストアにおいてTDEマスター暗号化キーを作成またはアクセスする前に、パスワード保護されたソフトウェア・キーストアが開いている必要があります。

透過的データ暗号化の多くの操作では、ソフトウェア・キーストアが開いている必要があります。ソフトウェア・キーストアを開くことができる方法は2つあります。

  • ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN文を発行して、キーストアを手動で開きます。その後、操作を実行できます。

  • 操作を実行するために使用されるADMINISTER KEY MANAGEMENT文にFORCE KEYSTORE句を含めます。FORCE KEYSTOREは操作中にキーストアを一時的に開き、操作が完了すると、キーストアは再度閉じられます。FORCE KEYSTOREは、データベースの負荷が高い場合に役に立ちます。このシナリオでは、データベース内の暗号化されたオブジェクトへの同時アクセスにより、自動ログイン・キーストアは、閉じられた直後でユーザーがパスワードベースのキーストアを開く機会を持つ前に開かれ続けます。

キーストアには、開いている、閉じている、開いていてもマスター暗号化キーがない、開いていても不明なマスター暗号化キーがある、定義されていない、または使用できない(つまりWALLET_ROOT/tdeの場所にない)というステータスがあります。

キーストアを手動で開くと、手動で閉じるまでキーストアは開いたままになります。PDBまたはCDBを再起動するたびに、パスワード・キーストアを手動で開いて暗号化と復号化の操作を再有効化する必要があります。

キーストアが開いているか、開いていないかのステータスは、V$ENCRYPTION_WALLETビューのSTATUS列を問い合せて確認できます。

3.4.3.2 統一モードのPDBでソフトウェア・キーストアを開く

統一モードでソフトウェア・キーストアを開くには、SET KEYSTORE OPEN句を含むADMINISTER KEY MANAGEMENT文を使用する必要があります。

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

    CDBがEXTERNAL_KEYSTORE_CREDENTIAL_LOCATIONインスタンス初期化パラメータを使用して構成されていて、パスワードで保護されたキーストアの資格証明を含むキーストアがその場所にある場合、自動ログイン・キーストアの使用から、これらの資格証明が含まれているパスワードで保護されたキーストアの使用に切り替えるには、次のように、ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN文でFORCE KEYSTORE句およびIDENTIFIED BY EXTERNAL STORE句を含める必要があります。

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

    WALLET_ROOTパラメータが設定されている場合、Oracle Databaseでは、CDBルート内のパスWALLET_ROOT/tde_sepsを検索することによって、外部ストアを検索します。

  3. キーストアを開く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の両方で開くことができるようになりました。

  4. PDBに接続します。
  5. ADMINISTER KEY MANAGEMENT文を実行してキーストアを開きます。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY password;
    keystore altered.

    自動ログイン・キーストアが構成されており、現在開いている場合、パスワード保護されたソフトウェア・キーストアを開くように切り替えるには、FORCE KEYSTORE句を次のように指定します。

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

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

    WALLET_ROOTパラメータが設定されている場合、Oracle Databaseは、パスWALLET_ROOT/PDB_GUID/tde_sepsを検索して、外部ストアを探します。

  6. キーストアが開いていることを確認します。
    SELECT STATUS FROM V$ENCRYPTION_WALLET;
キーストアが開いていても、TDEマスター暗号化キーをまだ作成していない場合は、V$ENCRYPTION_WALLETビューのSTATUS列によってOPEN_NO_MASTER_KEYステータスが知らされます。

3.4.4 ステップ3: ソフトウェア・キーストアのTDEマスター暗号化キーの設定

キーストアが開いたら、それに対してTDEマスター暗号化キーを設定できます。

3.4.4.1 ソフトウェア・キーストアのTDEマスター暗号化キーの設定について

TDEマスター暗号化キーはキーストアに格納されます。

TDEマスター暗号化キーは、TDE表キーおよび表領域暗号化キーを保護します。デフォルトでは、TDEマスター暗号化キーは、TDEによって生成されるキーです。V$ENCRYPTION_WALLETビューのSTATUS列を問い合せることで、キーストアに、設定されているTDEマスター暗号化キーがないかどうか、または不明なTDEマスター暗号化キーがないかどうかを確認できます。

データベースの外部でマスター暗号化IDを手動で作成できます。これはCloud環境で役立ちます。また、後で使用するためにTDEマスター暗号化キーを作成でき、その後それらを手動で有効にできます。

3.4.4.2 統一モードのソフトウェア・キーストアのTDEマスター暗号化キーの設定

PDBが統一モードに設定されている場合にキーストアのTDEマスター暗号化キーを設定するには、SET KEY句を指定して、ADMINISTER KEY MANAGEMENT文を使用します。

  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マスター暗号化キーを設定します。
    次の構文を使用します。
    ADMINISTER KEY MANAGEMENT SET KEY 
    [USING TAG 'tag'] 
    [FORCE KEYSTORE] 
    IDENTIFIED BY [EXTERNAL STORE] | keystore_password 
    [WITH BACKUP [USING 'backup_identifier']];
    

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

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

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

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

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

    ADMINISTER KEY MANAGEMENT SET KEY 
    IDENTIFIED BY keystore_password 
    WITH BACKUP USING 'emp_key_backup';
    
    keystore altered.

    キーストアが閉じている場合は、次のように指定します。

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

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

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

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

3.5 統一モードのPDBで許可されない操作

統一モードのPDBで許可されないADMINISTER KEY MANAGEMENT操作は、CDBルートで実行できます。

操作は次のとおりです。

  • キーストアの操作:

    • キーストアでのマージ操作の実行

    • キーストアのエクスポート

    • キーストアのインポート

    • キーストアの移行

    • キーストアの逆移行

    • PDBのキーストアへのCDBルートにあるキーストアのキーの移動

    • CDBルートにある統一モードのキーストアへのPDBにあるキーの移動

  • 暗号化キーの操作:

    • CONTAINER = ALL句を使用した、各プラガブル・データベース(PDB)での後から使用する新しいTDEマスター暗号化キーの作成

  • クライアント・シークレットの操作:

    • クライアント・シークレットの追加

    • クライアント・シークレットの更新

    • クライアント・シークレットの削除

3.6 統一モードでの外部キーストアの構成

統一モードでは、外部キーストアは暗号化キーを保存するために設計された外部キー・マネージャ内にあります。

3.6.1 外部キーストアについて

外部キーストアは、暗号化キーのために安全な記憶域を提供する独立したサーバーまたはデバイスです。

外部キーストアはOracleデータベースの外部にあります。Oracleデータベースは外部キーストアとのインタフェースをとることができますが、Oracleインタフェースの外部でそれらを操作することはできません。Oracleデータベースは外部キーストアにキーの作成をリクエストできますが、このキーが外部データベースに格納される方法を定義することはできません。外部キーストアの例は、Oracle Key Vaultキーストアです。サポートされている外部キーストアは、Oracle Key VaultおよびOracle Cloud Infrastructure Vaultです。(反対に、TDEを使用して作成されるソフトウェア・キーストアの場合は、Oracleデータベースが完全な制御権限を持ちます。つまり、SQL文を使用してこのタイプのキーストアを操作できます。)

外部キーストアを構成するには、まずTDE_CONFIGURATIONパラメータ設定にキーストア・タイプを定義し、外部キーストアを構成して開き、最初のTDEマスター暗号化キーを外部キーストアに設定する必要があります。要するに、データベースごとに1つの外部キーストアがあり、データベースは、TDE_CONFIGURATIONパラメータで定義されているキーストア・タイプを確認することでこのキーストアを見つけます。

3.6.2 統一モードでの外部キーストアの構成について

統一モードでは、sqlnet.ora (非推奨)を編集して外部キーストアを構成するか、パラメータWALLET_ROOTおよびTDE_CONFIGURATIONを設定できます。

新しいデプロイメントにパラメータ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: 統一モードの外部キーストアの構成

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: 外部キーストアを開く

外部キーストアを構成したら、使用する前に開く必要があります。

3.6.4.1 外部キーストアを開くことについて

暗号化または復号化を実行する前に、外部キーストアがデータベースにアクセスできるようにするために、外部キーストアを開く必要があります。

データベースにリカバリ操作が必要な場合(データベースが正常に停止しておらず、リカバリが必要な暗号化された表領域がある場合など)、データベース自体を開く前に外部キーストアを開く必要があります。

外部キーストアを開く方法としては、次の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で外部キーストアを開く

統一モードで外部キーストアを開くには、SET KEYSTORE OPEN句を含むADMINISTER KEY MANAGEMENT文を使用する必要があります。

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

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

    • FORCE KEYSTOREは、キーストアが閉じている場合に、キーストア操作を有効にします。

    • 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になります。

    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: 外部キーストアでの最初のTDEマスター暗号化キーの設定

外部キーストアを開いたら、最初のTDEマスター暗号化キーを設定できます。

3.6.5.1 外部キーストアのTDEマスター暗号化キーの設定について

外部キーストア内に格納されたTDEマスター暗号化キーを作成する必要があります。

Oracle Databaseは、マスター暗号化キーを使用して、外部キーストア内部のTDE表キーまたは表領域暗号化キーの暗号化または復号化を行います。

TDE用にソフトウェア・キーストアをまだ構成していない場合は、マスター暗号化キーを設定する必要があります。TDE用にソフトウェア・キーストアをすでに構成している場合は、データベースを外部キー・ストアに移行する必要があります。

現在のマスター暗号化キーとともに、Oracleウォレットでは、マスター暗号化キーを更新するキーの更新操作のたびに生成される履歴マスター暗号化キーを保持します。これらの履歴マスター・キーにより、履歴マスター暗号化キーのいずれかを使用して、以前に作成されたOracleデータベースのバックアップをリストアできます。

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: OKVおよびFILEキーストアを持つコンテナのハートビートの設定

この例では、コンテナ・リストは1 2 3 4 5 6 7 8 9 10で、奇数のコンテナのみがOKVキーストアを使用するように構成され、偶数のコンテナはソフトウェア・キーストア(FILE)を使用するように構成されています。

  • 反復1: バッチを構成するコンテナ: 1 3 5
  • 反復2: バッチを構成するコンテナ: 1 7 9
  • 反復3: バッチを構成するコンテナ: 1
  • このサイクルを繰り返します。

例3: CDB$ROOTが外部キー・マネージャを使用するように構成されていない場合のハートビートの設定

コンテナ・リストが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 統一モードの外部キーストアの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初期化パラメータを設定します。
    このオプション設定は、キー管理にOracle Cloud Infrastructure (OCI)キー管理サービス(KMS)を使用するOCIのDBaaSデータベース(ExaCSを含む)でのみ使用できます。
    マスター暗号化キーのインメモリー・キャッシングを有効にすると、データ暗号化キーの復号化中に外部キー・マネージャ(Oracle Cloud Infrastructure (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はこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

    • 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マスター暗号化キーの移行

ソフトウェア・キーストアを以前に構成した場合は、前に構成したTDEマスター暗号化キーを移行する必要があります。

Oracle Data PumpやOracle Recovery Managerなどのツールでは、ソフトウェア・キーストアを使用してエクスポートまたはバックアップされたデータに対して復号化と暗号化の操作を実行するために、古いソフトウェア・キーストアにアクセスする必要があります。ソフトウェアから外部キーストアに移行できます。

現在のマスター暗号化キーともに、Oracleキーストアでは、マスター暗号化キーをローテーションするキーの更新操作のたびに生成される履歴マスター暗号化キーを保持します。これらの履歴マスター暗号化キーにより、履歴マスター暗号化キーのいずれかを使用して、以前に作成されたOracleデータベースのバックアップをリストアできます。

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

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