5 統一モードでのキーストアおよびTDEマスター暗号化キーの管理

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

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

5.1 統一モードでのキーストアおよびTDEマスター暗号化キーの管理について

統一モードでは、同じキーストアに格納されるCDBおよびPDBのキーストアおよびTDEマスター暗号化キーを作成します。

統一モードのキーストアを持つ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. これらの設定を有効にするために、データベースを再起動します。

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

  4. 統一モードの各PDBで、統一モードのPDBでローカルにキーストアを開いたり、PDBのTDEマスター暗号化キーを作成したりするなど、必要に応じてTDEマスター暗号化キーのタスクを実行します。キーストアはCDBルートで管理されますが、PDBでTDEを使用できるようにするには、PDB固有のTDEマスター暗号化キーがキーストアに含まれている必要があることに注意してください。

CDBルートから統一モードでADMINISTER KEY MANAGEMENT文を実行すると、文でCONTAINER句が受け入れられ、それをALLに設定した場合、その文は、CDBルートおよびそれに関連付けられた統一モードのPDBにのみ適用されます。分離モードのPDBはすべて影響を受けません。

5.2 統一モードで許可される操作

CDBルートで実行される多くのADMINISTER KEY MANAGEMENT操作は、統一モードのPDBのキーストアおよび暗号化キーに適用されます。

CDBルートで使用可能な統一モード関連の操作

表5-1では、CDBルートで実行できるADMINISTER KEY MANAGEMENT操作について説明します。

表5-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句では、PDBごとのWALLET_ROOTの場所のtde_sepsディレクトリにあるSSOウォレット内のパスワードが使用されます。

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

ADMINISTER KEY MANAGEMENT 
ALTER KEYSTORE PASSWORD
IDENTIFIED BY old_keystore_password
SET new_keystore_passwordWITH 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];

分離モードのPDBキーストアが開いている場合は、この文によって「ORA-46692 ウォレットをクローズできません」エラーが発生します。

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

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

この操作を使用すると、分離したキーストアが開いているときに、CDBルートでキーストアを閉じることができます。

新しい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で使用可能な操作

表5-2では、統一モードのPDBで実行できるADMINISTER KEY MANAGEMENT操作について説明します。

表5-2 ADMINISTER KEY MANAGEMENT統一モードPDB操作

操作 構文 統一モードのノート

キーストアを開く

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

この操作では、EXTERNAL_STORE句で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]];

-

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

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

操作は次のとおりです。

  • キーストアの操作:

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

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

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

    • キーストアの移行

    • キーストアの逆移行

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

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

  • 暗号化キーの操作:

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

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

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

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

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

5.4 統一モードのキーストアの場所とタイプの構成

統一モードでは、パラメータのみ、またはパラメータとALTER SYSTEM文の組合せを使用して、キーストアの場所とタイプを構成できます。

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

初期化パラメータ・ファイル内の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属性の値が無効です。」エラーが表示された場合は、この設定を追加した初期化パラメータ・ファイルを確認してください。
統一モードを構成した後、キーストアとマスター暗号化キーを作成でき、それらが構成されている場合、データを暗号化できます。

5.4.2 初期化パラメータ・ファイルおよび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. 初期化パラメータ・ファイルを編集して、ウォレット・ディレクトリのWALLET_ROOT静的初期化パラメータを含めます。
    デフォルトでは、初期化パラメータ・ファイルは、$ORACLE_HOME/dbsディレクトリにあります。
    たとえば、orclという名前のデータベース・インスタンスの場合は、次のとおりです。
    wallet_root=$ORACLE_BASE/admin/orcl/wallet
  4. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、CDBルートにログインします。
  5. データベースを再起動します。
    SHUTDOWN IMMEDIATE
    STARTUP

    WALLET_ROOT設定を追加した初期化ファイルの場所を指すことによってデータベースを起動するには、次のようなSTARTUPコマンドを発行します。

    STARTUP PFILE = /u01/oracle/dbs/init.ora
  6. WALLET_ROOT設定を確認します。
    SHOW PARAMETER WALLET_ROOT

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

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

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

    • keystore_typeには、統一モードの次の設定のいずれかを指定できます。

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

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

    • scope_typeには、スコープのタイプ(たとえば、bothmemoryspfilepfile)を設定します。

    たとえば、パラメータ・ファイル(pfile)を使用している場合にTDEキーストアを構成するには、scopememoryに設定します。

    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE" 
    SCOPE=memory;

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

    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE" 
    SCOPE=both;
  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属性の値が無効です。」エラーが表示された場合は、この設定を追加した初期化パラメータ・ファイルを確認してください。
統一モードを構成した後、キーストアとマスター暗号化キーを作成でき、それらが構成されている場合、データを暗号化できます。

5.5 統一モードで使用するためのソフトウェア・キーストアの構成

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

5.5.1 統一モードでのソフトウェア・キーストアの構成について

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

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

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

ソフトウェア・キーストア用に安全な外部ストアを作成できます。この機能では、パスワードをオペレーティング・システムから隠すことができます。それにより、終夜のバッチ・スクリプトなどのユーザーの操作なしにデータベースにアクセスできるスクリプトや他のツールにクリアテキスト・キーストア・パスワードを保存する必要がなくなります。このキーストアの場所は、EXTERNAL_KEYSTORE_CREDENTIAL_LOCATION初期化パラメータによって設定されます。マルチテナント環境では、ADMINISTER KEY MANAGEMENT文をIDENTIFIED BY EXTERNAL STORE句を使用して実行すると、様々なPDBがこの外部ストアの場所にアクセスできます。このように、パスワードをまとめて配置すると、パスワードの更新は外部ストアで一度のみで済みます。

5.5.2 ステップ1: ソフトウェア・キーストアの作成

統一モードでは、CDBルート内にキーストアを作成する必要があります。

CDBルートでキーストアを作成すると、そのキーストアは、すべての統一モードのPDBで使用可能になりますが、いずれの分離モードのPDBでも使用可能になりません。
  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、CDBルートにログインします。
    たとえば:
    sqlplus c##sec_admin as syskm
    Enter password: password
  2. 次の構文を使用して、ADMINISTER KEY MANAGEMENT SQL文を実行してキーストアを作成します。
    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 
    ['keystore_location'] 
    IDENTIFIED BY software_keystore_password;
    

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

    • keystore_locationは、自動ログイン・キーストアを作成するパスワード保護されたキーストアのキーストア・ディレクトリの場所に対するパスです。WALLET_ROOTパラメータで設定されているパスを使用する場合は、keystore_location設定を省略できます。

      keystore_locationを指定する場合は、一重引用符(' ')で囲んでください。デフォルトの場所を見つけるには、V$ENCRYPTION_WALLETビューのWRL_PARAMETER列を問い合せます。(キーストアがデフォルトの場所に作成されていない場合、V$ENCRYPTION_WALLETビューのSTATUS列はNOT_AVAILABLEになります。)

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

    たとえば、WALLET_ROOTが設定されていることを前提として、デフォルトの場所にキーストアを作成するには、次のようにします。

    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 
    IDENTIFIED BY password;
    
    keystore altered.
    
これらのステップを実行すると、キーストアを含むewallet.p12ファイルが、指定したキーストアの場所に生成されます。たとえば、WALLET_ROOTパラメータを$ORACLE_BASE/walletに設定し、TDE_CONFIGURATIONパラメータをFILE (TDEの場合、ウォレットのルートの場所にtdeディレクトリが作成されます)に設定した場合、キーストアは、$ORACLE_BASE/wallet/tdeディレクトリに作成されます。キーストアの名前は、ewallet.p12です。

5.5.3 ステップ2: 統一モードのPDBでソフトウェア・キーストアを開く

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

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与された一般ユーザーとして、CDBルートにログインします。
    たとえば:
    sqlplus c##sec_admin as syskm
    Enter password: password
  2. CDBルートのキーストアを開きます。
    たとえば:
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY password;
    
    keystore altered.

    データベース・インスタンスが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;

