7 分離モードでのキーストアおよびTDEマスター暗号化キーの管理

分離モードでは、各プラガブル・データベース(PDB)のキーストアを作成できます。

7.1 分離モードの構成について

分離モードでは、プラガブル・データベース(PDB)が独自のキーストアとキーストアのパスワードを持つため、そのPDBからのみキーストアとTDEマスター暗号化キーを管理します。

分離モードのPDBは、パッチ32235513を適用したOracle Databaseリリース19.11以降のすべてのオンプレミス・デプロイメントで使用可能になりました。(リリース19.14以降ではパッチは必要ありません。)

統一モードと同様に、まずWALLET_ROOTパラメータとTDE_CONFIGURATIONパラメータを設定することで、分離モードを使用するようにPDBを構成する必要があります。これらのパラメータを設定すると、PDBからキーストアを作成および管理できるようになります。この方法では、次のシナリオが考えられます。

  • 統一モードのPDBは、ルート・コンテナからTDE構成を継承します。たとえば、CDBルートで作成したキーストアが、そのルートに関連付けられた統一モードのPDBによって使用されます。

  • 分離モードで構成されているPDBでは、独自のキーストアの作成および管理を個別に行うことができます。分離モードのPDBには、CDBルートのキーストアとは別に、独自のキーストアを作成できます。

このシナリオは、多くのPDBでは1つのタイプのキーストアを使用する必要があるが、異なるタイプのキーストアを使用する必要があるPDBもいくつか含まれている場合に便利です。異なるタイプのキーストアとは、TDEウォレットかOracleがサポートするいずれかの外部キーストア(Oracle Key Vault、クラウド・キー管理サービスなど)を指します。Oracleサーバーは単一のPKCS#11ベンダー・ライブラリしかロードできないため、1つのCDB環境に異なる外部キーストアのタイプを混在させることはできません。必要に応じ、これらのPDBを分離モードで構成して、各PDBが独自のキーストアを使用できるようにすることができます。

ノート:

Oracle Cloud Infrastructure (OCI)クラウド・ツールでは分離モードのPDBはサポートされていません。このサポート対象外は、Oracle Base Database Service (BaseDB)、ExaDB-D、ExaDB-D@Azure、ExaDB-C@C、ADB-C@Cに対して、これらのデータベース・デプロイメントのキー管理をOracle Key Vaultが提供している場合でも適用されます。

7.2 分離モードで実行可能な操作

分離モードでは、ADMINISTER KEY MANAGEMENTの多くの操作を実行できます。

これらの操作には、キーストアの作成、バックアップ、オープンや、キーストアのパスワード変更、マージ、クローズなどが含まれます。また、暗号化キーの作成、アクティブ化、タグ付け、移動、エクスポート、インポート、移行や、クライアント・シークレットの追加、更新、削除も実行できます。

表7-1は、分離モードのPDBで実行できるADMINISTER KEY MANAGEMENTの操作を示しています。

表7-1 分離モードでのADMINISTER KEY MANAGEMENTの操作

操作 構文 分離モードでのノート

キーストアの作成

ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 
IDENTIFIED BY isolated_PDB_keystore_password;

分離モードのPDBでは、パスワード保護されたキーストア、ローカル自動ログイン・キーストアおよび自動ログイン・キーストアを作成できます。

自動ログイン・キーストアの作成

ADMINISTER KEY MANAGEMENT
CREATE [LOCAL] AUTO_LOGIN KEYSTORE
FROM KEYSTORE IDENTIFIED BY isolated_PDB_keystore_password;

分離されたPDBは、パスワードで保護されたウォレットと(ローカル)自動オープン・ウォレットの両方のキーストアの場所をWALLET_ROOT/pdb_guid/tdeから認識します。

キーストアを開く

ADMINISTER KEY MANAGEMENT
SET KEYSTORE OPEN
[FORCE KEYSTORE]
IDENTIFIED BY EXTERNAL STORE | isolated_PDB_keystore_password;

EXTERNAL_STORE句は、WALLET_ROOT/PDB-GUID/locationtde_sepsディレクトリにあるウォレットから分離モードのPDBキーストア・パスワードを取得します。

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

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

-

TDEウォレットのバックアップ

ADMINISTER KEY MANAGEMENT 
BACKUP KEYSTORE 
[USING 'backup_identifier']
IDENTIFIED BY EXTERNAL STORE | TDE_wallet_password]
[TO 'TDE_wallet_backup_location'];

-

キーストアの内容を既存のキーストアにマージする

ADMINISTER KEY MANAGEMENT 
MERGE KEYSTORE 'keystore1_location'
[IDENTIFIED BY TDE_wallet1_password]
INTO EXISTING KEYSTORE 'keystore2_location'
IDENTIFIED BY TDE_wallet2_password
WITH BACKUP [USING 'backup_identifier'];

-

2つのキーストアの内容をマージして3番目のキーストアを作成する

ADMINISTER KEY MANAGEMENT
MERGE KEYSTORE 'keystore1_location'
[IDENTIFIED BY TDE_wallet1_password]
AND KEYSTORE 'keystore2_password'
[IDENTIFIED BY TDE_wallet2_password]
INTO NEW KEYSTORE 'keystore3_location'
IDENTIFIED BY TDE_wallet3_password;

-

キーストアを閉じる

ADMINISTER KEY MANAGEMENT 
SET KEYSTORE CLOSE
[IDENTIFIED BY [EXTERNAL STORE | keystore_password]];

-

分離モードのPDBのキーストアが開いているときにCDBルートのキーストアを閉じる

ADMINISTER KEY MANAGEMENT 
FORCE KEYSTORE CLOSE
[IDENTIFIED BY [EXTERNAL STORE | keystore_password]];

FORCE句を使用すると、分離モードのPDBのキーストアが開いていても、CDBルート内のキーストアを閉じることができます。

新しいTDEマスター暗号化キーの作成およびアクティブ化(キー更新)

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

-

