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

Oracle Cloudデータベース(オンプレミス・データベースではない)では、分離モードを使用すると、プラガブル・データベース(PDB)ごとにキーストアを作成できます。

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

分離モードでは、プラガブル・データベース(PDB)に固有のキーストアがあるため、キーストアおよびTDEマスター暗号化キーの管理をPDBからのみ行います。

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

  • 分離モードが設定されていないすべてのPDBに、CDBルートに対する統一モード設定が適用されます。たとえば、CDBルートで作成したキーストアが、そのルートに関連付けられた統一モードのPDBによって使用されます。

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

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

PDBを分離モードで構成することの利点は、暗号化されたPDBの数が多い場合に、PDBにおけるキー更新操作のパフォーマンスが、統一モードでのキー更新パフォーマンスに比べて優れていることです。

CDBに暗号化されたPDBが多数含まれる場合は、PDBを分離モードで構成することで、PDBにおけるキー更新操作のパフォーマンスが、スタンドアロン・システムにおけるキー更新操作のパフォーマンスと同等になり、システム全体の暗号化されたPDBの数が増えても低下することがなくなります。

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

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

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

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

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

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

キーストアの作成

ADMINISTER KEY MANAGEMENT
CREATE KEYSTORE ['keystore_location']
IDENTIFIED BY keystore_password;

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

keystore_location句は、WALLET_ROOTパラメータが設定されている場合のみオプションです。それ以外の場合は、必須。

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

ADMINISTER KEY MANAGEMENT 
CREATE [LOCAL] AUTO_LOGIN KEYSTORE 
FROM KEYSTORE ['keystore_location'] 
IDENTIFIED BY keystore_password;

keystore_locationは、WALLET_ROOTパラメータが設定されている場合はオプションです。

キーストアを開く

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

この操作では、EXTERNAL_STORE句でウォレット内のパスワードが使用されます。ウォレットは、WALLET_ROOTの場所のtde_sepsディレクトリに構成されています。このウォレットにはキーストアのパスワードが格納されます。

分離モードのPDBでは、EXTERNAL_STORE句で使用されるウォレットが、場所WALLET_ROOT/PDB_GUID/tde_sepsに構成されている必要があります。

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

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

-

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

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

-

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

ADMINISTER KEY MANAGEMENT 
MERGE KEYSTORE 'keystore_location1'
[IDENTIFIED BY keystore1_password]
INTO EXISTING KEYSTORE 'keystore_location2'
IDENTIFIED BY keystore2_password
WITH BACKUP [USING 'backup_identifier'];

-

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

ADMINISTER KEY MANAGEMENT
MERGE KEYSTORE 'keystore_location1'
[IDENTIFIED BY keystore1_password]
AND KEYSTORE 'keystore_location2'
[IDENTIFIED BY keystore2_password]
INTO NEW KEYSTORE 'keystore_location3'
IDENTIFIED BY keystore3_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'];