5.5.4 ステップ3: 統一モードでのソフトウェア・キーストアのTDEマスター暗号化キーの設定

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

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限を付与されたユーザーとして、CDBルート、または統一モードが構成されているPDBにログインします。
  2. データベースがREAD WRITEモードでオープンしていることを確認します。
    ステータスを確認するには、show pdbsコマンドを実行します。
  3. ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY文を実行してキーストアのTDEマスター暗号化キーを作成またはキー更新します。
    たとえば、キーストアがパスワードで保護されていて、開いている場合に、現在のコンテナでTDEマスター暗号化キーを作成またはキー更新するには、次のようにします。
    ADMINISTER KEY MANAGEMENT SET KEY 
    IDENTIFIED BY keystore_password 
    WITH BACKUP USING 'emp_key_backup';
    
    keystore altered.

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

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

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

    • キーストアが閉じている場合は、FORCE KEYSTOREを含める必要があります。これにより、TDEマスター暗号化キーを設定する前に、キーストアが自動的に開きます。また、FORCE KEYSTORE句は、自動ログイン・キーストアが構成されており、現在開いている場合に、パスワード保護されたソフトウェア・キーストアを開くように切り替えます。

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

  4. TDEマスター暗号化キーが設定されていることを確認します。
    SELECT MASTERKEY_ACTIVATED FROM V$DATABASE_KEY_INFO;

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

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

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

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

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

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

統一モードでは、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マスター暗号化キーを設定します。これらのタスクを完了すると、データベース内のデータを暗号化できるようになります。

5.6.2 ステップ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 = '*";

5.6.3 ステップ2: 外部キーストアを開く

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

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

5.6.3.2 統一モードのPDBで外部キーストアを開く

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

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与された一般ユーザーとして、CDBルートに接続します。
    たとえば:
    CONNECT c##sec_admin AS SYSKM
    Enter password: password
  2. 次の構文を使用して、CDBルートのキーストアを開きます。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    [FORCE KEYSTORE]
    IDENTIFIED BY "external_key_manager_password";

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

    • 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キーストアの場合は、パスワードを入力するだけで済みます。IDENTIFIED BY句でユーザー名を指定することはできません。パスワードは二重引用符で囲みます。

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY "password";
  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に接続し、ADMINISTER KEY MANAGEMENT文を実行してキーストアを開きます。
    たとえば、HSMの場合は、次のとおりです。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY "external_key_manager_password";
  5. キーストアが開いていることを確認します。
    SELECT STATUS FROM V$ENCRYPTION_WALLET;
  6. PDBを再起動するたびにこの手順を繰り返します。

5.6.4 ステップ3: 外部キーストアでの最初のTDEマスター暗号化キーの設定

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

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

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

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

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

5.6.4.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
  • このサイクルを繰り返します。
5.6.4.3 ステップ3: 統一モードでの外部キーストアのTDEマスター暗号化キーの設定

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

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限を付与されたユーザーとして、CDBルート、または統一モードが構成されているPDBにログインします。
  2. データベースがREAD WRITEモードでオープンしていることを確認します。
    ステータスを確認するには、SHOW PDBSコマンドを実行します。
  3. 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"];
    

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

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

    • 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.
  4. TDEマスター暗号化キーが設定されていることを確認します。
    SELECT MASTERKEY_ACTIVATED FROM V$DATABASE_KEY_INFO;

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

5.6.4.4 前に構成したTDEマスター暗号化キーの移行

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

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

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

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

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

5.7 統一モードでのキーストアおよびTDEマスター暗号化キーの管理

統一モードで使用するためのキーストアとマスター暗号化キーを構成した後、TDEマスター暗号化キーのキー更新などのタスクを実行できます。

5.7.1 統一モードでのキーストア・パスワードの変更

ソフトウェア・キーストアまたは外部キーストアのパスワードは、CDBルートでのみ変更できます。

5.7.1.1 統一モードでのパスワードで保護されたソフトウェア・キーストアのパスワードの変更

統一モードでパスワードで保護されたソフトウェア・キーストアのパスワードを変更するには、CDBルートでADMINISTER KEY MANAGEMENT文を使用する必要があります。

統一モードのPDBのキーストア・パスワードは変更できません。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、CDBルートにログインします。

  2. 次の構文を使用して、キーストアのパスワードを変更します。

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

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

    • FORCE KEYSTOREは、キーストアが閉じている場合、自動ログイン・キーストアが構成されていて現在開いている場合、またはパスワード保護されたキーストアが構成されていて現在閉じている場合に、パスワード保護されたキーストアをこの操作用に一時的に開きます。

    • old_passwordは、変更する現在のキーストア・パスワードです。

    • new_passwordは、キーストア用に設定する新しいパスワードです。

    • パスワードはローカルでCDBルートにおいてのみ変更できるため、CONTAINER句を含める必要はありません。

    次の例では、キーストアのバックアップを作成してから、パスワードを変更します。

    ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD 
    IDENTIFIED BY
    old_password SET new_password 
    WITH BACKUP USING 'pwd_change';
    
    keystore altered.

    この例では同じ操作を実行しますが、自動ログイン・ソフトウェア・キーストアが使用されている場合や、パスワード保護されたソフトウェア・キーストアが閉じている場合のために、FORCE KEYSTORE句を使用します。

    ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD
    FORCE KEYSTORE 
    IDENTIFIED BY
    old_password SET new_password 
    WITH BACKUP USING 'pwd_change';
    
    keystore altered.
5.7.1.2 統一モードでの外部キーストアのパスワードの変更

外部キーストアのパスワードを変更するには、外部キーストアを閉じた後、外部キーストアの管理インタフェースからパスワードを変更する必要があります。

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、CDBルートにログインします。
  2. 外部キーストアを閉じます。
    • 外部キー・マネージャへの接続を閉じます。
      ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE 
      IDENTIFIED BY "external_key_manager_password"|EXTERNAL STORE 
      CONTAINER = ALL;
      
    • キーストアがデータベースによって自動オープンされた場合は、次のように外部キー・マネージャへの接続を閉じます。
      ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE 
      CONTAINER = ALL;
      
  3. Oracle Key Vaultパスワードを変更します。
    WALLET_ROOT/okv/bin/okvutil changepwd -t wallet -l WALLET_ROOT/okv/ssl
  4. "new_external_key_manager_password"を使用するように外部ストアの資格証明を更新します。
    現時点では、外部ストアに以前の資格証明が含まれていますが、これは機能しなくなっています。

    たとえば:

    ADMINISTER KEY MANAGEMENT
    UPDATE SECRET 'new_external_key_manager_password' 
    FOR CLIENT "TDE_WALLET" 
    TO LOCAL AUTO_LOGIN KEYSTORE '/etc/ORACLE/WALLETS/orcl/external_store';
  5. 外部キーストアを開きます。
    • たとえば、Oracle Key Vaultの場合:
      ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
      IDENTIFIED BY "Oracle_Key_Vault_password";
      
    • パスワードが外部に格納されている外部キーストアの場合:
      ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
      IDENTIFIED BY EXTERNAL STORE;

5.7.2 統一モードでのパスワードで保護されたソフトウェア・キーストアのバックアップ