今すぐ(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 | TDE_wallet_password 
WITH BACKUP [USING 'backup_identifier']
[CONTAINER = CURRENT];

-

既存のTDEマスター暗号化キーのアクティブ化

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

-

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

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

-

TDEマスター暗号化キーのエクスポート

ADMINISTER KEY MANAGEMENT 
EXPORT [ENCRYPTION] KEYS 
WITH SECRET secret TO 'filename'
IDENTIFIED BY TDE_wallet_password
[WITH IDENTIFIER IN 
{ 'key_id' [, 'key_id' ]... | 
( subquery ) }];

-

TDEマスター暗号化キーのインポート

ADMINISTER KEY MANAGEMENT 
IMPORT [ENCRYPTION] KEYS 
WITH SECRET secret FROM 'filename'
IDENTIFIED BY TDE_wallet_password
WITH BACKUP [USING 'backup_identifier'];

-

暗号化データベースのTDEウォレットからOracle Key Vaultへの移行

ADMINISTER KEY MANAGEMENT
SET [ENCRYPTION] KEY
IDENTIFIED BY Oracle_Key_Vault_password
[FORCE KEYSTORE]
MIGRATE USING TDE_wallet_password;

-

暗号化されたデータベースの外部キーストアからTDEウォレットへの逆移行

ADMINISTER KEY MANAGEMENT 
SET [ENCRYPTION] KEY
IDENTIFIED BY TDE_wallet_password
REVERSE MIGRATE USING Oracle_Key_Vault_password;

-

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

ADMINISTER KEY MANAGEMENT 
ADD SECRET 'secret' FOR CLIENT 'client_identifier'
[USING TAG 'tag_name' ]
IDENTIFIED BY [EXTERNAL STORE | isolated_PDB_keystore_password]
WITH BACKUP [USING 'backup_identifier'];

-

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

ADMINISTER KEY MANAGEMENT 
UPDATE SECRET 'secret'
FOR CLIENT 'client_identifier'
[USING TAG 'tag_name' ]
IDENTIFIED BY [EXTERNAL STORE | keystore_password]
WITH BACKUP [USING 'backup_identifier'];

-

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

ADMINISTER KEY MANAGEMENT 
DELETE SECRET
FOR CLIENT 'client_identifier'
IDENTIFIED BY [EXTERNAL STORE | keystore_password]
WITH BACKUP [USING 'backup_identifier'];

-

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

この操作では2つのアクションが実行されます。まず、PDBのTDE_CONFIGURATIONを変更して分離モードにします。次に、PDBの現在および以前のアクティブTDEマスター暗号化キーをルート・キーストアからPDBの新しく作成した分離キーストアに移動します。このキーストアは、独自の分離キーストア・パスワードを持ち、そのPDBが独自のキーを管理できるようになります。

7.3 分離モードのPDBで実行できない操作

分離モードのPDBで実行できないADMINISTER KEY MANAGEMENTの操作がいくつかあります。

これには次の操作が含まれます。

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

  • 暗号化キーをCDBルートのキーストアから分離モードで構成されているPDBのキーストアに移動する

7.4 分離モードでのキーストアの場所とタイプの構成

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

7.4.1 分離モードのCDBのキーストアの場所およびキーストア・タイプの構成

分離モードを構成するには、CDBルートにある初期化パラメータ・ファイルのWALLET_ROOTと、分離するPDBのTDE_CONFIGURATIONを設定します。

  1. ルートで、WALLET_ROOTパラメータが正しく設定されていることを確認します。
    たとえば:
    SHOW PARAMETER WALLET_ROOT
  2. ALTER SYSTEM権限が付与されているユーザーとして、分離モードのPDBに接続します。
    たとえば:
    CONNECT sec_admin@pdb_name
  3. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限を持つユーザーとして、次の文をPDBで実行します:
    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY "iso_PDB_TDE_wallet_password";
    この文は次の処理を実行します:
    • 分離されたPDBのTDE_CONFIGURATIONFILEに設定します。
    • WALLET_ROOTの下に、ディレクトリpdb_guid/tdeを作成します。
    • 新しいTDEウォレットを独自のパスワードで作成します(このパスワードはCDB管理者に認識されない場合があります)。
  4. 構成を確認します。
    • TDE_CONFIGURATIONパラメータの設定を確認するには、次のように指定します。
      SHOW PARAMETER TDE_CONFIGURATION
      

      出力には、現在のPDBに対して設定したキーストア構成が反映されている必要があります。異なるキーストア構成が表示される場合(OKVに設定したがFILEと表示される場合など)は、その設定が統一モードでCDBルートに対して設定されたキーストア構成を示している可能性があります。

    • キーストアのモードを確認するには、次のように指定します。
      SELECT KEYSTORE_MODE FROM V$ENCRYPTION_WALLET;

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

分離モードを構成すると、PDBが統一モードであったときに使用可能であったCDBルートのキーストアが、このPDBで使用できなくなります。この段階で、PDBは固有のキーストアを使用するように構成されます。KEYSTORE_CONFIGURATIONパラメータがFILE (PDBがTDEウォレットを使用するように構成されていることを示す)であった場合、そのPDBに対して構成されるキーストアの場所は、WALLET_ROOT/PDB-GUID/tdeです。キーストアがその場所に存在し、TDEマスター暗号化キーが含まれている場合、そのキーはこのPDBのみが使用可能で、他のPDBは使用できません。その場所にキーストアが存在しない場合は、この時点でTDEウォレットを作成して、TDEマスター暗号化キーを設定する手順に進むことができます。分離モードのPDBを、後から統一モードのPDBに戻すことにした場合は、ADMINISTER KEY MANAGEMENT UNITE KEYSTORE文を使用できます。ADMINISTER KEY MANAGEMENT UNITE KEYSTOREを実行すると、PDBのキーストアからCDBルートのキーストアにキーが移されますが、クライアント・シークレットは元の場所に残ります。このため、元の場所にクライアント・シークレットがなかった場合、PDBのキーストアは実質的に「空」のままになります。これで、バックアップして削除できる状態になります。キーストアを削除する場合は、キーストアが空であっても、必ず事前にバックアップを行ってください。

7.4.2 例: 古いバージョンの制御ファイルのリストア

リストアが必要な古いバージョンの制御ファイルがあり、分離モードで構成されているPDBの数が少ない場合は、TDE_CONFIGURATIONを設定できます。

CDBルートとPDBの両方がマウント状態である場合は、CDBルートからPDBのキーストア構成のみを変更できます。

  1. SYSDBA管理権限を付与されたユーザーとしてCDBルートにログインします。

  2. 変更する各PDBに対して、次の構文を使用します。

    ALTER SYSTEM SET TDE_CONFIGURATION="CONTAINER=pdb_name;KEYSTORE_CONFIGURATION=keystore_type" SCOPE=memory;
    

    たとえば、キーストア・タイプとしてFILE (TDEウォレット)を使用するhrpdbsalespdbのPDBを構成する場合は、次の構文を使用します:

    ALTER SYSTEM SET TDE_CONFIGURATION="CONTAINER=hrpdb;KEYSTORE_CONFIGURATION=FILE" SCOPE=memory;
    ALTER SYSTEM SET TDE_CONFIGURATION="CONTAINER=salespdb;KEYSTORE_CONFIGURATION=FILE" SCOPE=memory;
    
  3. 各PDBのTDE_CONFIGURATIONパラメータを設定したら、CDBルートにログインして、CDBルート自体のTDE_CONFIGURATIONを設定します。

    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE";

    この段階で、CDBルートはマウント状態になっています。CONTAINER属性を含むALTER SYSTEMを使用して設定されたTDE_CONFIGURATIONパラメータの値は、CDBルートのメモリー内にのみ存在します。構成が各PDBに正しく適用されるようにするには、PDBを閉じてから再オープンする必要があります。分離モードのPDBが開かれると、CDBルートで発行されたALTER SYSTEM文によって設定された構成が制御ファイルから読み取られ、その後、自動的にPDBに適用されます。

  4. 各PDBに接続し、PDBを閉じて再オープンします。

    ALTER PLUGGABLE DATABASE pdb_name CLOSE IMMEDIATE;
    ALTER PLUGGABLE DATABASE pdb_name OPEN;

7.4.3 例: 制御ファイル紛失の問題への対処

制御ファイルを紛失した場合は、ALTER SYSTEM文を使用してこの問題に対処できます。

SCOPEをメモリーに設定してこれらの文を実行すると、CONTAINERの値がメモリーに格納されます。分離モードのPDBを開くと、そのPDBに対するこの構成が自動的に更新されます。

Oracle Data Guard環境を使用している場合は、制御ファイルを修正するために、プライマリ・データベースとスタンバイ・データベースの両方で次の文を実行します。

  1. SYSDBA管理権限を付与されたユーザーとしてCDBルートにログインします。

  2. システムの正確な状態が不明な場合は、RESETを指定してALTER SYSTEMを実行する必要があります。

    たとえば:

    ALTER SYSTEM RESET TDE_CONFIGURATION SCOPE=memory;
  3. 変更する各PDBに対して、次の構文を使用します。

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

    たとえば、キーストア・タイプとしてFILE (TDEウォレット)を使用してhrpdbsalespdbのPDBを構成する場合は、次の構文を使用します:

    ALTER SYSTEM SET TDE_CONFIGURATION="CONTAINER=hrpdb;KEYSTORE_CONFIGURATION=FILE" SCOPE=memory; 
    ALTER SYSTEM SET TDE_CONFIGURATION="CONTAINER=salespdb;KEYSTORE_CONFIGURATION=FILE" SCOPE=memory; 
    
  4. 各PDBのTDE_CONFIGURATIONパラメータを設定したら、CDBルートにログインして、CDBルート自体のTDE_CONFIGURATIONを設定します。

    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE";

    この段階で、CDBルートはマウント状態になっています。CONTAINER属性を含むALTER SYSTEMを使用して設定されたTDE_CONFIGURATIONパラメータの値は、CDBルートのメモリー内にのみ存在します。構成が各PDBに正しく適用されるようにするには、PDBを閉じてから再オープンする必要があります。分離モードのPDBが開かれると、CDBルートで発行されたALTER SYSTEM文によって設定された構成が制御ファイルから読み取られ、その後、自動的にPDBに適用されます。

  5. 各PDBに接続し、PDBを閉じて再オープンします。

    ALTER PLUGGABLE DATABASE pdb_name CLOSE IMMEDIATE;
    ALTER PLUGGABLE DATABASE pdb_name OPEN;

7.4.4 例: Oracle Real Application Clusters環境での分離モードの構成

ALTER SYSTEMを使用して、Oracle Real Application Clusters (Oracle RAC)環境で分離モードを構成できます。

  • ALTER SYSTEM文の結果が各Oracle RACノードに確実に適用されるようにするには、ALTER SYSTEM文のSID句に、ワイルドカード(*)を次のように指定します。この文は、CDBルートまたはPDBのどちらからでも実行できます。

    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=keystore_type" SID='*';

7.5 分離モードでのTDEウォレットおよびTDEマスター暗号化キーの構成

分離モードでは、TDEウォレットがPDBに関連付けられます。

7.5.1 分離モードでのTDEウォレットの構成について

分離モードでは、すべてのタイプのTDEウォレット(パスワード保護、資格証明が外部ストアから提供されるパスワード保護、自動ログイン、ローカル自動ログイン)を作成できます。

KEYSTORE_CONFIGURATION属性をFILE (TDEウォレットを使用)に設定してPDBを分離モードで構成した後に、そのPDBで暗号化を有効にするには、TDEウォレットを作成して、そのTDEウォレットを開き、そのTDEウォレット内でTDEマスター暗号化キーを設定する必要があります。この操作の完了後に、PDB内のアクセス可能な表および表領域のデータを暗号化できるようになります。

マルチテナント環境では、TDEウォレットの資格証明を保管するための安全な外部ストアを作成できます。この機能を使用すると、キーストア・パスワードを隠すことができます。つまり、ユーザーの操作なしにデータベースにアクセスできるスクリプトやツール(夜間に実行されるバッチ・スクリプトなど)に、ウォレット・パスワードを保存する必要がなくなります。WALLET_ROOTパラメータが指定されているときの外部ストアの場所は、CDBルートの場合はWALLET_ROOT/tde_seps、PDBの場合はWALLET_ROOT/pdb_guid/tde_sepsになります。WALLET_ROOTパラメータを設定すると、単一の一元的外部ストアがなくなるため、キーストア・パスワードが更新された場合は、対応する外部ストアも更新する必要があります。WALLET_ROOTパラメータが指定されていない場合は、CDBルートとすべてのPDBの両方について、外部ストアの場所が同じになります。この場合、外部ストアの場所は、EXTERNAL_KEYSTORE_CREDENTIAL_LOCATION初期化パラメータで設定する必要があります。WALLET_ROOTパラメータが指定されていない場合は、単一の一元的外部ストアが存在するため、キーストア・パスワードを更新した場合に、EXTERNAL_KEYSTORE_CREDENTIAL_LOCATIONにある一元的外部ストアを更新するだけで済みます。

マルチテナント環境では、ADMINISTER KEY MANAGEMENT文をIDENTIFIED BY EXTERNAL STORE句を使用して実行すると、様々なPDBがこの外部ストアの場所にアクセスできます。このように、パスワードをまとめて配置すると、パスワードの更新は外部ストアで一度のみで済みます。

7.5.2 ステップ1: 分離モードで構成されたPDBでTDEウォレットを作成する

パスワードで保護されたTDEウォレットには、キーストアのキーおよび資格証明を保護するためのパスワードが必要になります。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. SHOW PARAMETERコマンドを使用して、WALLET_ROOTが設定され、TDE_CONFIGURATIONKEYSTORE_CONFIGURATION=FILEに設定されていることを確認します。
  3. 次の構文を使用して、ADMINISTER KEY MANAGEMENT SQL文を実行してキーストアを作成します。
    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY TDE_wallet_password;

    このコマンドは、WALLET_ROOT/pdb_guidの下に/tdeディレクトリを作成し(まだ存在しない場合)、このディレクトリにパスワードで保護されたTDEウォレットを作成します。WALLET_ROOTがASMの共有ディレクトリ(+DATA/DB_UNIQUE_NAME)を指している場合は、CREATE KEYSTORE文によってpdb_guid/tdeサブディレクトリとTDEウォレットが自動作成されます。

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

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

    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY password;
    
    keystore altered.
    
これらのステップを実行すると、TDEウォレットであるewallet.p12ファイルがウォレットの場所に生成されます。

7.5.3 ステップ2: 分離モードのPDBでTDEウォレットを開く

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

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. ADMINISTER KEY MANAGEMENT文を実行してTDEウォレットを開きます。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY TDE_wallet_password | EXTERNAL STORE;
    
    Keystore altered.

    自動ログイン・ウォレットが構成済で現時点で開いているときに、パスワードで保護されたTDEウォレットを開くように切り替えるには、次のようにFORCE KEYSTORE句を指定します。

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

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

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

  3. TDEウォレットが開いていることを確認します。
    SELECT STATUS FROM V$ENCRYPTION_WALLET;

7.5.4 ステップ3: 分離モードのPDBのTDEウォレットでTDEマスター暗号化キーを設定する

分離モードのPDBのTDEウォレットでTDEマスター暗号化キーを設定するには、ADMINISTER KEY MANAGEMENT文とともにSET KEY句を使用します。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。
  2. データベースがREAD WRITEモードでオープンしていることを確認します。
    ステータスを確認するには、show pdbsコマンドを実行します。
  3. ADMINISTER KEY MANAGEMENT SQL文を実行してTDEウォレット内にキーを設定します。
    たとえば、PDBのウォレットがパスワードで保護されていて、PDBが開いていて、PDBのウォレットも開いている場合は、次のように指定します:
    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句は、自動ログイン・キーストアが構成されていて現在開いているときに、パスワードで保護されたTDEウォレットを開くように切り替えます。

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

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

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

7.5.5 ステップ4: 分離モードでデータを暗号化する

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

7.6 分離モードのPDBによるコンテナ・データベースのOracle Key Vault用の構成

分離されたPDBは、それぞれがOracle Key Vault内に専用の仮想ウォレットを保持し、それらには独自のパスワードがあります。

7.6.1 分離モードでの外部キーストアの構成について

PDBが分離モードで構成されている場合に、PDBの外部キーストアを構成できます。

分離モードのPDBの外部キーストアを構成するには、まずWALLET_ROOTパラメータを設定する必要があります。これが必要な理由は2つあります。1つは、将来TDEウォレットに移行できるようにするため、もう1つは、Oracle Key Vaultの構成ファイルがWALLET_ROOTの下の場所から取得されるためです。次に、TDE_CONFIGURATIONパラメータのKEYSTORE_CONFIGURATION属性をOKVに設定し、構成した外部キーストアを開いて、PDBのTDEマスター暗号化キーを設定する必要があります。これらのタスクを完了すると、データベース内のデータを暗号化できるようになります。

ADMINISTER KEY MANAGEMENT文を実行するときにIDENTIFIED BY句を指定する方法は、外部キーストアのタイプによって異なります。次の構文を使用します。

IDENTIFIED BY EXTERNAL STORE|Oracle_Key_Vault_password

Oracle Key Vaultクライアントのインストール時に指定したOracle Key Vaultのパスワードを入力します。その時点でパスワードが指定されていない場合、ADMINISTER KEY MANAGEMENT文のパスワードはNULLになります。

7.6.2 ステップ1: Oracle Key Vaultの分離PDBを構成する

TDE_CONFIGURATIONパラメータを設定することで、Oracle Key Vaultの分離モードPDBを構成できます。

  1. WALLET_ROOTパラメータが設定されている場合は、Oracle Key Vaultクライアント・ソフトウェアをWALLET_ROOT/pdb_guid/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 = '*';

7.6.3 ステップ2: 分離モードのPDBで外部キーストアを開く

分離PDBに外部キーストアへの自動オープン接続がない場合、PDBを開く前に手動で開く必要があります。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。
  2. パスワードを二重引用符で囲んで、外部キーストアを次のように開きます。
    たとえば:
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY Oracle_Key_Vault_password;
  3. データベース・インスタンスを再起動するたびにこの手順を繰り返します。
    CDBルートのキーストアを最初に開く必要があります。

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

分離モードのPDBで外部キーストアを開くと、PDBのTDEマスター暗号化キーを設定できるようになります。

7.6.4.1 分離モードの外部キーストアでのTDEマスター暗号化キーの設定

透過的データ暗号化用に外部キーストアをまだ構成していない場合は、この手順を完了する必要があります。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。
  2. データベースがREAD WRITEモードでオープンしていることを確認します。
    OPEN_MODEREAD WRITEに設定されている場合、TDEマスター暗号化キーを設定できます。ステータスを確認するには、show pdbsコマンドを実行します。
  3. 次の構文を使用して、TDEマスター暗号化キーを設定します。
    ADMINISTER KEY MANAGEMENT SET KEY 
    [USING TAG 'tag'] 
    [FORCE KEYSTORE] 
    IDENTIFIED BY EXTERNAL STORE|Oracle_Key_Vault_password;

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

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

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

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

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

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEY 
    USING TAG 'sessionid=3205062574:terminal=xcvt' 
    FORCE KEYSTORE 
    IDENTIFIED BY EXTERNAL STORE;
    
    keystore altered.
  4. TDEマスター暗号化キーが設定されていることを確認します。
    SELECT MASTERKEY_ACTIVATED FROM V$DATABASE_KEY_INFO;

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

7.6.4.2 分離モードでの以前に構成した暗号化キーの移行

TDEウォレットを以前に構成している場合は、以前に構成したマスター暗号化キーを移行する必要があります。

7.6.5 ステップ4: 分離モードでデータを暗号化する

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

7.7 分離モードでのキーストアおよびTDEマスター暗号化キーの管理

分離モードでキーストアおよびTDEマスター暗号化キーを作成すると、暗号化キーに対してキー更新やタグ付けなどの管理タスクを実行できるようになります。

外部キーストアのパスワードを変更するには、外部キーストアの管理インタフェースを使用する必要があります。ADMINISTER KEY MANAGEMENT文を使用して、この操作を実行することはできません。

7.7.1 分離モードでのキーストア・パスワードの変更

PDBが分離モードの場合に、TDEウォレットのパスワードを変更できます。

外部キーストアのパスワードを変更するには、外部キーストアの管理インタフェースを使用する必要があります。ADMINISTER KEY MANAGEMENT文を使用して、この操作を実行することはできません。

7.7.1.1 分離モードでのパスワードで保護されたTDEウォレット・パスワードの変更

分離モードで、パスワードで保護されたTDEウォレットのパスワードを変更するには、ADMINISTER KEY MANAGEMENT文を使用する必要があります。

このパスワードは、サイトのセキュリティ・ポリシーやコンプライアンス・ガイドライン、およびその他のセキュリティ要件に従って、いつでも変更できます。パスワードを変更するコマンドの一部として、WITH BACKUP句を指定する必要があるため、常に現在のTDEウォレットのバックアップが作成されます。パスワードの変更操作中、暗号化や復号化などの透過的データ暗号化操作は正常に動作し続けます。このパスワードはいつでも変更できます。このパスワードは、安全性が損なわれた可能性があると思われる場合には変更することをお薦めします。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、TDEウォレットのパスワードを変更します:
    ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD 
    [FORCE KEYSTORE] 
    IDENTIFIED BY
    old_password SET new_password 
    [WITH BACKUP [USING 'backup_identifier']];
    

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

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

    • old_passwordは、変更する現在のTDEウォレットのパスワードです。

    • new_passwordは、TDEウォレットに設定する新しいパスワードです。

    次の例では、TDEウォレットのバックアップを作成して、TDEウォレット・パスワードを変更します:

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

    この例では、同じ操作を実行しますが、自動ログインTDEウォレットが使用中であるか、パスワードで保護されたTDEウォレットが閉じられている場合に、FORCE KEYSTORE句を使用します。

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

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

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 外部キーストアを閉じます。
    • たとえば:
      ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE 
      IDENTIFIED BY "external_key_manager_password";
      
    • パスワードが外部に格納されている外部キーストアの場合:
      ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE 
      IDENTIFIED BY EXTERNAL STORE;
  3. "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';
  4. 外部キーストアを開きます。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY "new_external_key_manager_password";
    

    パスワードが外部に格納されている外部キーストアの場合:

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY EXTERNAL STORE;

7.7.2 分離モードでのパスワードで保護されたTDEウォレットのバックアップ

ADMINISTER KEY MANAGEMENT文のBACKUP KEYSTORE句は、パスワードで保護されたTDEウォレットをバックアップします。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、キーストアをバックアップします。
    ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE 
    [USING 'backup_identifier'] 
    [FORCE KEYSTORE] 
    IDENTIFIED BY [EXTERNAL STORE | TDE_wallet_password] 
    [TO 'TDE_wallet_location'];
    

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

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

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

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

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

    次の例では、TDEウォレットをソースTDEウォレットと同じ場所にバックアップします。

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

    次に示すバージョンではTDEウォレットのパスワードが外部に保管されているため、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など)が、TDEウォレット・バックアップの場所に作成されます。