-

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

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' 
[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 keystore_password
[WITH IDENTIFIER IN 
{ 'key_id' [, 'key_id' ]... | 
( subquery ) }];

-

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

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

-

TDEマスター暗号化キーのソフトウェア・キーストアから外部キーストアへの移行

ADMINISTER KEY MANAGEMENT 
SET [ENCRYPTION] KEY
IDENTIFIED BY external_key_manager_password
[FORCE KEYSTORE]
MIGRATE USING software_keystore_password
WITH BACKUP 
[USING 'backup_identifier'];

-

TDEマスター暗号化キーの外部キーストアからソフトウェア・キーストアへの逆移行

ADMINISTER KEY MANAGEMENT 
SET [ENCRYPTION] KEY
IDENTIFIED BY software_keystore_password
REVERSE MIGRATE USING external_key_manager_password;

-

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

ADMINISTER KEY MANAGEMENT 
ADD SECRET 'secret'
FOR CLIENT 'client_identifier'
[USING TAG 'tag_name' ]
IDENTIFIED BY
[EXTERNAL STORE | 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を変更して分離モードにします。次に、TDEマスター暗号化キーと、以前にアクティブであったすべてのTDEマスター暗号化キー(履歴)を、CDBルートのキーストアから、独自のパスワードを持つPDBの新しく作成されたキーストアに移動します。以降は、PDBがここで自分のキーを管理できるようになります。

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

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

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

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

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

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

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

6.4.1 分離モードの構成

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

CDB環境のWALLET_ROOTパラメータおよびTDE_CONFIGURATIONパラメータの構成は、統一モードの構成時と同様の手順で行いますが、ALTER SYSTEM文のRESET句を使用するのではなく、SET句を使用する点が異なります。この構成を行うには、初期化パラメータ・ファイルにWALLET_ROOTパラメータとTDE_CONFIGURATIONパラメータを追加します。PDBを分離モードで構成するには、PDBのTDE_CONFIGURATIONパラメータに値を設定します。この操作は、ALTER SYSTEM文を使用するか、ADMINISTER KEY MANAGEMENT ISOLATE KEYSTORE文を発行することによって行います。この項では、ALTER SYSTEM文を使用する方法について説明します。

PDBのTDE_CONFIGURATIONパラメータの値を設定するときに、システムでpfileとspfileのどちらが使用されているかに応じて、ALTER SYSTEM文のSCOPE句を適切な値に設定する必要があります。TDE_CONFIGURATIONパラメータの値は、属性と値のペアのリストであり、キーストアのタイプを指定するのは、KEYSTORE_CONFIGURATION属性の値です。その内容は次のとおりです。

  • FILEは、ソフトウェア・キーストアを示します。

  • OKVは、Oracle Key Vault外部キーストアを示します。

  • FILE|OKVは、OKVキーストア・タイプからFILEキーストア・タイプへの逆移行が発生しことを示します。

  • FILE|HSMは、HSMキーストア・タイプからFILEキーストア・タイプへの逆移行が発生したことを示します。

  • OKV|FILEは、FILEキーストア・タイプからOKVキーストア・タイプへの移行が発生したことを示します。キーストア・タイプには2つの意味があります。FILEからOKVに移行しているという意味か、OKVの使用時に構成が開始されたが現在は自動ログインOKV構成が使用されている(この場合、OKVパスワードはWALLET_ROOT/PDB_GUID/tdeディレクトリのcwallet.ssoファイルにある)という意味です。

ALTER SYSTEMを使用して、選択したPDBのTDE_CONFIGURATION値を構成すると、CDB環境内のPDBが分離モードになります。この手順のステップでは、個々のPDBを分離モードに構成して、独自のキーストア・タイプを使用できるようにする方法を詳しく説明します。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限を付与されたユーザーとしてPDBに接続します。
  2. ALTER SYSTEM文を実行して、CDB環境のWALLET_ROOTパラメータおよびTDE_CONFIGURATIONパラメータを構成します。
    • ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=keystore_type" SCOPE=both;
    • CDBルートが開いており、PDBがマウント状態である場合は、scopespfileに設定します。
      ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=keystore_type" SCOPE=spfile;
  3. 構成を確認します。
    • 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がソフトウェア・キーストアを使用するように構成されていることを示す)であった場合、そのPDBに対して構成されるキーストアの場所は、WALLET_ROOT/PDB-GUID/tdeです。キーストアがその場所に存在し、TDEマスター暗号化キーが含まれている場合、そのキーはこのPDBのみが使用可能で、他のPDBは使用できません。キーストアがその場所に存在しない場合は、ソフトウェア・キーストアを作成して、TDEマスター暗号化キーを設定する手順に進むことができます。分離モードのPDBを、後から統一モードのPDBに戻すことにした場合は、ADMINISTER KEY MANAGEMENT UNITE KEYSTORE文を使用できます。ADMINISTER KEY MANAGEMENT UNITE KEYSTOREを実行すると、PDBのキーストアからCDBルートのキーストアにキーが移されますが、クライアント・シークレットは元の場所に残ります。このため、元の場所にクライアント・シークレットがなかった場合、PDBのキーストアは実質的に「空」のままになります。これで、バックアップして削除できる状態になります。キーストアを削除する場合は、キーストアが空であっても、必ず事前にバックアップを行ってください。

6.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(ソフトウェア・キーストア)を使用するhrpdb PDBとsalespdb 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;

6.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(ソフトウェア・キーストア)を使用するhrpdb PDBとsalespdb 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;

6.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='*';

6.5 分離モードでのキーストアおよびTDEマスター暗号化キーの構成

分離モードでは、ソフトウェア・キーストアがPDBに関連付けられます。

6.5.1 分離モードでのソフトウェア・キーストアの構成について

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

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

マルチテナント環境では、ソフトウェア・キーストアの資格証明を保管するための安全な外部ストアを作成できます。この機能を使用すると、キーストア・パスワードを隠すことができます。つまり、ユーザーの操作なしにデータベースにアクセスできるスクリプトやツール(夜間に実行されるバッチ・スクリプトなど)に、キーストア・パスワードを保存する必要がなくなります。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がこの外部ストアの場所にアクセスできます。このように、パスワードをまとめて配置すると、パスワードの更新は外部ストアで一度のみで済みます。

6.5.2 ステップ1: 分離モードで構成されたPDBでのソフトウェア・キーストアの作成

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

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。
    たとえば:
    sqlplus sec_admin@hrpdb as syskm
    Enter password: password

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

  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.
    
これらのステップを完了すると、構成したWALLET_ROOTの下にあるデフォルトのキーストアの場所に、ewallet.p12ファイル(キーストア)が生成されます。たとえば、WALLET_ROOTパラメータを$ORACLE_BASE/walletに設定し、TDE_CONFIGURATIONパラメータをFILE(分離モードのPDBに対してソフトウェア・キーストアが構成されることを示す)に設定すると、PDBのキーストアが$ORACLE_BASE/wallet/PDB-GUID/tdeディレクトリに作成されます。

6.5.3 ステップ2: 分離モードのPDBでソフトウェア・キーストアを開く

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

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

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

  2. 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.

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

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

  3. キーストアが開いていることを確認します。
    SELECT STATUS FROM V$ENCRYPTION_WALLET;

6.5.4 ステップ3: 分離モードのPDBのソフトウェア・キーストアでのTDEマスター暗号化キーの設定

分離モードのPDBでソフトウェア・キーストア内にTDEマスター暗号化キーを設定するには、SET KEY句を含むADMINISTER KEY MANAGEMENT文を使用します。

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

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

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

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

6.5.5 ステップ4: 分離モードでのデータの暗号化

キーストアの構成が完了し、PDBが分離モードで構成されると、PDB内のデータを暗号化できるようになります。

6.6 分離モードでの外部キーストアの構成

Oracle Databaseがサポートする外部キーストアには、Oracle Key VaultキーストアまたはOCI Vault - Key Managementキーストアの2つのタイプがあります。

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

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

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

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

IDENTIFIED BY "external_key_manager_password"

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 "Oracle_Key_Vault_password"

6.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 = '*';

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

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

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。
    たとえば:
    sqlplus sec_admin@hrpdb as syskm
    Enter password: password

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

  2. パスワードを二重引用符で囲んで、外部キーストアを次のように開きます。
    たとえば:
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY "Oracle_Key_Vault_password";
  3. データベース・インスタンスを再起動するたびにこの手順を繰り返します。
    CDBルートのキーストアを最初に開く必要があります。

6.6.4 ステップ3: 分離モードのPDBの外部キーストアでのTDEマスター暗号化キーの設定

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

6.6.4.1 分離モードでの新しいTDEマスター暗号化キーの設定

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

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
    たとえば:
    CONNECT sec_admin@pdb_name AS SYSKM
  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 | "external_key_manager_password"];
    

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

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

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

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

      • external_key_manager_password: Oracle Key Vaultの場合は、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となっている必要があります。

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

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