ADMINISTER KEY MANAGEMENT文のBACKUP KEYSTORE句により、パスワード保護されたソフトウェア・キーストアをバックアップします。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、CDBルートにログインします。

    たとえば:

    sqlplus c##sec_admin@hrpdb as syskm
    Enter password: password
    Connected.
    
  2. 次の構文を使用して、キーストアをバックアップします。

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

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

    • USING backup_identifierは、バックアップを識別するために指定できるオプション文字列です。この識別子は、一重引用符(' ')で囲みます。この識別子は名前付きキーストア・ファイルに付加されます(ewallet_time-stamp_emp_key_backup.p12など)。

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

    • IDENTIFIED BYは、パスワード保護されたキーストアに対してBACKUP KEYSTORE操作を行う場合に必須です。その理由は、バックアップは既存のキーストアのコピーにすぎませんが、パスワード保護されたキーストアのTDEマスター暗号化キーのステータスをBACKED UPに設定する必要があり、この変更を行うためにキーストア・パスワードが必要になるためです。

    • keystore_locationは、バックアップ・キーストアが格納されるパスです。PDBロックダウン・プロファイルのEXTERNAL_FILE_ACCESS設定がPDBでブロックされている場合、またはPDBの作成時にPATH_PREFIX変数が設定されていない場合は、この設定がPDBに制限されます。keystore_locationを指定しない場合、バックアップは元のキーストアと同じディレクトリに作成されます。この場所は一重引用符(' ')で囲みます。

    • キーストアはローカルでCDBルートにおいてのみバックアップできるため、CONTAINER句を含める必要はありません。

    次の例は、ソフトウェア・キーストアをソース・キーストアと同じ場所にバックアップします。

    ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE 
    USING 'hr.emp_keystore' 
    FORCE KEYSTORE 
    IDENTIFIED BY 
    software_keystore_password ;
    
    keystore altered.
    

    次のバージョンでは、キーストアのパスワードが外部にあるため、EXTERNAL STORE句が使用されます。

    ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE 
    USING 'hr.emp_keystore' 
    FORCE KEYSTORE 
    IDENTIFIED BY EXTERNAL STORE;

    この文を実行すると、ewallet_identifier.p12ファイル(ewallet_time-stamp_hr.emp_keystore.p12など)が、キーストアのバックアップ場所に作成されます。

5.7.3 統一モードでキーストアを閉じる

システム表領域が暗号化されていないかぎり、統一モードでソフトウェア・キーストアと外部キーストアの両方を閉じることができます。

5.7.3.1 統一モードでソフトウェア・キーストアを閉じる

統一モードで、パスワード保護されたキーストア、自動ログイン・キーストアおよびローカル自動ログイン・ソフトウェア・キーストアを閉じることができます。

アクセス時に自動的に開かれる自動ログイン・キーストアの場合は、まず自動的に開くことができない新しい場所に移動してから、手動で閉じる必要があります。自動ログイン・キーストアからパスワード保護されたキーストアに構成を変更する場合は、自動ログイン・キーストアが使用されなくなるように構成を変更し(自動ログイン・キーストアを自動的に開くことができない別の場所に移動する)、その後、自動ログイン・キーストアを閉じる必要があります。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限を付与されたユーザーとして、CDBルート、または統一モードのPDBにログインします。
  2. ソフトウェア・キーストアを閉じます。
    • パスワードで保護されたソフトウェア・キーストアでは、CDBルート内にいる場合、次の構文を使用します。
      ADMINISTER KEY MANAGEMENT SET | FORCE KEYSTORE CLOSE 
      [IDENTIFIED BY [EXTERNAL STORE | software_keystore_password]]
      [CONTAINER = ALL | CURRENT];

      SET句を使用して、強制せずにキーストアを閉じます。開いている依存キーストアがある場合(たとえば、分離モードのPDBのキーストアで、CDBルートのキーストアを閉じようとしている場合)、「ORA-46692 ウォレットをクローズできません」エラーが表示されます。この場合、SETのかわりにFORCE句を使用して、閉じる操作中に依存キーストアを一時的に閉じます。V$ENCRYPTION_WALLETビューのSTATUS列で、キーストアが開いているかどうかが示されます。

      統一モードのPDBにいる場合、CONTAINER句を省略するか、CURRENTに設定します。

    • 自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアでは、CDBルートにいる場合、次の構文を使用します。
      ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE
      [CONTAINER =  ALL | CURRENT];
キーストアを閉じると、暗号化および復号化のすべての操作が無効化されます。データを暗号化または復号化しようとしたり、暗号化データにアクセスしようとすると、エラーが発生します。
5.7.3.2 統一モードで外部キーストアを閉じる

外部キーストアを閉じるには、SET KEYSTORE CLOSE句を含むADMINISTER KEY MANAGEMENT文を使用する必要があります。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限を付与されたユーザーとして、CDBルート、または統一モードのPDBにログインします。
  2. 次の構文を使用して、外部キーストアを閉じます。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE 
    IDENTIFIED BY [EXTERNAL STORE | "external_key_manager_password"]
    [CONTAINER = ALL | CURRENT];

    たとえば、HSMの場合は、次のとおりです。

    ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE 
    IDENTIFIED BY "external_key_manager_password"
    CONTAINER = ALL;
    ORA-46692 ウォレットをクローズできません」エラーが表示された場合は、分離モードのキーストアが開いていないかを確認します。キーストアのステータスを確認するには、V$ENCRYPTION_WALLETビューのSTATUS列を問い合せます。
キーストアを閉じると、暗号化および復号化のすべての操作が無効化されます。データを暗号化または復号化しようとしたり、暗号化データにアクセスしようとすると、エラーが発生します。

5.7.4 統一モードでのユーザー定義のTDEマスター暗号化キーの作成

ユーザー定義のTDEマスター暗号化キーを作成するには、SET | CREATE [ENCRYPTION] KEY句を含むADMINISTER KEY MANAGEMENT文を使用します。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、CDBルートにログインします。
    たとえば:
    sqlplus c##sec_admin as syskm
    Enter password: password
  2. 次の構文を使用して、ユーザー定義の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']];

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

    • SET | CREATE: マスターを作成して、すぐにTDEマスター暗号化キーをアクティブ化する場合はSETと入力し、後から使用するためのキーを作成して、まだアクティブ化しない場合はCREATEと入力します。

    • mkidおよびmk:

      • mkidは、TDEマスター暗号化キーIDであり、16バイトの16進数エンコード値です。ユーザーが指定するか、Oracle Databaseに生成させることができます。

      • mkは、TDEマスター暗号化キーであり、32バイト(AES256ARIA256およびGOST256アルゴリズムの場合)または16バイト(SEED128アルゴリズムの場合)のいずれかの16進数エンコード値です。ユーザーが指定するか、Oracle Databaseに生成させることができます。

      mkid値を省略したが、mkが含まれている場合、Oracle Databaseにより、mkmkidが生成されます。

      mkid:mk|mkid句全体を省略した場合、Oracle Databaseはこれらの値を生成します。

    • USING ALGORITHM: サポートされている次のアルゴリズムのいずれかを指定します。

      • AES256

      • ARIA256

      • SEED128

      • GOST256

      アルゴリズムを省略した場合は、デフォルトのAES256が使用されます。

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

    次の例では、ユーザーが作成したTDEマスター暗号化キーが含まれていますが、TDEマスター暗号化キーIDがないため、TDEマスター暗号化キーが生成されます。

    ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY 
    '3D432109DF88967A541967062A6F4E460E892318E307F017BA048707B402493C' 
    USING ALGORITHM 'ARIA256'
    FORCE KEYSTORE
    IDENTIFIED BY keystore_password WITH BACKUP;

    次の例では、マスター暗号化IDおよびTDEマスター暗号化キーの両方のためにユーザー定義のキーが作成されます。アルゴリズムの指定が省略されているため、デフォルトのアルゴリズムAES256が使用されます。

    ADMINISTER KEY MANAGEMENT CREATE ENCRYPTION KEY 
    '10203040506070801112131415161718:3D432109DF88967A541967062A6F4E460E892318E307F017BA048707B402493C' 
    IDENTIFIED BY keystore_password WITH BACKUP;

5.7.5 例: すべてのPDBでのマスター暗号化キーの作成

ADMINISTER KEY MANAGEMENT CREATE KEY USING TAG文を使用して、すべてのPDBにTDEマスター暗号化キーを作成できます。