7.7.3 分離モードでのTDEウォレットのマージ

分離モードでは、TDEウォレットをマージできます。

7.7.3.1 分離モードでの1つのTDEウォレットの既存のTDEウォレットへのマージ

分離モードでは、ADMINISTER KEY MANAGEMENT文をMERGE KEYSTORE句とともに使用すると、1つのTDEウォレットを既存の別のTDEウォレットにマージできます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、TDEウォレットをマージします:
    ADMINISTER KEY MANAGEMENT MERGE KEYSTORE 'TDE_wallet1_location' 
    [IDENTIFIED BY TDE_wallet1_password] 
    INTO EXISTING KEYSTORE 'TDE_wallet2_location' 
    IDENTIFIED BY TDe_wallet2_password 
    [WITH BACKUP [USING 'backup_identifier]];
    

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

    • TDE_wallet1_locationは、1つ目のTDEウォレットのディレクトリの場所です。マージ後も変更されないまま残されます。このパスは、一重引用符(' ')で囲みます。

    • IDENTIFIED BY句は、最初のTDEウォレットがパスワードで保護されたTDEウォレットの場合に必要です。TDE_wallet1_passwordは、最初のTDEウォレットのパスワードです。

    • TDE_wallet2_locationは、2番目のTDEウォレットのディレクトリの場所です。このウォレットに最初のTDEウォレットがマージされます。このパスは、一重引用符(' ')で囲みます。

    • TDE_wallet2_passwordは、2番目のTDEウォレットのパスワードです。

ターゲットTDEウォレット(TDE_wallet2)は、TDEウォレットのマージ操作後もパスワードで保護されたTDEウォレットに残ります。
7.7.3.2 分離モードでの2つのTDEウォレットの3番目の新しいTDEウォレットへのマージ

分離モードでは、2つのTDEウォレットを3番目の新しいTDEウォレットにマージして、既存の2つのTDEウォレットを変更せずに、新しいTDEウォレットに両方のソースTDEウォレットのキーを格納できます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、TDEウォレットをマージします:
    ADMINISTER KEY MANAGEMENT MERGE KEYSTORE 'TDE_wallet1_location' 
    [IDENTIFIED BY TDE_wallet1_password] AND TDE_wallet 'TDE_wallet2_location' 
    [IDENTIFIED BY TDE_wallet2_password] 
    INTO NEW KEYSTORE 'TDE_wallet3_location' 
    IDENTIFIED BY TDE_wallet3_password;
    

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

    • TDE_wallet1_locationは、1つ目のTDEウォレットのディレクトリの場所です。マージ後も変更されないまま残されます。このパスは、一重引用符(' ')で囲みます。

    • IDENTIFIED BY句は、最初のTDEウォレットがパスワードで保護されたTDEウォレットの場合に必要です。TDE_wallet1_passwordは、最初のTDEウォレットの現行パスワードです。

    • TDE_wallet2_locationは、2番目のTDEウォレットのディレクトリの場所です。このパスは、一重引用符(' ')で囲みます。

    • IDENTIFIED BY句は、2番目のTDEウォレットがパスワードで保護されたTDEウォレットの場合に必要です。TDE_wallet2_passwordは、2番目のTDEウォレットの現行パスワードです。

    • TDE_wallet3_locationは、新しいマージ済TDEウォレットのディレクトリの場所を指定します。このパスは、一重引用符(' ')で囲みます。その場所に既存のTDEウォレットがすでに存在する場合は、エラーとともにコマンドが終了します。

    • TDE_wallet3_passwordは、マージ済TDEウォレットの新しいパスワードです。

    次の例は、自動ログインTDEウォレットとパスワードで保護されたTDEウォレットをマージして、新しい場所にマージ済のパスワードで保護されたTDEウォレットを作成します:

    ADMINISTER KEY MANAGEMENT MERGE KEYSTORE '/etc/ORACLE/KEYSTORE/DB1' 
    AND KEYSTORE '/etc/ORACLE/KEYSTORE/DB2' 
    IDENTIFIED BY existing_password_for_TDE_wallet_2 
    INTO NEW KEYSTORE '/etc/ORACLE/KEYSTORE/DB3' 
    IDENTIFIED BY new_password_for_TDE_wallet_3;
    
    keystore altered.

7.7.4 分離モードでキーストアを閉じる

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

7.7.4.1 分離モードでのTDEウォレットのクローズ

分離モードでは、パスワードで保護されたTDEウォレット、自動ログインTDEウォレットおよびローカル自動ログインTDEウォレットを閉じることができます。

アクセス時に自動的に開かれる自動ログインTDEウォレットの場合は、まず自動的に開くことができない新しい場所に移動してから、手動で閉じる必要があります。自動ログインTDEウォレットからパスワードで保護されたTDEウォレットに構成を変更する場合は、自動ログインTDEウォレットを使用しないように構成を変更し(自動ログインTDEウォレットを自動的に開くことができない別の場所に移動する)、その後、自動ログインTDEウォレットを閉じる必要があります。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、TDEウォレットを閉じます。
    次の2つのADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE文の相違点は、パスワードで保護されたTDEウォレットの場合にパスワードの指定が必要になる点だけです。
    • パスワードで保護されたTDEウォレットの場合:
      ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE 
      IDENTIFIED BY [EXTERNAL STORE | TDE_wallet_password];

      パスワードで保護されたTDEウォレットを閉じると、すべての暗号化操作と復号化操作が無効になります。データを暗号化または復号化しようとしたり、暗号化データにアクセスしようとすると、エラーが発生します。

    • 自動ログインまたはローカル自動ログインTDEウォレットの場合:
      ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE;

      この文の結果として、TDEウォレットのステータスがCLOSEDに変更されないことがあります。これは、Oracle Databaseが検出できない場所にcwallet.ssoファイルも移動していないと、バックグラウンド・ジョブまたはバックグラウンド・プロセスによって自動ログインTDEウォレットが自動的に再度開かれる可能性があるためです。このため、ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE文が正常に実行された後でも、ステータスが常にOPENと表示される可能性があります。

7.7.4.2 分離モードで外部キーストアを閉じる

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

Oracle Key Vaultキーストアの場合は、パスワードを入力するだけで済みます。IDENTIFIED BY句でユーザー名を指定することはできません。パスワードは二重引用符で囲みます。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、外部キーストアを閉じます。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE 
    IDENTIFIED BY [EXTERNAL STORE | "external_key_manager_password"];
キーストアを閉じると、すべての暗号化操作と復号化操作が無効になります。データを暗号化または復号化しようとしたり、暗号化データにアクセスしようとすると、エラーが発生します。

7.7.5 分離モードでのユーザー定義のTDEマスター暗号化キーの作成

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

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。
  2. 次の構文を使用して、ユーザー定義のTDEマスター暗号化キーを作成します。
    ADMINISTER KEY MANAGEMENT SET | CREATE [ENCRYPTION] KEY
    'mkid:mk | mk' 
    [USING ALGORITHM 'algorithm'] 
    [FORCE KEYSTORE]
    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|mkid句を省略したが、mk値を含めた場合、Oracle Databaseはmkmkidを生成します。

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

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

      • AES256

      • ARIA256

      • SEED128

      • GOST256

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

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

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

    ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY 
    '3D432109DF88967A541967062A6F4E460E892318E307F017BA048707B402493C' 
    USING ALGORITHM 'GOST256'
    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;

7.7.6 分離モードでの後で使用するためのTDEマスター暗号化キーの作成

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

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、TDEマスター暗号化キーを作成します。
    ADMINISTER KEY MANAGEMENT CREATE KEY [USING TAG 'tag']
    [FORCE KEYSTORE]
    IDENTIFIED BY EXTERNAL STORE | keystore_password
    WITH BACKUP [USING 'backup_identifier'];

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

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

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

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

    たとえば:

    ADMINISTER KEY MANAGEMENT CREATE KEY 
    FORCE KEYSTORE 
    IDENTIFIED BY keystore_password
    WITH BACKUP;
  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;

7.7.7 分離モードでのTDEマスター暗号化キーのアクティブ化

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

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。

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

    たとえば:

    SELECT KEY_ID FROM V$ENCRYPTION_KEYS; 
    
    KEY_ID
    ----------------------------------------------------
    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']];
    

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

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

    たとえば:

    ADMINISTER KEY MANAGEMENT USE KEY 'ARaHD762tUkkvyLgPzAi6hMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
    FORCE KEYSTORE
    IDENTIFIED BY keystore_password
    WITH BACKUP;

7.7.8 分離モードでのTDEマスター暗号化キーのキー更新

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

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードの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']];
    

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

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

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

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

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

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

    たとえば:

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

7.7.9 分離モードでのTDEマスター暗号化キーの新しいキーストアへの移動

分離モードでは、既存のTDEマスター暗号化キーを既存のパスワードTDEウォレットから新しいTDEウォレットに移動できます。

この機能を使用すると、TDEウォレットのキーの一部またはすべてを新しいTDEウォレットに移動できます。新しいTDEウォレットにキーを移動して、古いTDEウォレットをバックアップした後で、この古いTDEウォレットは削除することもできます。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. V$ENCRYPTION_KEYSビューのCREATION_TIME列とKEY_ID列を問い合せて、移動するキーのキー識別子を確認します。
    たとえば:
    SELECT CREATION_TIME, KEY_ID FROM V$ENCRYPTION_KEYS; 
    
    CREATION TIME
    ----------------------------------------------------
    22-SEP-19 08.55.12.956170 PM +00:00
    
    KEY_ID
    ----------------------------------------------------
    ARaHD762tUkkvyLgPzAi6hMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3. 次の構文を使用して、新しいTDEウォレットにキーを移動します:
    ADMINISTER KEY MANAGEMENT 
    MOVE [ENCRYPTION] KEYS
    TO NEW KEYSTORE 'TDE_wallet_location1'
    IDENTIFIED BY TDE_wallet1_password
    FROM [FORCE] KEYSTORE
    IDENTIFIED BY TDE_wallet2_password
    [WITH IDENTIFIER IN
    { 'key_identifier' [, 'key_identifier' ]... | ( subquery ) }]
    [WITH BACKUP [USING 'backup_identifier'] ];

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

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

    • TDE_wallet1_passwordは、新しいTDEウォレットの移動元のTDEウォレットのパスワードです。

    • FORCEは、この操作のためにTDEウォレットを一時的に開きます。

    • TDE_wallet2_passwordは、キーの移動元のTDEウォレットのパスワードです。

    • subqueryは、必要なキー識別子を正確に確認するために使用できます。

    • backup_identifierは、バックアップの説明(オプション)です。backup_identifierは、一重引用符(' ')で囲みます。

    たとえば:

    ADMINISTER KEY MANAGEMENT MOVE KEYS 
    TO NEW KEYSTORE '$ORACLE_BASE/admin/orcl/wallet' 
    IDENTIFIED BY TDE_wallet1_password 
    FROM FORCE KEYSTORE 
    IDENTIFIED BY TDE_wallet2_password 
    WITH IDENTIFIER IN 
    (SELECT KEY_ID FROM V$ENCRYPTION_KEYS WHERE ROWNUM < 2)
    WITH BACKUP;
    新しいTDEウォレットにキーが移動されると、そのキーは古いTDEウォレットには存在しなくなります。
  4. 古いTDEウォレットを削除するには、walletディレクトリに移動して、次の手順を実行します:
    1. 削除するTDEウォレットが含まれている.p12ファイルをバックアップします。
    2. TDEウォレットが含まれている.p12ファイルを手動で削除します。
    TDEウォレットの場所を見つけるには、TDEウォレットを開き、V$ENCRYPTION_WALLETビューのWRL_PARAMETER列を問い合せます。

7.7.10 分離モードでのカスタム属性タグの作成

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

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードの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は、この操作のためにパスワードで保護されたTDEウォレットを一時的に開きます。この操作のためには、TDEウォレットを開く必要があります。

    • 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関数を使用することで、値を導出できます。

7.7.11 分離モードでのTDEマスター暗号化キーのエクスポートおよびインポート

分離モードでは、様々な方法でTDEマスター暗号化キーをエクスポートおよびインポートできます。

7.7.11.1 分離モードでのTDEマスター暗号化キーのエクスポート

分離モードで、ADMINISTER KEY MANAGEMENT文を使用して、TDEマスター暗号化キーをエクスポートできます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。

  2. 次の構文を使用して、TDEマスター暗号化のキーストアをエクスポートします。

    ADMINISTER KEY MANAGEMENT EXPORT [ENCRYPTION] KEYS 
    WITH SECRET "export_secret" 
    TO 'file_path' 
    [FORCE KEYSTORE]
    IDENTIFIED BY [EXTERNAL STORE | keystore_password]
    [WITH IDENTIFIER IN 'key_id1', 'key_id2', 'key_idn' | (SQL_query)];
    

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

    • export_secretは、エクスポートするキーが含まれるエクスポート・ファイルを暗号化するために指定できるパスワードです。このシークレットを二重引用符(" ")で囲むか、シークレットにスペースが使用されていない場合は引用符を省略できます。

    • file_pathは、キーのエクスポート先ファイルの完全パスと名前です。このパスは、一重引用符(' ')で囲みます。標準ファイル・システムにのみエクスポートできます。

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

    • key_id1key_id2key_idnは、エクスポートするTDEマスター暗号化キーの1つ以上のTDEマスター暗号化キー識別子の文字列です。各キー識別子はカンマで区切り、それぞれのキー識別子を一重引用符(' ')で囲みます。TDEマスター暗号化キーの識別子を確認するには、V$ENCRYPTION_KEYS動的ビューのKEY_ID列を問い合せます。

    • SQL_queryは、TDEマスター暗号化キー識別子のリストをフェッチする問合せです。これによって、通常はTDEマスター暗号化キーの識別子が含まれる1つの列のみが返されます。この問合せは、現在のユーザー権限で実行されます。

7.7.11.2 分離モードでのTDEマスター暗号化キーのインポート

IMPORT [ENCRYPTION] KEYS WITH SECRET句を含むADMINISTER KEY MANAGEMENT文によって、TDEマスター暗号化キーをインポートできます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、TDEマスター暗号化のキーストアをインポートします。
    ADMINISTER KEY MANAGEMENT IMPORT [ENCRYPTION] KEYS 
    WITH SECRET "import_secret"  
    FROM 'file_name'  
    [FORCE KEYSTORE]
    IDENTIFIED BY [EXTERNAL STORE | keystore_password] 
    [WITH BACKUP [USING 'backup_identifier']];
    

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

    • import_secretは、エクスポート操作時にキーの暗号化に使用されたものと同じパスワードです。このシークレットを二重引用符(" ")で囲むか、シークレットにスペースが使用されていない場合は引用符を省略できます。

    • file_nameは、キーのインポート元ファイルの完全パスと名前です。この設定は、一重引用符(' ')で囲みます。

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

7.7.12 分離モードでのOracle Databaseシークレットの保管

シークレットとは、Oracle GoldenGateなどの外部クライアントをデータベースに統合するOracle Databaseの内部機能をサポートするデータです。

7.7.12.1 分離モードでのTDEウォレットへのOracle Databaseシークレットの格納

ADMINISTER KEY MANAGEMENT ADD SECRET|UPDATE SECRET|DELETE SECRET文を使用して、TDEウォレットでのシークレットの追加、シークレットの更新、およびシークレットの削除を行うことができます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、TDEウォレット内のデータベース・シークレットを追加、更新または削除します:
    • シークレットを追加するには:
      ADMINISTER KEY MANAGEMENT
      ADD SECRET 'secret' FOR CLIENT 'client_identifier' 
      [USING TAG 'tag']
      [TO [[LOCAL] AUTO_LOGIN] KEYSTORE TDE_wallet_location 
      [WITH BACKUP [USING backup_id]] 
      | [FORCE KEYSTORE]  
      IDENTIFIED BY [EXTERNAL STORE | TDE_wallet_password] 
      [WITH BACKUP [USING backup_id]]];
    • シークレットを更新するには:
      ADMINISTER KEY MANAGEMENT
      UPDATE SECRET 'secret' FOR CLIENT 'client_identifier' 
      [USING TAG 'tag']
      [TO [[LOCAL] AUTO_LOGIN] KEYSTORE TDE_wallet_location 
      [WITH BACKUP [USING backup_id]] 
      | [FORCE KEYSTORE]  
      IDENTIFIED BY [EXTERNAL STORE | TDE_wallet_password] 
      [WITH BACKUP [USING backup_id]]]; 
    • シークレットを削除するには:
      ADMINISTER KEY MANAGEMENT
      DELETE SECRET FOR CLIENT 'client_identifier' 
      [FROM [[LOCAL] AUTO_LOGIN] KEYSTORE TDE_wallet_location 
      [FORCE KEYSTORE]
      IDENTIFIED BY [EXTERNAL STORE | TDE_wallet_password] 
      [WITH BACKUP [USING backup_id]]]; 

    仕様部は次のとおりです。

    • secretは、格納、更新、または削除するクライアントの秘密キーです。既存のシークレットおよびそれらのクライアント識別子に関する情報を確認するには、V$CLIENT_SECRETS動的ビューを問い合せます。

    • client_identifierは、シークレットの識別に使用される英数字の文字列です。

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

7.7.12.2 分離モードでの外部キーストアへのOracle Databaseのシークレットの保管

ADMINISTER KEY MANAGEMENT ADD SECRET|UPDATE SECRET|DELETE SECRET文を使用して、キーストアでのシークレットの追加、シークレットの更新、およびシークレットの削除を行うことができます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。
  2. 次の構文を使用して、外部キーストア内のデータベース・シークレットを追加、更新または削除します。
    • シークレットを追加するには:
      ADMINISTER KEY MANAGEMENT
      ADD SECRET 'secret' FOR CLIENT 'client_identifier' 
      [USING TAG 'tag']
      [TO [[LOCAL] AUTO_LOGIN] KEYSTORE keystore_location 
      [FORCE KEYSTORE]
      IDENTIFIED BY "external_key_manager_password"]
      [WITH BACKUP [USING backup_id]];
    • シークレットを更新するには:
      ADMINISTER KEY MANAGEMENT
      UPDATE SECRET 'secret' FOR CLIENT 'client_identifier' 
      [USING TAG 'tag']
       [TO [[LOCAL] AUTO_LOGIN] KEYSTORE keystore_location 
      [FORCE KEYSTORE]
      IDENTIFIED BY "external_key_manager_password"
      [WITH BACKUP [USING backup_id]]; 
    • シークレットを削除するには:
      ADMINISTER KEY MANAGEMENT
      DELETE SECRET FOR CLIENT 'client_identifier' 
      [FROM [[LOCAL] AUTO_LOGIN] KEYSTORE keystore_location 
      [FORCE KEYSTORE]
      IDENTIFIED BY "external_key_manager_password"; 

    仕様部は次のとおりです。

    • secretは、格納、更新、または削除するクライアントの秘密キーです。既存のシークレットおよびそれらのクライアント識別子に関する情報を確認するには、V$CLIENT_SECRETS動的ビューを問い合せます。

    • client_identifierは、シークレットの識別に使用される英数字の文字列です。

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

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

7.7.13 分離モードでのキーストアの移行

分離モードでは、ソフトウェア・キーストアと外部キーストア間の移行操作と逆移行操作を実行できます。

7.7.13.1 Oracle Key VaultからTDEウォレットへの分離されたPDBの逆移行

分離されたPDBには個別のキーストア(TDEウォレットまたはOracle Key Vault外部キーストア)があり、TDEウォレットからOracle Key Vaultに個別に移行したり、Oracle Key VaultからTDEウォレットに個別に逆移行することが可能です。

TDEウォレットと外部キーストアの両方を同時に開く場合は、TDEウォレットのパスワードが外部キーストアと同じであることが必要です。または、移行の完了後にTDEウォレットの自動ログイン・キーストアを作成することもできます。
  1. データベースをウォレットからOracle Key Vaultに移行する前に、そのデータベース用にOracle Key Vaultで作成した仮想ウォレットにウォレットの内容(現在およびそれまで使用されたTDEマスター暗号化キー)をアップロードします。
    次の例では、静的初期化パラメータWALLET_ROOT/etc/ORACLE/KEYSTORES/${ORACLE_SID}に設定されています:
    /etc/ORACLE/KEYSTORES/${ORACLE_SID}/pdb-guid/okv/bin/okvutil upload -l 
    /etc/ORACLE/KEYSTORES/${ORACLE_SID}/pdb-guid/tde/ -t wallet -g 
    virtual_wallet_name_in_Oracle_Key_Vault -v 2
  2. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  3. 外部キーストアのパスワードを、TDEウォレットのパスワードと一致するように設定します。
    Oracle Data PumpやOracle Recovery Managerなどの一部のOracleツールでは、古いTDEウォレットからのTDEマスター暗号化キーを使用してエクスポートまたはバックアップされたデータを復号化するために、古いTDEウォレットへのアクセスが必要になります。
    • TDEウォレットのパスワードを外部キーストアと同じになるように設定するには、次の構文を使用します:
      ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD 
      [FORCE KEYSTORE]
      IDENTIFIED BY TDE_wallet_password 
      SET "external_key_manager_password" 
      WITH BACKUP [USING 'backup_identifier'];

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

      • TDE_wallet_passwordは、このウォレットが作成されたときに割り当てられたパスワードです。

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

    • または、TDEウォレットの自動ログイン・キーストアを作成するには、次の構文を使用します:
      ADMINISTER KEY MANAGEMENT CREATE [LOCAL] AUTO_LOGIN KEYSTORE 
      FROM KEYSTORE 'keystore_location' 
      IDENTIFIED BY TDE_wallet_password;
  4. 『Oracle Key Vault管理者ガイド』の手順に従って分離モードのPDB用にOracle Key Vaultをプロビジョニングして、Oracle Key Vaultソフトウェアをエンドポイントにインストールします。
  5. キーストアの構成を次のように設定することで、外部キーストアを新しいプライマリにして、パスワードで保護されたTDEウォレットをセカンダリにします:
    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=OKV|FILE";
  6. 次の構文を使用して、外部キーストアを移行します。
    ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY 
    IDENTIFIED BY "external_key_manager_password" 
    [FORCE KEYSTORE]
    MIGRATE USING TDE_wallet_password;
    移行の完了後に、データベースを再起動する必要や外部キーストアを手動で再度開く必要はありません。
7.7.13.2 分離モードでの外部キーストアからパスワードで保護されたTDEウォレットへの移行

分離モードでは、外部キーストアからパスワードで保護されたTDEウォレットに移行できます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。
  2. PDBエンドポイントを登録してあることと、Oracle Key Vault構成が$WALLET_ROOT/pdb_guid/okvの場所に存在することを確認します。
    TDEウォレットと外部キーストアの両方を同時に開く場合は、TDEウォレットのパスワードが外部キーストアと同じであることが必要です。または、逆移行の完了後にTDEウォレットの自動ログインTDEウォレットを作成することもできます。
  3. TDE_CONFIGURATIONパラメータを次のように設定することで、FILEを新しいプライマリ・キーストアにし、OKVをセカンダリ・キーストアにします。
    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE|OKV";
  4. この時点で、キーストアの構成が完了しました。次の文を発行して、外部キーストアから、パスワードで保護されたTDEウォレットに逆移行します:
    ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY 
    IDENTIFIED BY TDE_wallet_password 
    REVERSE MIGRATE USING "external_key_manager_password" 
    [WITH BACKUP [USING 'backup_identifier']]; 
  5. 必要に応じて、新しく移行したTDEウォレットのパスワードを変更します。
    たとえば:
    ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD 
    IDENTIFIED BY
    old_password SET new_password 
    WITH BACKUP USING 'pwd_change';
これらのステップが完了すると、移行プロセスによってキーストアのキーがメモリーに自動的にリロードされます。データベースを再起動したり、TDEウォレットを手動で再度開く必要はありません。以前のキーが、暗号化されたバックアップで使用されているか、Oracle Data PumpやOracle Recovery Managerなどのツールによって使用されている可能性が高いため、逆移行の後でも外部キーストアが必要な場合があります。自動ログイン・キーストアを作成し、それにHSM_PASSWORDクライアント・シークレットを配置する必要があります。たとえば:
ADMINISTER KEY MANAGEMENT ADD SECRET 'external_key_manager_password'
FOR CLIENT 'EXTERNAL_PASSWORD'
TO LOCAL AUTO_LOGIN KEYSTORE TDE_wallet_location
WITH BACKUP;

7.7.14 プラガブル・データベースのキーストアの統合

PDBキーストアを統合すると、TDEマスター暗号化キーがPDBキーストアからCDBルートのキーストアに移されます。これにより、CDBルートのキーストアの管理者がキーを管理できるようになります。

クライアント・シークレットは移動されません。これらは、PDBが分離モードで構成されていたときに使用されていたキーストアに残されます。PDBキーストアを統合する前に、このキーストアからクライアント・シークレットを削除することをお薦めします。同様に、PDBを分離モードにした場合も、CDBルートのキーストアに格納されているクライアント・シークレットは移動されません。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、PDBのキーストアを統合します。これにより、TDEマスター暗号化キーが、PDBのキーストアからCDBルートのキーストアに移されます。
    ADMINISTER KEY MANAGEMENT UNITE KEYSTORE
    IDENTIFIED BY isolated_keystore_password
    WITH ROOT KEYSTORE [FORCE KEYSTORE]
    IDENTIFIED BY 
    [EXTERNAL STORE | keystore_password_of_cdb_root]
    [WITH BACKUP [USING backup_id]];

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

    • FORCE KEYSTOREは、自動ログインTDEウォレットが開いている(使用中)場合や、TDEウォレットが閉じられている場合に、この操作のためにパスワードで保護されたTDEウォレットを一時的に開きます。

    • united_keystore_password: このパスワード情報を知っていても、UNITE KEYSTORE操作を実行するユーザーが、PDBに対してADMINISTER KEY MANAGEMENT UNITE KEYSTORE操作を実行するための権限を得ることはありません。

    PDBのキーストアをCDBルート内のキーストアに統合すると、PDBに関連付けられていた以前にアクティブであったすべてのTDEマスター暗号化キー(履歴)が、CDBルートのキーストアに移されます。(ORA-46694: The keys are already in the root keystoreエラーが表示された場合は、次を参照してください。)
  3. 分離モードのPDBが統一モードのPDBになっていることを確認します。
    SELECT KEYSTORE_MODE FROM V$ENCRYPTION_WALLET;

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

キーストアはなくなっていますが、そのマスター暗号化キーは、CDBルート内のキーストアに移されています。後から統一モードのPDBを分離モードのPDBに戻すことにした場合は、ADMINISTER KEY MANAGEMENT ISOLATE KEYSTORE文を使用できます。

ORA-46694エラー: ウォレットがPDBコンテキストで作成された場合、PDBのキーストア・タイプは分離に変更され、PDBにキーが設定されていないかぎり、ウォレット・ステータスはOPEN_NO_MASTER_KEYになります。このタイプのPDBをADMINISTER KEY MANAGEMENT UNITE KEYSTORE文を使用して統合すると、ORA-46694: The keys are already in the root keystoreエラーが発生します。このPDBのKEYSTORE_MODEUNITEDに変更するには、PDBのTDE構成を変更する必要があります。PDBで、次の文を実行します。

ALTER SYSTEM RESET TDE_CONFIGURATION;

7.7.15 PDBクローズ時のキーストアの作成

閉じているPDBでキーストアを作成すると、新しいキーストアは空になり、PDBが分離モードに変換されます。

7.7.15.1 PDBクローズ時のキーストアの作成について

閉じているPDBでキーストアを作成すると、キー更新操作で誤って問題が発生する可能性がありますが、このキーストアの作成は元に戻すことができます。

以前のリリースでは、閉じているPDBでキーストアを作成しようとすると、この操作が中止され、「ORA-65040: プラガブル・データベース内からの操作は許可されていません」というエラーが表示されていました。Oracle Databaseリリース18c以降では、利便性のために、PDBのキーストアが閉じているときにPDBでADMINISTER KEY MANAGEMENT CREATE KEYSTORE文を実行しても、Oracle Databaseによってその操作が中止されることはなくなりました。

閉じられたPDBが暗号化を使用するように構成されていない(つまりADMINISTER KEY MANAGEMENT SET KEY文が実行されたことがない)場合は、ADMINISTER KEY MANAGEMENT CREATE KEYSTOREを実行して、空のキーストアが作成され、PDBの構成が分離モードに変更されると、この空のキーストア内にTDEマスター暗号化キーを作成できます。

しかし、PDBがすでに暗号化を使用するように構成されている場合は、そのPDBが統一モードで構成されている可能性があります(この場合、そのTDEマスター暗号化キーはCDBルートのキーストア内で管理されています)。

このような場合に、閉じられたPDBで誤ってADMINISTER KEY MANAGEMENT CREATE KEYSTORE文を実行すると、追加の(空の)キーストアが作成され、PDBが分離モードで構成されます。これを行うと、PDBが(統一モードになっている必要があるが)分離モードに変更される一方で、TDEマスター暗号化キーは引き続きCDBルートのキーストアにあるため、PDBの構成に誤りが生じることになります。この構成上の誤りによって、後からADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY文を使用してTDEマスター暗号化キーをキー更新しようとした場合に、問題が生じる可能性があります。暗号化がすでに有効化されており、キーが設定されている場合、Oracle DatabaseはADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY文をキー更新操作として処理するため、この場合は「ORA-28362: マスター・キーが見つかりません」というエラーが表示されます。キー更新操作を実行するには、Oracle DatabaseがPDBの現在アクティブなTDEマスター暗号化キーを特定する必要があります。しかし、PDBの構成にこのような誤りがあると、PDBが分離モードになっており、必要なキーはCDBルートのキーストア内にあるため、Oracle DatabaseがTDEマスター暗号化キーを特定できません。つまり、PDBのキーストアを検索するようにPDBが構成されることはなく、キー更新操作も失敗します。

PDBのこの構成上の誤りを修正するには、PDBを統一モードに再構成して、空のキーストアを削除する必要があります。(キーストアを削除するときは、必ず事前にバックアップを作成してください。)PDBの構成を統一モードに戻すと、現在アクティブなTDEマスター暗号化キーに対して、キー更新や、TDEマスター暗号化キーを対象としたその他の操作を、再び実行できるようになります。

後からこのPDBを分離モードに構成するには、PDBを開き、ADMINISTER KEY MANAGEMENT ISOLATE KEYSTORE文を実行します。これにより、PDBが分離され、そのTDEマスター暗号化キーと、以前にアクティブであったキー(履歴)が、CDBルートのキーストアから、新しく作成された分離PDBのキーストアに移されます。

7.7.15.2 PDBクローズ時のキーストア作成操作を元に戻す

PDBで誤ってキーストアを作成した(それによってPDBが分離モードで構成された)場合は、キーストアの作成操作を元に戻す必要があります。

この手順は、すでに暗号化が有効化されている(つまり、すでにTDEマスター暗号化キーが存在する)閉じられたPDBでキーストアを作成した場合に使用します。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。
  2. V$ENCRYPTION_WALLET動的ビューのKEYSTORE_MODE列を問い合せて、PDBのモードを確認します。
  3. V$ENCRYPTION_WALLETの出力がISOLATEDである場合は、ALTER SYSTEM文を実行して、PDBを統一モードに再構成します。
    • pfileが使用されている場合は、次の文を使用して、TDE_CONFIGURATIONパラメータをクリアします。
      ALTER SYSTEM RESET TDE_CONFIGURATION SCOPE=MEMORY;

      Oracle Real Application Clusters環境では、次のように、SIDパラメータを指定します。

      ALTER SYSTEM RESET TDE_CONFIGURATION SCOPE=MEMORY SID='*';
    • spfileが使用されている場合は、次の文を使用して、TDE_CONFIGURATIONパラメータをクリアします。
      ALTER SYSTEM RESET TDE_CONFIGURATION SCOPE=BOTH;

      Oracle Real Application Clusters環境では、次のように、SIDパラメータを指定します。

      ALTER SYSTEM RESET TDE_CONFIGURATION SCOPE=BOTH SID='*';
  4. WALLET_ROOT/PDB_GUID/tdeディレクトリで、誤って作成されたewallet.p12キーストア・ファイルを見つけてバックアップします。
  5. 誤って作成された空のキーストア・ファイルを削除します。
この段階で、PDBが統一モードになり、以降は正しいキーストアおよびTDEマスター暗号化キーに対して、キー更新操作を実行できるようになります。

7.8 分離モードでの透過的データ暗号化の管理

分離モードでは、透過的データ暗号化に対する一般的な管理タスクをいくつか実行できます。

7.8.1 分離モードでの暗号化されたPDBのクローニングまたは再配置

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

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

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

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

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

7.8.2.1 分離モードでの暗号化データを含むPDBのアンプラグ

(暗号化データを含む)PDBを、あるCDBからアンプラグし、必要に応じて別のCDBにプラグインできます。

統一モードとは異なり、ALTER PLUGGABLE DATABASE文でENCRYPT句を指定する必要はありません。アンプラグされるデータベースには、データ・ファイルおよび他の関連ファイルが含まれています。各PDBには独自の一意のキーストアがあるため、アンプラグするPDBのTDEマスター暗号化キーをエクスポートする必要はありません。PDBがすでにアンプラグされているかどうかを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのSTATUS列を問い合せます。
  • PDBのアンプラグ時に通常使用する方法と同じ方法で、分離モードのPDBをアンプラグします。
    たとえば:
    ALTER PLUGGABLE DATABASE pdb1
      UNPLUG INTO '/oracle/data/pdb1.xml';
7.8.2.2 分離モードでの暗号化データを含むPDBのCDBへのプラグイン

暗号化データを含むPDBをCDBにプラグインすると、そのPDB内で暗号化キーを設定できます。

統一モードとは異なり、CREATE PLUGGABLE DATABASE文でDECRYPT句を指定する必要はありません。アンプラグされたPDBを別のCDBにプラグインする際、この操作は以前のキーの履歴を無効にするため、キー・バージョンは0に設定されます。キー・バージョンは、V$ENCRYPTED_TABLESPACES動的ビューのKEY_VERSIONを問い合せて確認できます。同様に、制御ファイルが失われ再作成された場合、以前のキーの履歴は0にリセットされます。PDBがすでにプラグインされているかどうかを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのSTATUS列を問い合せます。
  1. アンプラグされたPDBをCDBにプラグインして、PDBを作成します。

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

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

      CREATE PLUGGABLE DATABASE CDB1_PDB2 
      USING '/tmp/cdb1_pdb2.pdb';

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

    V$ENCRYPTION_KEYS動的ビューを問い合せることで、ソース・データベースに暗号化データがあるかどうかや、キーストアにTDEマスター暗号化キーが設定されているかどうかを確認できます。

  2. PDBを開きます。

    たとえば:

    ALTER PLUGGABLE DATABASE CDB1_PDB2 OPEN;
  3. CDBルートのキーストアを開きます。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY password;

    必要に応じて、PDB内のキーストアを開きます。

  4. PDBでキーストアを開き、PDBのTDEマスター暗号化キーを設定します。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEY 
    IDENTIFIED BY keystore_password 
    WITH BACKUP USING 'emp_key_backup';
7.8.2.3 分離モードでの外部キーストアにマスター暗号化キーが格納されたPDBのアンプラグ

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

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

    マスター・キーを外部キーストア間で移動する方法については、外部キーストアのドキュメントを参照してください。

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

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

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

    たとえば、PDB1というPDBの場合は、次のようになります。

    ALTER SESSION SET CONTAINER = PDB1;
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY "external_key_manager_password";
  5. 外部キーストアのマスター暗号化キーをPDBにインポートします。
    ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS 
    WITH SECRET "external_keystore" FROM 'external_keystore' 
    IDENTIFIED BY "external_key_manager_password"; 
  6. PDBを閉じて再オープンします。
    ALTER PLUGGABLE DATABASE PDB1 CLOSE;
    ALTER PLUGGABLE DATABASE PDB1 OPEN;

7.8.3 分離モードでの暗号化データを含むPDBのCDBへのクローニング

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

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. クローニングを計画しているPDBのTDEウォレットが開いていることを確認します。

    V$ENCRYPTION_WALLETビューのSTATUS列を問い合せると、TDEウォレットが開いているかどうかを確認できます。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN FORCE KEYSTORE IDENTIFIED BY TDE_wallet_password;
  3. PDBをクローニングします。

    たとえば:

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

    TDE_wallet_passwordは、cdb1_pdb3クローンが作成されるCDBのTDEウォレットのパスワードに置き換えてください。

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

    たとえば:

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

7.8.4 分離モードで、暗号化されたデータを含むPDBのリモート・クローニングを2つのCDB間で実行する

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

  1. 分離モードのPDBに、ADMINISTER KEY MANAGEMENT権限またはSYSKM権限を付与されたユーザーとしてログインします。
  2. V$ENCRYPTION_WALLETビューのSTATUS列を問い合せて、クローニングするPDBのTDEウォレットが開いていることを確認します。
  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 TDE_wallet_password;

    TDE_wallet_passwordは、cdb1_pdb3クローンが作成されるCDBのTDEウォレットのパスワードに置き換えてください。

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

    たとえば:

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

    TDEウォレットはキー更新操作中に開いている必要があるため、この例には、FORCE KEYSTOREが含まれています。

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

7.8.5 分離モードでの暗号化されたPDBの再配置

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

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

    たとえば:

    CREATE PLUGGABLE DATABASE target_pdb_name 
    FROM src_pdb_name@dblink RELOCATE  
    KEYSTORE IDENTIFIED BY TDE_wallet_password;

    TDE_wallet_passwordは、cdb1_pdb3クローンが作成されるCDBのTDEウォレットのパスワードに置き換えてください。

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

    たとえば:

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

    TDEウォレットはキー更新操作中に開いている必要があるため、この例には、FORCE KEYSTOREが含まれています。

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

7.8.6 分離モードでのキーストアの開閉操作の機能

分離モードでのキーストア(TDEウォレットまたは外部キーストア)の開閉操作がどのように機能するかを知っておく必要があります。

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

PDBにおけるキーストアの開閉操作は、PDBにおけるキーストアの開閉状態によって異なります。

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

  • マルチテナント環境では、各PDBについて個別のキーストア・パスワードを作成できます。

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

  • 自動ログインTDEウォレットが使用中の場合やTDEウォレットが閉じている場合は、TDEウォレットを開くときにADMINISTER KEY MANAGEMENT文にFORCE KEYSTORE句を含めます。

  • キーストアがパスワードで保護されたTDEウォレット(パスワードのために外部ストアを使用するウォレット)の場合は、IDENTIFIED BY句のパスワードをEXTERNAL STOREに置き換えます。

  • 個々のPDBでTDEマスター暗号化キーを設定するには、事前にCDBルートでキーを設定する必要があります。PDBにキーを設定するときにUSING TAG句を含めることをお薦めします。たとえば:

    SELECT ' ADMINISTER KEY MANAGEMENT SET KEY 
    USING TAG '''||SYS_CONTEXT('USERENV', 'CON_NAME')||' '||TO_CHAR (SYSDATE, 'YYYY-MM-DD HH24:MI:SS')||''' 
    FORCE KEYSTORE IDENTIFIED BY EXTERNAL STORE 
    WITH BACKUP CONTAINER = CURRENT;' AS "SET KEY COMMAND" FROM DUAL;

    USING TAG句を含めると、特定のPDBに属するキーと、それらがいつ作成されたかを迅速かつ容易に識別できます。

  • 自動ログインTDEウォレットとローカル自動ログインTDEウォレットは自動的に開きます。これらを最初にrootからまたはPDBから、手動で開く必要はありません。

  • 分離モードで構成されたPDBがあり、そのキーストアが開いている場合は、CDBルート内のキーストアを閉じようとすると、「ORA-46692 ウォレットをクローズできません」というエラーが発生して失敗します。この動作をオーバーライドするには、ADMINISTER KEY MANAGEMENT文でFORCE CLOSE句を使用します。

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

7.8.7 分離モードでのPDBのマスター暗号化キーのエクスポートおよびインポート

分離モードでは、ADMINISTER KEY MANAGEMENT EXPORTEXPORT句およびIMPORT句を使用して、PDBのマスター暗号化キーをエクスポートまたはインポートできます。

7.8.7.1 分離モードでのPDBのマスター暗号化キーのエクスポートおよびインポートについて

分離モードでは、CDB以外のデータベースでこのキーをエクスポートおよびインポートする場合と同じ方法で、CDBルートからマスター暗号化キーをエクスポートおよびインポートできます。

また、PDB内からマスター暗号化キーをエクスポートおよびインポートすることで、PDBに属するすべてのマスター暗号化キーをエクスポートおよびインポートできます。PDBでのマスター暗号化キーのエクスポート操作およびインポート操作では、PDBのアンプラグおよびプラグイン操作がサポートされます。PDBのアンプラグ操作およびプラグイン操作では、PDBに属するすべてのマスター暗号化キー、およびメタデータが対象になります。したがって、PDB内からキーをエクスポートする場合、ADMINISTER KEY MANAGEMENT EXPORT文のWITH IDENTIFIER句は許可されません。WITH IDENTIFIER句は、CDBルートでのみ使用できます。

CDBルートに自動ログイン・キーストアがある場合、またはキーストアが閉じている場合は、FORCE KEYSTORE句を含める必要があります。キーストアがパスワードに外部ストアを使用するように構成されている場合、IDENTIFIED BY EXTERNAL STORE句を使用します。たとえば、このシナリオにおいてエクスポート操作を実行するには、次のようにします。

ADMINISTER KEY MANAGEMENT EXPORT KEYS 
WITH SECRET "my_secret"
TO '/etc/TDE/export.exp'
FORCE KEYSTORE 
IDENTIFIED BY EXTERNAL STORE;

このADMINISTER KEY MANAGEMENT EXPORT操作では、キーがエクスポートされるだけでなく、PDB環境(およびクローニング操作)に必要なメタデータも作成されます。

PDBの内部では、マスター暗号化キーのエクスポート操作によって、キーがエクスポートされるPDBと同じGUIDを持つPDBにより作成またはアクティブ化されたキーがエクスポートされます。基本的に、エクスポートが実行されるPDBに属しているすべてのキーがエクスポートされます。

PDB内のエクスポート・ファイルからマスター暗号化キーがインポートされるのは、そのマスター暗号化キーが同じGUIDを持つ別のPDBからエクスポートされている場合のみです。CDBへのPDBのプラグインをサポートするため、インポートでは、WITH IDENTIFIER句なしでエクスポートされたCDB以外のマスター暗号化キーを含むエクスポート・ファイルからもマスター暗号化キーがインポートされます。PDB名やデータベースIDなどのPDB固有の詳細は、CDBごとに変化する可能性があるため、PDB固有の情報は、更新されたPDB情報を反映するようにインポート時に変更されます。

ノート:

PDB内では、PDB全体のキーのみエクスポートできます。問合せまたは識別子に基づいた選択的なエクスポート機能はrootに制限されています。

7.8.7.2 分離モードでのPDBのマスター暗号化キーのエクスポートまたはインポート

分離モードでは、ADMINISTER KEY MANAGEMENT文によって、PDBのマスター暗号化キーをエクスポートまたはインポートできます。

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

  2. エクスポートまたはインポート操作を実行します。

    たとえば:

    ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS 
    WITH SECRET "hr_secret" TO '/tmp/export.p12' 
    FORCE KEYSTORE 
    IDENTIFIED BY password;

    この操作を行うにはキーストアが開いている必要があるため、FORCE KEYSTORE句が含まれていることを確認してください。

7.8.7.3 例: 分離モードでのPDBからのマスター暗号化キーのエクスポート

ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS文によって、PDBのマスター暗号化キーをエクスポートできます。

例7-1に、PDB hrpdbからマスター暗号化キーをエクスポートする方法を示します。この例では、自動ログイン・キーストアが使用されているか、キーストアが閉じている場合のために、FORCE KEYSTORE句が含められています。

例7-1 PDBからのマスター暗号化キーのエクスポート

ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS 
WITH SECRET "my_secret" TO '/tmp/export.p12' 
FORCE KEYSTORE 
IDENTIFIED BY password;
7.8.7.4 例: 分離モードでのPDBへのマスター暗号化キーのインポート

ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS文によって、PDBにマスター暗号化キーをインポートできます。

例7-2に、PDB hrpdbにマスター暗号化キーをインポートする方法を示します。

例7-2 PDBへのマスター暗号化キーのインポート

ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS 
WITH SECRET "my_secret" 
FROM '/tmp/export.p12' 
FORCE KEYSTORE 
IDENTIFIED BY password 
WITH BACKUP;