6.6.5 ステップ4: 分離モードでのデータの暗号化

キーストアの構成が完了し、PDBが分離モードで構成されると、PDB内のデータを暗号化できるようになります。

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

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

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

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

PDBが分離モードの場合に、ソフトウェア・キーストアのパスワードを変更できます。

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

6.7.1.1 分離モードでのパスワード保護されたソフトウェア・キーストアのパスワードの変更

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

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

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

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

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

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

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

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

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

    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.
6.7.1.2 分離モードでの外部キーストアのパスワードの変更

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

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
    たとえば:
    CONNNECT sec_admin@pdb_name AS SYSKM
  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;

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

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

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

    たとえば:

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

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

  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を指定しない場合、バックアップは元のキーストアと同じディレクトリに作成されます。この場所は一重引用符(' ')で囲みます。

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

    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など)が、キーストアのバックアップ場所に作成されます。

6.7.3 分離モードでのソフトウェア・キーストアのマージ

分離モードで、ソフトウェア・キーストアをマージできます。

6.7.3.1 分離モードでの1つのソフトウェア・キーストアの既存のソフトウェア・キーストアへのマージ

分離モードで、MERGE KEYSTORE句を含むADMINISTER KEY MANAGEMENT文を使用して、1つのソフトウェア・キーストアを別の既存のソフトウェア・キーストアにマージできます。

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

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

  2. 次の構文を使用して、ソフトウェア・キーストアをマージします。

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

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

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

    • IDENTIFIED BY句は、1つ目のキーストアがパスワード保護されたキーストアの場合は必要です。software_keystore1_passwordは、1つ目のキーストアのパスワードです。

    • keystore2_locationは、1つ目のキーストアがマージされる2つ目のキーストアのディレクトリの場所です。このパスは、一重引用符(' ')で囲みます。

    • software_keystore2_passwordは、2つ目のキーストアのパスワードです。