例5-1に、マルチテナント環境のすべてのPDBにマスター暗号化キーを作成する方法を示します。ここでは、CDBルートの自動ログイン・キーストアが開いている場合に、FORCE KEYSTORE句を使用します。パスワードが外部に格納されるため、IDENTIFIED BY句にEXTERNAL STORE設定が使用されます。この文を実行すると、マスター暗号化キーが各PDBに作成されます。それらのキーの識別子は次のように確認できます。

  • PDBにログインして、V$ENCRYPTION_KEYSビューのTAG列を問い合せます。

  • CDBルートにログインして、GV$ENCRYPTION_KEYSビューのINST_IDおよびTAG列を問い合せます。

また、最も最近作成されたキー(この文で作成したキー)を確認するには、それらのビューのCREATION_TIME列を確認します。キーの作成後、各PDBでキーを個々にアクティブ化できます。

例5-1 すべてのPDBのマスター暗号化キーの作成

ADMINISTER KEY MANAGEMENT CREATE KEY USING TAG 
'scope:all pdbs;description:Create Key for ALL PDBS' 
FORCE KEYSTORE IDENTIFIED BY EXTERNAL STORE 
WITH BACKUP
CONTAINER = ALL;
 
keystore altered.

5.7.6 統一モードでの後から使用するためのTDEマスター暗号化キーの作成

統一モードで後から使用するTDEマスター暗号化キーを作成する前に、キーストアが開かれている必要があります。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限を付与されたユーザーとして、CDBルート、または統一モードのPDBにログインします。
  2. 次の構文を使用して、TDEマスター暗号化キーを作成します。
    ADMINISTER KEY MANAGEMENT CREATE [ENCRYPTION] KEY 
    [FORCE KEYSTORE]
    [USING TAG 'tag_name']
    IDENTIFIED BY [EXTERNAL STORE | keystore_password] 
    [WITH BACKUP [USING 'backup_identifier']]
    [CONTAINER = ALL | CURRENT];
    

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

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

    • CONTAINER: CDBルートでは、CONTAINERALLまたはCURRENTに設定します。PDBでは、CURRENTに設定します。どちらの場合も、CONTAINERを省略すると、デフォルトでCURRENTに設定されます。

    たとえば:

    ADMINISTER KEY MANAGEMENT CREATE KEY 
    FORCE KEYSTORE 
    IDENTIFIED BY keystore_password
    WITH BACKUP
    CONTAINER = CURRENT;
  3. 必要に応じて、TDEマスター暗号化キーをアクティブ化します。
    1. キーIDを確認します。
      SELECT KEY_ID FROM V$ENCRYPTION_KEYS; 
      
      KEY_ID
      ----------------------------------------------------
      AWsHwVYC2U+Nv3RVphn/yAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    2. このキーIDを使用して、キーをアクティブ化します。
      ADMINISTER KEY MANAGEMENT USE KEY 
      'AWsHwVYC2U+Nv3RVphn/yAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' 
      USING TAG 'quarter:second;description:Activate Key on standby' 
      IDENTIFIED BY password 
      WITH BACKUP;

5.7.7 統一モードでのTDEマスター暗号化キーのアクティブ化

統一モードでTDEマスター暗号化キーをアクティブ化するには、キーストアを開き、USE KEY句を含むADMINISTER KEY MANAGEMENTを使用する必要があります。

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限を付与されたユーザーとして、CDBルート、または統一モードのPDBにログインします。

  2. V$ENCRYPTION_KEYSビューのORIGIN列およびKEY_ID列を問い合せて、キーの識別子を確認します。

    たとえば:

    SELECT ORIGIN, KEY_ID FROM V$ENCRYPTION_KEYS; 
    
    ORIGIN  KEY_ID
    ------  ----------------------------------------------
    LOCAL   ARaHD762tUkkvyLgPzAi6hMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    
  3. このキー識別子を使用して、次の構文を使用してTDEマスター暗号化キーをアクティブ化します。

    ADMINISTER KEY MANAGEMENT USE KEY 'key_identifier_from_V$ENCRYPTION_KEYS' 
    [USING TAG 'tag'] 
    [FORCE KEYSTORE] 
    IDENTIFIED BY [EXTERNAL STORE | keystore_password] 
    WITH BACKUP [USING 'backup_identifier']
    [CONTAINER = ALL | CURRENT];
    

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

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

    • CONTAINER: CDBルートでは、CONTAINERALLまたはCURRENTに設定します。PDBでは、CONTAINER句を省略します。どちらの場合も、CONTAINERを省略すると、デフォルトでCURRENTに設定されます。

    • WITH BACKUPは、WALLET_ROOT/tdeで識別される元のウォレットと同じ場所にウォレットをバックアップします。すべてのデータベース・インスタンスのキーの場所を確認するには、V$ENCRYPTION_WALLETまたはGV$ENCRYPTION_WALLETビューを問い合せます。

      WITH BACKUP句は、ウォレットを変更するADMINISTER KEY MANAGEMENT文すべてに必須です。オプションで、USING backup_identifier句を含めることで、バックアップの説明を追加できます。backup_identifierは、一重引用符(' ')で囲みます。

    たとえば:

    ADMINISTER KEY MANAGEMENT USE KEY 'ARaHD762tUkkvyLgPzAi6hMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' 
    FORCE KEYSTORE 
    IDENTIFIED BY EXTERNAL STORE
    WITH BACKUP
    CONTAINER = ALL;

5.7.8 統一モードでのTDEマスター暗号化キーのキー更新

SET KEY句を含むADMINISTER KEY MANAGEMENT文を使用して、TDEマスター暗号化キーをキー更新できます。

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限を付与されたユーザーとして、CDBルート、または統一モードのPDBにログインします。

  2. 自動ログインを有効化したキーストアのTDEマスター暗号化キーをキー更新する場合、.ssoファイルによって識別される自動ログイン・キーストアと.p12ファイルによって識別される暗号化キーストアの両方が存在することを確認する必要があります。

    これらのファイルのロケーションは、V$ENCRYPTION_WALLETビューのWRL_PARAMETER列を問い合せることで確認できます。すべてのデータベース・インスタンスのWRL_PARAMETER値を見つけるには、GV$ENCRYPTION_WALLETビューを問い合せます。

  3. 次の構文を使用して、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];
    

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

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

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

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

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

      • keystore_passwordは、このキーストア用に作成されたパスワードです。

    • CONTAINER: CDBルートでは、CONTAINERALLまたはCURRENTに設定します。PDBでは、CURRENTに設定します。どちらの場合も、CONTAINERを省略すると、デフォルトでCURRENTに設定されます。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEY 
    FORCE KEYSTORE 
    IDENTIFIED BY keystore_password 
    WITH BACKUP USING 'emp_key_backup'
    CONTAINER = CURRENT;
    
    keystore altered.
    

5.7.9 統一モードで使用中のTDEマスター暗号化キーの確認

使用中のTDEマスター暗号化キーは、データベースで一番最近アクティブ化されたキーです。

統一モードでは、PDBで使用されているTDEマスター・キーは、そのPDB用に最も最近アクティブ化されたものになります。
  • 使用中のTDEマスター暗号化キーを確認するには、V$ENCRYPTION_KEYS動的ビューを問い合せます。
    たとえば:
    SELECT KEY_ID 
    FROM V$ENCRYPTION_KEYS 
    WHERE ACTIVATION_TIME = (SELECT MAX(ACTIVATION_TIME) 
           FROM V$ENCRYPTION_KEYS
           WHERE ACTIVATING_PDBID = SYS_CONTEXT('USERENV', 'CON_ID'));

5.7.10 統一モードでのカスタム属性タグの作成

統一モードでカスタム属性タグを作成するには、ADMINISTER KEY MANAGEMENT文のSET TAG句を使用する必要があります。

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限を付与されたユーザーとして、CDBルート、または統一モードのPDBにログインします。

  2. 必要に応じて、V$ENCRYPTION_KEY動的ビューのTAG列を問い合せて、TDEマスター暗号化キーの既存のタグのリストを確認します。

    TDEマスター暗号化キーの新しいタグを作成すると、そのTDEマスター暗号化キーの既存のタグは上書きされます。

  3. 次の構文を使用して、カスタム属性タグを作成します。

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

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

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

    • master_key_identifierは、tagが設定されるTDEマスター暗号化キーを識別します。TDEマスター暗号化キー識別子のリストを確認するには、V$ENCRYPTION_KEYS動的ビューのKEY_ID列を問い合せます。

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

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

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

      • keystore_passwordは、このキーストア用に作成されたパスワードです。

    • backup_identifierは、タグの値を定義します。この設定は一重引用符(' ')で囲み、それぞれの値をコロンで区切ります。

    たとえば、2つの値(1番目は特定のセッションID、2番目は特定の端末IDを取得)を使用するタグを作成するには、次のようにします。

    ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY 
    USING TAG 'sessionid=3205062574:terminal=xcvt' 
    IDENTIFIED BY keystore_password 
    WITH BACKUP;
    
    keystore altered.
    

    セッションID (3205062574)と端末ID (xcvt)はどちらも、SYS_CONTEXT関数でUSERENVネームスペースを使用するか、USERENV関数を使用することで、値を導出できます。

5.7.11 統一モードでの新しいキーストアへのTDEマスター暗号化キーの移動

統一モードでは、既存のTDEマスター暗号化キーを既存のソフトウェア・パスワード・キーストアから新しいキーストアに移動できます。

この機能により、未使用のキーを削除できます。キーを新しいキーストアに移動した後で、古いキーストアを削除できます。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限を付与されたユーザーとして、CDBルート、または統一モードのPDBにログインします。
  2. V$ENCRYPTION_KEYSビューのKEY_ID列を問い合せて、キーを移動する先のキーストアのキー識別子を確認します。
    たとえば:
    SELECT CREATION_TIME, KEY_ID FROM V$ENCRYPTION_KEYS; 
    
    CREATION TIME
    ----------------------------------------------------
    22-SEP-17 08.55.12.956170 PM +00:00
    
    KEY_ID
    ----------------------------------------------------
    ARaHD762tUkkvyLgPzAi6hMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3. 次の構文を使用して、新しいキーストアにキーを移動します。
    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_identififier' [, 'key_identifier' ]... | ( subquery ) } ]
    [WITH BACKUP [USING 'backup_identifier']];

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

    • keystore_location1は、新しいキーストア.p12ファイルを格納するwalletディレクトリへのパスです。デフォルトでは、このディレクトリは、$ORACLE_BASE/admin/db_unique_name/walletにあります。

    • FORCEは、この操作のためにキーストアを一時的に開きます。

    • keystore_passwordは、キーの移動元であるキーストアのパスワードです。

    たとえば:

    ADMINISTER KEY MANAGEMENT MOVE KEYS 
    TO NEW KEYSTORE '$ORACLE_BASE/admin/orcl/wallet' 
    IDENTIFIED BY keystore_password 
    FROM FORCE KEYSTORE 
    IDENTIFIED BY keystore_password 
    WITH IDENTIFIER IN 
    (SELECT KEY_ID FROM V$ENCRYPTION_KEYS WHERE ROWNUM < 2)
    WITH BACKUP;
  4. 古いキーストアを削除するには、walletディレクトリに移動してから、キーストアを含む.p12ファイルを手動で削除します。
    キーストアの場所を見つけるには、キーストアを開いてから、V$ENCRYPTION_WALLETビューのWRL_PARAMETER列を問い合せます。

5.7.12 統一モードでの非アクティブなTDEマスター暗号化キーの自動削除

統一モードでは、REMOVE_INACTIVE_STANDBY_TDE_MASTER_KEY初期化パラメータにより、非アクティブなTDEマスター暗号化キーの自動削除を構成できます。

  1. Oracleスタンバイ・データベースのCDBルートまたは統一モードのPDBが存在するサーバーにログインします。
  2. データベースの初期化パラメータ・ファイルを特定します。
    デフォルトでは、初期化パラメータ・ファイルは、$ORACLE_HOME/dbsディレクトリにあります。
  3. 初期化パラメータ・ファイルを編集して、REMOVE_INACTIVE_STANDBY_TDE_MASTER_KEY初期化パラメータを含めます。
    たとえば:
    remove_inactive_standby_tde_master_key = true

    このパラメータをTRUEに設定すると、非アクティブなTDEマスター暗号化キーの自動削除が有効になります。FALSEに設定すると、自動削除は無効になります。

5.7.13 プラガブル・データベース・キーストアの分離

PDBのキーストアを分離すると、マスター暗号化キーが、CDBルートのキーストアから、PDB内の分離モードのキーストアに移されます。

このプロセスにより、分離モードでの別個のキーストアとしてキーストアを管理できます。このようにすることで、PDBのADMINISTER KEY MANAGEMENT権限をローカルに付与された管理者は、キーストアを管理できます。
  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、統一モードのPDBにログインします。
    たとえば:
    sqlplus sec_admin@hrpdb as syskm
    Enter password: password
    Connected.
    
  2. 次の構文を使用して、CDBルートのキーストアにあるキーを、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]];

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

    • FORCEは、PDBのクローンが分離されているマスター暗号化キーを使用している場合に使用されます。その場合、ADMINISTER KEY MANAGEMENT文は、CDBルートのウォレットのキーを分離モードのPDBに(移動するのではなく)コピーします。

    • FORCE KEYSTOREは、自動ログイン・キーストアが開いている(および使用されている)か、キーストアが閉じている場合に、この操作のためにパスワード保護されたキーストアを一時的に開きます。

    • united_keystore_password: このパスワードを知っていても、ISOLATE KEYSTORE操作権限を実行するユーザーがCDBルートでADMINISTER KEY MANAGEMENT UNITE KEYSTORE操作を実行できるようになることはありません。このパスワードは、CDBルート内のキーストア・パスワードと同じです。

    CDBルートのキーストアは、PDBのキーストアと統合された後に、CDBに関連付けられた以前アクティブであった(履歴の)すべてのマスター暗号化キーが、PDBのキーストアに移動されます。
  3. 統一モードのPDBが分離モードのPDBになったことを確認します。
    SELECT KEYSTORE_MODE FROM V$ENCRYPTION_WALLET;

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

統一モードのPDBが分離モードのPDBに変換された後は、キーストアのパスワードを変更できます。

5.8 統一モードでの透過的データ暗号化の管理

統一モードで透過的データ暗号化を使用して一般的な管理タスクを実行できます。

5.8.1 統一モードでのあるCDBから別のCDBへのPDBの移動

暗号化されたPDBを同じコンテナ・データベース内またはコンテナ・データベース間でクローニングまたは再配置できます

SYSTEMSYSAUXUNDOまたはTEMP表領域が暗号化されている非CDBまたはPDBを移動し、キーの手動エクスポートまたはインポートを使用する場合は、まずPDBを作成する前に、ターゲット・データベースのCDB$ROOTにある非CDBまたはPDBのキーをインポートする必要があります。キーをPDBに関連付けるには、PDB内でキーのインポートが再度必要です。

  • 次の構文を使用して非CDBまたはPDBをクローニングまたは再配置します:
    CREATE|RELOCATE PLUGGABLE DATABASE database_name KEYSTORE 
    IDENTIFIED BY EXTERNAL STORE|target_keystore_password NO REKEY;<

5.8.2 統一モードでの暗号化データを含むPDBのCDBに対するアンプラグとプラグイン

統一モードでは、暗号化データを含むPDBをCDBにプラグインできます。反対に、このPDBをCDBからアンプラグすることもできます。

5.8.2.1 統一モードでの暗号化データを含むPDBのアンプラグ

統一モードでは、暗号化データを含むPDBをアンプラグして、XMLメタデータ・ファイルまたはアーカイブ・ファイルにエクスポートできます。