ターゲット・キーストア(keystore2)は、キーストアのマージ操作後もパスワード保護されたキーストアのままになります。

6.7.3.2 分離モードでの2つのソフトウェア・キーストアの3番目の新しいキーストアへのマージ

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

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

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

  2. 次の構文を使用して、キーストアをマージします。
    ADMINISTER KEY MANAGEMENT MERGE KEYSTORE 'keystore1_location' 
    [IDENTIFIED BY software_keystore1_password] AND KEYSTORE 'keystore2_location' 
    [IDENTIFIED BY software_keystore2_password] 
    INTO NEW KEYSTORE 'keystore3_location' 
    IDENTIFIED BY software_keystore3_password;
    

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

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

    • IDENTIFIED BY句は、1つ目のキーストアがパスワード保護されたキーストアの場合は必要です。software_keystore1_passwordは、1つ目のキーストアの現在のパスワードです。

    • keystore2_locationは、2つ目のキーストアのディレクトリの場所です。このパスは、一重引用符(' ')で囲みます。

    • IDENTIFIED BY句は、2つ目のキーストアがパスワード保護されたキーストアの場合は必要です。software_keystore2_passwordは、2つ目のキーストアの現在のパスワードです。

    • keystore3_locationは、マージされた新しいキーストアのディレクトリの場所を指定します。このパスは、一重引用符(' ')で囲みます。その場所に既存のキーストアがすでに存在する場合は、コマンドが終了してエラーが発生します。

    • software_keystore3_passwordは、マージ後のキーストアの新しいパスワードです。

    次の例は、自動ログイン・ソフトウェア・キーストアをパスワード保護されたキーストアとマージして、マージしたパスワード保護されたキーストアを新しいロケーションに作成します。

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

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

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

6.7.4.1 分離モードでソフトウェア・キーストアを閉じる

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

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

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

    • 自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアの場合は、次のように指定します。
      ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE;

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

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

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

Oracle Key Vaultキーストアの場合は、パスワードを入力するだけで済みます。IDENTIFIED BY句でユーザー名を指定することはできません。パスワードは二重引用符で囲みます。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。

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

  2. 次の構文を使用して、外部キーストアを閉じます。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE 
    IDENTIFIED BY [EXTERNAL STORE | "external_key_manager_password"];
キーストアを閉じると、すべての暗号化操作と復号化操作が無効になります。データを暗号化または復号化しようとしたり、暗号化データにアクセスしようとすると、エラーが発生します。