アンプラグされるデータベースには、データ・ファイルおよび他の関連ファイルが含まれています。DBA_PDBSデータ・ディクショナリ・ビューのSTATUS列を問い合せることで、PDBがアンプラグされたかどうかを確認できます。
  1. CDBルートでは、V$ENCRYPTION_WALLET動的ビューを問い合せて、キーストアが開いていることを確認します。
  2. PDBをアンプラグした場合、ALTER PLUGGABLE DATABASE文でENCRYPT USING transport_secret句を使用します。
    PDBに暗号化データがある場合は、この句を使用する必要があります。それ以外の場合、「ORA-46680: コンテナ・データベースのマスター・キーをエクスポートする必要があります」エラーが返されます。
    • たとえば、PDBデータをXMLファイルにエクスポートするには、次のようにします。
      ALTER PLUGGABLE DATABASE CDB1_PDB2 
      UNPLUG INTO '/tmp/cdb1_pdb2.xml' 
      ENCRYPT USING transport_secret;
    • PDBのデータをアーカイブ・ファイルにエクスポートするには:
      ALTER PLUGGABLE DATABASE CDB1_PDB2 
      UNPLUG INTO '/tmp/cdb1_pdb2.pdb' 
      ENCRYPT USING transport_secret; 
5.8.2.2 統一モードでの暗号化データを含むPDBのCDBへのプラグイン

暗号化データを含むPDBをCDBにプラグインするには、まずPDBにプラグインしてから、そのPDBのマスター暗号化キーを作成します。

PDBをターゲットCDBにプラグインした後、このプラグインしたPDBに一意のマスター暗号化キーを作成する必要があります。これは、プラグインしたPDBが最初にソースPDBのウォレットから抽出されたキーを使用するためです。アンプラグされたPDBを別のCDBにプラグインする際、この操作は以前のキーの履歴を無効にするため、キー・バージョンは0に設定されます。キー・バージョンは、V$ENCRYPTED_TABLESPACES動的ビューのKEY_VERSIONを問い合せて確認できます。同様に、制御ファイルが失われ再作成された場合、以前のキーの履歴は0にリセットされます。DBA_PDBSデータ・ディクショナリ・ビューのSTATUS列を問い合せることで、PDBがすでにプラグインされているかどうかを確認できます。
  1. CDBルートから、アンプラグされたPDBをCDBにプラグインすることで、PDBを作成します。

    統一モードの場合にこの操作を実行するには、DECRYPT USING transport_secret句を含めます。

    PDBのXMLまたはアーカイブ・ファイルに暗号化データが含まれている場合は、この句を使用する必要があります。それ以外の場合、「ORA-46680: コンテナ・データベースのマスター・キーをエクスポートする必要があります」エラーが返されます。

    • たとえば、PDBデータをXMLファイルにエクスポートした場合は、次のように指定します。

      CREATE PLUGGABLE DATABASE CDB1_PDB2 
      USING '/tmp/cdb1_pdb2.xml' 
      KEYSTORE IDENTIFIED BY EXTERNAL STORE|keystore_password
      DECRYPT USING transport_secret;
    • PDBをアーカイブ・ファイルにエクスポートした場合は、次のように指定します。

      CREATE PLUGGABLE DATABASE CDB1_PDB2 
      USING '/tmp/cdb1_pdb2.pdb' 
      KEYSTORE IDENTIFIED BY EXTERNAL STORE|keystore_password
      DECRYPT USING transport_secret;

    プラグ操作後のPDBのオープン操作中に、Oracle DatabaseによってPDBに暗号化データが含まれるかどうかが判別されます。その場合、PDBはRESTRICTEDモードでオープンされます。

    別のPDBをクローニングしてPDBを作成するか、非CDBからPDBを作成するときに、ソース・データベースに暗号化されたデータまたは設定されているTDEマスター暗号化キーがある場合、CREATE PLUGGABLE DATABASE ... FROM SQL文のKEYSTORE IDENTIFIED BY keystore_password句を含めることによって、ターゲット・キーストアのキーストア・パスワードを提供する必要があります。このパスワードは、ターゲット・データベースが自動ログイン・ソフトウェア・キーストアを使用している場合であっても指定する必要があります。V$ENCRYPTION_KEYS動的ビューを問い合せることで、ソース・データベースに暗号化されたデータまたはキーストアで設定されているTDEマスター暗号化キーがあるかどうかを確認できます。

  2. PDBを開きます。

    たとえば:

    ALTER PLUGGABLE DATABASE CDB1_PDB2 OPEN;
  3. 次のいずれかの方法を使用して、CDBルートのキーストアを開きます。

    • CDBのソフトウェア・キーストアが開いていない場合は、次の構文を使用して、コンテナおよび開いているすべてのPDBに対して開きます。
      ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN [FORCE KEYSTORE] 
      IDENTIFIED BY EXTERNAL STORE|KEYSTORE_PASSWORD CONTAINER = ALL;
    • CDBのソフトウェア・キーストアが開いている場合は、プラグインしたPDBに接続し、次の構文を使用してキーストアを開きます。
      ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN [FORCE KEYSTORE] 
      IDENTIFIED BY EXTERNAL STORE|KEYSTORE_PASSWORD [CONTAINER = CURRENT];
  4. プラグインしたPDBで、次の構文を使用してPDBのTDEマスター暗号化キーを設定します。

    ADMINISTER KEY MANAGEMENT SET KEY
    [FORCE KEYSTORE]
    IDENTIFIED BY EXTERNAL STORE|keystore_password
    WITH BACKUP [USING 'backup_identifier'];
5.8.2.3 統一モードでの外部キーストアにマスター暗号化キーが格納されたPDBのアンプラグ

HSMを使用するように構成されたCDBからPDBをアンプラグした後、それを同様に外部キーストアを使用するように構成された別のCDBにプラグインできます。

  1. PDBをアンプラグします。
    PDBがすでにアンプラグされているかどうかを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのSTATUS列を問い合せます。
  2. ソースCDBで使用されていた外部キーストア内のアンプラグされたPDBのマスター暗号化キーを、宛先CDBで使用中の外部キーストアに移動します。

    外部キーストア間でのマスター暗号化キーの移動の詳細は、外部キーストアのドキュメントを参照してください。

5.8.2.4 統一モードでの外部キーストアにマスター暗号化キーが格納されたPDBのプラグイン

ADMINISTER KEY MANAGEMENT文を使用すると、TDEマスター暗号化キーを外部キーストアから、別のCDBに移動したPDBにインポートできます。

  1. アンプラグされたPDBを、外部キーストアを使用するように構成された宛先CDBにプラグインします。
    PDBがすでにプラグインされているかどうかを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのSTATUS列を問い合せます。
    プラグイン操作の後、プラグインされたPDBは制限モードになります。
  2. ソースCDBを使用するように構成された外部キーストアのマスター暗号化キーが、宛先CDBの外部キーストアで使用可能であることを確認します。
  3. プラグされたPDBに、ADMINISTER KEY MANAGEMENTまたはSYSKM権限を付与されたユーザーとしてログインします。

    たとえば:

    sqlplus sec_admin@hr_pdb as syskm
    Enter password: password
    Connected.
    

    SYSDBA管理者に正しいPDBを問い合せてください。現在のコンテナを確認するには、SHOW CON_NAMEコマンドを実行します。

  4. プラグされたPDBのマスター暗号化キーを開きます。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY keystore_passsword;
  5. 外部キーストアのマスター暗号化キーをPDBにインポートします。
    ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS 
    WITH SECRET "OKV" FROM 'OKV' 
    IDENTIFIED BY keystore_password; 
  6. PDBを再起動します。
    ALTER PLUGGABLE DATABASE PDB1 CLOSE;
    ALTER PLUGGABLE DATABASE PDB1 OPEN;

5.8.3 統一モードでの暗号化データを含むクローニングされたPDBの管理

統一モードでは、暗号化データを含むPDBをCDBでクローニングできます。

5.8.3.1 統一モードでの暗号化データを含むクローニングされたPDBの管理について

PDBをクローニングする際、ソースPDBのマスター暗号化キーをクローニングされたPDBが使用できるようにしておく必要があります。

これにより、クローニングされたPDBが暗号化データに対して操作を行うことができます。クローニングされたPDBがリモートのCDBにある場合であっても、Oracle Databaseがキーを転送するため、クローニングを実行するためにキーをエクスポートまたはインポートする必要はありません。ただし、クローンを作成するCDBのキーストア・パスワードは指定する必要があります。

PDBに暗号化されたデータがある場合は、CDB間でPDBのリモート・クローニング操作を実行し、CDB間でPDBを再配置できます。

5.8.3.2 統一モードでの暗号化データを含むPDBのCDBへのクローニング

KEYSTORE IDENTIFIED BY句を含むCREATE PLUGGABLE DATABASE文によって、暗号化データを含むPDBをクローニングできます。

  1. CDBルートでは、V$ENCRYPTION_WALLET動的ビューのSTATUS列を問い合せて、キーストアがCDBルートで開いていることを確認します。
  2. ADMINISTER KEY MANAGEMENTおよびCREATE PLUGGABLE DATABASE権限が付与されたユーザーとして、PDBにログインします。
  3. PDBをクローニングするには、CREATE PLUGGABLE DATABASE文をKEYSTORE IDENTIFIED BY句を指定して使用します。

    たとえば:

    CREATE PLUGGABLE DATABASE cdb1_pdb3 
    FROM cdb1_pdb1 
    FILE_NAME_CONVERT=('cdb1_pdb1', 'pdb3/cdb1_pdb3') KEYSTORE 
    IDENTIFIED BY EXTERNAL STORE|keystore_password [NO REKEY];

    keystore_passwordcdb1_pdb3クローンが作成されるCDBのキーストアのパスワードに置き換えます。

    デフォルトでは、PDBのクローニング操作または再配置操作中に、データ暗号化キーがキー更新され、すべての暗号化された表領域が再暗号化されます。このキー更新操作により、大規模なPDBのクローニングまたは再配置にかかる時間が長くなる場合があります。オプションのNO REKEY句を使用すると、データ暗号化キーは更新されず、暗号化された表領域は再暗号化されません。

    クローニングされたPDBの作成後、暗号化データは、元のPDBのマスター暗号化キーを使用して、クローンにより引き続きアクセスできます。PDBがクローニングされた後、暗号化された表領域にユーザー・データがある場合があります。ソースPDBのマスター暗号化キーが宛先PDBにコピーされているため、この暗号化データには引き続きアクセスできます。クローンはソースPDBのコピーでありながらも、最終的には独自の動作に従い、独自のデータおよびセキュリティ・ポリシーを持つため、クローニングされたPDBのマスター暗号化キーをキー更新する必要があります。
  4. クローニングされたPDBのマスター暗号化キーをキー更新します。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEY 
    FORCE KEYSTORE
    IDENTIFIED BY keystore_password 
    WITH BACKUP USING 'emp_key_backup';

    キーストアはキー更新操作中に開いている必要があるため、この例では、FORCE KEYSTOREが含まれています。

    クローニングされたPDBのマスター暗号化キーをキー更新するまで、クローンでは引き続き元のPDBのマスター暗号化キーを使用できます。ただし、これらのマスター暗号化キーは、クローニングされたPDBのV$動的ビューには表示されません。マスター暗号化キーをキー更新すると、クローニングされたPDBで独自の一意のキーが使用されるようになり、そのキーがV$ビューに表示されます。
5.8.3.3 統一モードで、暗号化データを含むPDBのリモート・クローニングを2つのCDB間で実行する

KEYSTORE IDENTIFIED BY句を含むCREATE PLUGGABLE DATABASE文によって、暗号化データを含むPDBをリモートからクローニングできます。

  1. CDBルートでは、V$ENCRYPTION_WALLET動的ビューのSTATUS列を問い合せて、キーストアがCDBルートで開いていることを確認します。
  2. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、PDBにログインします。
  3. リモートからクローニングするPDBのデータベース・リンクを作成します。
    データベース・リンクを作成するには、CREATE DATABASE LINK SQL文を使用します。リモートPDBまたは非CDBのクローニングに必要なデータベース・リンクの前提条件に従って、データベース・リンクを作成する必要があります。
  4. PDBのクローニングを実行するには、CREATE PLUGGABLE DATABASE文をKEYSTORE IDENTIFIED BY句を指定して使用します。

    たとえば:

    CREATE PLUGGABLE DATABASE cdb1_pdb3 
    FROM cdb1_pdb1 
    FILE_NAME_CONVERT=('cdb1_pdb1', 'pdb3/cdb1_pdb3') KEYSTORE 
    IDENTIFIED BY keystore_password;

    keystore_passwordcdb1_pdb3クローンが作成されるCDBのキーストアのパスワードに置き換えます。

    クローニングされたPDBの作成後、暗号化データは、元のPDBのマスター暗号化キーを使用して、クローンにより引き続きアクセスできます。PDBがクローニングされた後、暗号化された表領域にユーザー・データがある場合があります。ソースPDBのマスター暗号化キーが宛先PDBにコピーされているため、この暗号化データには引き続きアクセスできます。クローンはソースPDBのコピーでありながらも、最終的には独自の動作に従い、独自のデータおよびセキュリティ・ポリシーを持つため、クローニングされたPDBのマスター暗号化キーをキー更新する必要があります。
  5. リモートからクローニングされたPDBのマスター暗号化キーをキー更新します。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEY 
    FORCE KEYSTORE
    IDENTIFIED BY keystore_password 
    WITH BACKUP USING 'emp_key_backup';

    キーストアはキー更新操作中に開いている必要があるため、この例では、FORCE KEYSTOREが含まれています。

    クローニングされたPDBのマスター暗号化キーをキー更新するまで、クローンでは引き続き元のPDBのマスター暗号化キーを使用できます。ただし、これらのマスター暗号化キーは、クローニングされたPDBのV$動的ビューには表示されません。マスター暗号化キーをキー更新すると、クローニングされたPDBで独自の一意のキーが使用されるようになり、そのキーがV$ビューに表示されます。
5.8.3.4 TDE Academyビデオ: 暗号化されたPDBのリモートでのクローニングおよびアップグレード
5.8.3.5 統一モードで、暗号化データを含むクローニングされたPDBをCDB間で再配置する

KEYSTORE IDENTIFIED BY句を含むCREATE PLUGGABLE DATABASE文によって、暗号化データを含むクローニングされたPDBをCDB間で再配置できます。

  1. CDBルートでは、V$ENCRYPTION_WALLET動的ビューのSTATUS列を問い合せて、キーストアがCDBルートで開いていることを確認します。
  2. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、PDBにログインします。
  3. クローニングするPDBのデータベース・リンクを作成します。
    データベース・リンクを作成するには、CREATE DATABASE LINK SQL文を使用します。リモートPDBまたは非CDBのクローニングに必要なデータベース・リンクの前提条件に従って、データベース・リンクを作成する必要があります。
  4. PDBを再配置するには、CREATE PLUGGABLE DATABASE文をKEYSTORE IDENTIFIED BY句を指定して使用します。

    たとえば:

    CREATE PLUGGABLE DATABASE cdb1_pdb3 
    FROM cdb1_pdb1 
    FILE_NAME_CONVERT=('cdb1_pdb1', 'pdb3/cdb1_pdb3') KEYSTORE 
    IDENTIFIED BY keystore_password;

    keystore_passwordcdb1_pdb3クローンが作成されるCDBのキーストアのパスワードに置き換えます。

    クローニングされたPDBの作成後、暗号化データは、元のPDBのマスター暗号化キーを使用して、クローンにより引き続きアクセスできます。PDBがクローニングされた後、暗号化された表領域にユーザー・データがある場合があります。ソースPDBのマスター暗号化キーが宛先PDBにコピーされているため、この暗号化データには引き続きアクセスできます。クローンはソースPDBのコピーでありながらも、最終的には独自の動作に従い、独自のデータおよびセキュリティ・ポリシーを持つため、クローニングされたPDBのマスター暗号化キーをキー更新する必要があります。
  5. ALTER PLUGGABLE DATABASE文を使用して再配置操作を実行します。
    たとえば:
    ALTER PLUGGABLE DATABASE cdb1_pdb3
    OPEN RELOCATE TO 'instance_name';
  6. 再配置されたPDBのマスター暗号化キーをキー更新します。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEY 
    [FORCE KEYSTORE]
    IDENTIFIED BY keystore_password 
    WITH BACKUP [USING 'emp_key_backup'];

    キーストアはキー更新操作中に開いている必要があるため、この例では、FORCE KEYSTOREが含まれています。

    クローニングされたPDBのマスター暗号化キーをキー更新するまで、クローンでは引き続き元のPDBのマスター暗号化キーを使用できます。ただし、これらのマスター暗号化キーは、クローニングされたPDBのV$動的ビューには表示されません。マスター暗号化キーをキー更新すると、クローニングされたPDBで独自の一意のキーが使用されるようになり、そのキーがV$ビューに表示されます。