6.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マスター暗号化キー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;

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

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

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

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

  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はこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

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

6.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はこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

    たとえば:

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

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

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

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

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

  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はこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

    • 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.
    

6.7.9 分離モードでの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-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_identifier' [, '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ディレクトリに移動して、次の手順を実行します。
    1. 削除するキーストアを含む.p12ファイルをバックアップします。
    2. キーストアを含む.p12ファイルを手動で削除します。
    キーストアの場所を検索するには、キーストアを開いてから、V$ENCRYPTION_WALLETビューのWRL_PARAMETER列を問い合せます。

6.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はこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

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

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

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

6.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はこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

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

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

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

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

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

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

  2. 次のSQL文を実行します。

    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はこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

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

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

6.7.12.1 分離モードでのソフトウェア・キーストアへの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 
      [WITH BACKUP [USING backup_id]] 
      | [FORCE KEYSTORE]  
      IDENTIFIED BY [EXTERNAL STORE | keystore_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 
      [WITH BACKUP [USING backup_id]] 
      | [FORCE KEYSTORE]  
      IDENTIFIED BY [EXTERNAL STORE | keystore_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 STORE | keystore_password] 
      [WITH BACKUP [USING backup_id]]]; 

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

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

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

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

6.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はこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

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

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

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

6.7.13.1 分離モードでのパスワード保護されたソフトウェア・キーストアから外部キーストアへの移行

分離モードでは、パスワード保護されたソフトウェア・キーストアから外部キーストアに移行できます。

ソフトウェア・キーストアと外部キーストアの両方を同時に開く場合は、ソフトウェア・キーストアのパスワードが外部キーストアと同じである必要があります。または、移行の完了後にソフトウェア・キーストアの自動ログイン・キーストアを作成できます。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。
  2. 外部キーストアのパスワードを、ソフトウェア・キーストアのパスワードと一致するように設定します。
    Oracle Data PumpやOracle Recovery Managerなどの一部のOracleツールでは、古いソフトウェア・キーストアからのTDEマスター暗号化キーを使用してエクスポートまたはバックアップされたデータを復号化するために、古いソフトウェア・キーストアにアクセスする必要があります。
    • ソフトウェア・キーストアのパスワードを外部キーストアと同じになるように設定するには、次の構文を使用します。
      ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD 
      [FORCE KEYSTORE]
      IDENTIFIED BY software_keystore_password 
      SET "external_key_manager_password" 
      WITH BACKUP [USING 'backup_identifier'];

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

      • software_keystore_passwordは、このキーストアが作成されたときに割り当てられたパスワードです。

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

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

分離モードで、外部キーストアからパスワード保護されたソフトウェア・キーストアに移行できます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBにログインします。
  2. PDBエンドポイントを登録してあることと、Oracle Key Vault構成が$WALLET_ROOT/PDB_GUID/okvの場所に存在することを確認します。
    ソフトウェア・キーストアと外部キーストアの両方を同時に開く場合は、ソフトウェア・キーストアのパスワードが外部キーストアと同じである必要があります。または、逆移行の完了後にソフトウェア・キーストアの自動ログイン・キーストアを作成できます。
  3. TDE_CONFIGURATIONパラメータを次のように設定することで、FILEを新しいプライマリ・キーストアにし、OKVをセカンダリ・キーストアにします。
    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE|OKV";
  4. これで、キーストアの構成が完了しました。次の文を発行して、外部キーストアから、パスワードで保護されたソフトウェア・キーストアに逆移行します。
    ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY 
    IDENTIFIED BY software_keystore_password 
    REVERSE MIGRATE USING "external_key_manager_password" 
    [WITH BACKUP [USING 'backup_identifier']]; 
  5. 必要に応じて、新しく移行されたソフトウェア・キーストアのパスワードを変更します。
    たとえば:
    ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD 
    IDENTIFIED BY
    old_password SET new_password 
    WITH BACKUP USING 'pwd_change';