5.8.4 統一モードでのキーストアの開閉操作の機能

統一モードでキーストアの開閉操作がどのように機能するかを知っておく必要があります。

統一モードの各PDBに関して、透過的データ暗号化の操作が続行できるように、PDBでパスワード保護されたソフトウェア・キーストアまたは外部キーストアを明示的に開く必要があります。(自動ログイン・ソフトウェア・キーストアおよびローカル自動ログイン・ソフトウェア・キーストアは自動的に開きます。)PDBのキーストアを閉じることによって、PDBのすべての透過的データ暗号化操作がブロックされます。

PDBにおけるキーストアの開閉操作は、CDBルートにおけるキーストアの開閉ステータスに依存します。

次の点に注意してください。

  • 統一モードの各PDBについて個別のキーストアのパスワードを作成できます。

  • 個々のPDBでソフトウェア・パスワード保護されたキーストアまたは外部キーストアを手動で開く前に、CDBルートでキーストアを開く必要があります。

  • 自動ログイン・キーストアが使用されているか、キーストアが閉じている場合は、キーストアを開くまたは閉じるときに、ADMINISTER KEY MANAGEMENT文にFORCE KEYSTORE句を含めます。

  • キーストアがパスワード用に外部ストアを使用するパスワード保護されたソフトウェア・キーストアである場合は、IDENTIFIED BY句をEXTERNAL STOREに設定します。

  • 個々のPDBでTDEマスター暗号化キーを設定するには、事前にCDBルートでキーを設定する必要があります。

  • (自動ログイン・ソフトウェア・キーストアおよびローカル自動ログイン・ソフトウェア・キーストアは自動的に開きます。)これらを最初にCDBルートからまたはPDBから、手動で開く必要はありません。

  • CDBルートでキーストアを閉じると、これに依存するPDBのキーストアも閉じます。rootにおいてキーストアを閉じる操作は、CONTAINER句がALLに設定されていてキーストアを閉じる操作を実行することと同等です。

  • CDBルートでADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN文を実行し、CONTAINER句をALLに設定した場合、キーストアは、統一モードで構成されている各PDBでのみ開くことになり、分離モードで構成されているいずれのPDBも開かれません。

5.8.5 統一モードでのすべてのPDBのキーストア・ステータスの確認

V$ENCRYPTION_WALLETビューを使用する便利なファンクションを作成して、CDBにおけるすべてのPDBのキーストアのステータスを確認できます。

V$ENCRYPTION_WALLETビューでは、PDBのキーストアのステータス(開いているか、閉じているか、ソフトウェアまたは外部キーストアを使用しているかなど)が表示されます。

  • V$ENCRYPTION_WALLETビューを使用してキーストアのステータスを検出するファンクションを作成するには、CREATE PROCEDURE PL/SQL文を使用します。

例5-2では、このファンクションを作成する方法を示しています。

例5-2 CDBにおけるすべてのPDBに関するキーストアのステータスを確認するファンクション

CREATE OR REPLACE PROCEDURE all_pdb_v$encryption_wallet
IS
    err_occ            BOOLEAN;
    curr_pdb           VARCHAR2(30);
    pdb_name           VARCHAR2(30);
    wrl_type           VARCHAR2(20);
    status             VARCHAR2(30);
    wallet_type        VARCHAR2(20);
    wallet_order       VARCHAR2(12);
    fully_backed_up    VARCHAR2(15);
    wrl_parameter      VARCHAR2(4000);
    cursor sel_pdbs IS SELECT NAME FROM V$CONTAINERS
                       WHERE NAME <> 'PDB$SEED' order by con_id desc;
  BEGIN
 
    -- Store the original PDB name
    SELECT sys_context('userenv', 'con_name') INTO curr_pdb FROM DUAL;
    IF curr_pdb <> 'CDB$ROOT' THEN
      dbms_output.put_line('Operation valid in ROOT only');
    END IF;
 
    err_occ := FALSE;
    dbms_output.put_line('---');
    dbms_output.put_line('PDB_NAME                       WRL_TYPE STATUS                        ');
    dbms_output.put_line('------------------------------ -------- ------------------------------');
    dbms_output.put_line('WALLET_TYPE          WALLET_ORDER FULLY_BACKED_UP');
    dbms_output.put_line('-------------------- ------------ ---------------');
    dbms_output.put_line('WRL_PARAMETER');
    dbms_output.put_line('--------------------------------------------------------------------------');
    FOR pdbinfo IN sel_pdbs LOOP
 
      pdb_name := DBMS_ASSERT.ENQUOTE_NAME(pdbinfo.name, FALSE);
      EXECUTE IMMEDIATE 'ALTER SESSION SET CONTAINER = ' || pdb_name;
 
      BEGIN
        pdb_name := rpad(substr(pdb_name,1,30), 30, ' ');
        EXECUTE IMMEDIATE 'SELECT wrl_type from V$ENCRYPTION_WALLET' into wrl_type; 
        wrl_type := rpad(substr(wrl_type,1,8), 8, ' ');
        EXECUTE IMMEDIATE 'SELECT status from V$ENCRYPTION_WALLET' into status;
        status := rpad(substr(status,1,30), 30, ' ');
        EXECUTE IMMEDIATE 'SELECT wallet_type from V$ENCRYPTION_WALLET' into wallet_type;
        wallet_type := rpad(substr(wallet_type,1,20), 20, ' ');
        EXECUTE IMMEDIATE 'SELECT wallet_order from V$ENCRYPTION_WALLET' into wallet_order;        
        wallet_order := rpad(substr(wallet_order,1,9), 12, ' ');
        EXECUTE IMMEDIATE 'SELECT fully_backed_up from V$ENCRYPTION_WALLET' into fully_backed_up;
        fully_backed_up := rpad(substr(fully_backed_up,1,9), 15, ' ');
        EXECUTE IMMEDIATE 'SELECT wrl_parameter from V$ENCRYPTION_WALLET' into wrl_parameter;
        wrl_parameter := rpad(substr(wrl_parameter,1,79), 79, ' ');
        dbms_output.put_line(pdb_name || ' ' || wrl_type || ' ' || status);
        dbms_output.put_line(wallet_type || ' ' || wallet_order || ' ' || fully_backed_up);
        dbms_output.put_line(wrl_parameter);
 
      EXCEPTION
        WHEN OTHERS THEN
        err_occ := TRUE;
      END;
    END LOOP;
 
    IF err_occ = TRUE THEN
       dbms_output.put_line('One or more PDB resulted in an error');
    END IF;
  END;
.
/
set serveroutput on
exec all_pdb_v$encryption_wallet;