これらのステップが完了すると、移行プロセスによってキーストアのキーがメモリーに自動的にリロードされます。データベースを再起動したり、ソフトウェア・キーストアを手動で再度開く必要はありません。以前のキーが、暗号化されたバックアップで使用されているか、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 software_keystore_location
WITH BACKUP;

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

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

クライアント・シークレットは移動されません。これらは、PDBが分離モードで構成されていたときに使用されていたキーストアに残されます。PDBキーストアを統合する前に、このキーストアからクライアント・シークレットを削除することをお薦めします。同様に、PDBを分離モードにした場合も、CDBルートのキーストアに格納されているクライアント・シークレットは移動されません。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
    たとえば:
    CONNECT sec_admin@pdb_name AS SYSKM
  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は、自動ログイン・キーストアが開いている(および使用されている)か、キーストアが閉じている場合に、この操作のためにパスワード保護されたキーストアを一時的に開きます。

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

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

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

6.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のキーストアに移されます。

6.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マスター暗号化キーに対して、キー更新操作を実行できるようになります。

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

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

6.8.1 分離モードでの1つのCDBから別のCDBへのPDBの移動

分離モードで、PDBを1つのCDBから別のCDBに自動的に移動できます(ロード・バランシングや新機能の追加を行う場合など)。

PDBにTDEで暗号化された表または表領域がある場合は、ONE_STEP_PLUGIN_FOR_PDB_WITH_TDE動的システム・パラメータをTRUEに設定して、PDBがPDB移動操作にTDEキーを含めるようにすることができます。このパラメータにより、PDBが別のCDBに移された後、TDEキーをPDBにインポートするときに、キーストア・パスワードを手動で指定する必要がなくなります。ONE_STEP_PLUGIN_FOR_PDB_WITH_TDETRUEに設定されている場合、データベースではメモリーにキーストア・パスワードをキャッシュし、システム・レベルで不明瞭化し、インポート操作のために使用します。ONE_STEP_PLUGIN_FOR_PDB_WITH_TDEのデフォルトはFALSEです。
  1. PDB移動操作を開始する前に、SYSDBA管理権限を付与されたユーザーとしてCDBルートにログインします。
    たとえば:
    sqlplus c##sec_admin as sysdba
    Enter password: password
  2. ONE_STEP_PLUGIN_FOR_PDB_WITH_TDE動的初期化パラメータをTRUEに設定します。
    たとえば:
    ALTER SYSTEM SET ONE_STEP_PLUGIN_FOR_PDB_WITH_TDE = TRUE;
  3. PDBを移動(再配置)します。

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

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

6.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';
6.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';
6.8.2.3 分離モードでの外部キーストアにマスター暗号化キーが格納されたPDBのアンプラグ

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

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

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

6.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;

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

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

  1. 分離モードのPDBに、ADMINISTER KEY MANAGEMENT権限またはSYSKM権限を付与されたユーザーとしてログインします。
  2. クローニングを計画しているPDBのソフトウェア・キーストアが開いていることを確認します。

    V$ENCRYPTION_WALLETビューのSTATUS列を問い合せると、ソフトウェア・キーストアが開いているかどうかを確認できます。

    たとえば:

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

    たとえば:

    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のマスター暗号化キーをキー更新する必要があります。
  4. クローニングされたPDBのマスター暗号化キーをキー更新します。

    たとえば:

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

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

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

  1. 分離モードのPDBに、ADMINISTER KEY MANAGEMENT権限またはSYSKM権限を付与されたユーザーとしてログインします。
  2. V$ENCRYPTION_WALLETビューのSTATUS列を問い合せて、クローニングする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$ビューに表示されます。

6.8.5 分離モードで、暗号化データを含むクローニングされたPDBをCDB間で再配置する

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

  1. 分離モードのPDBに、ADMINISTER KEY MANAGEMENT権限またはSYSKM権限を付与されたユーザーとしてログインします。
  2. V$ENCRYPTION_WALLETビューのSTATUS列を問い合せて、クローニングする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 'need instance name example';
  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$ビューに表示されます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6.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に制限されています。

6.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句が含まれていることを確認してください。

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

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

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

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

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

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

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

例6-2 PDBにマスター暗号化キーをインポート

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