4 分離モードの構成

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

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

分離モードでは、プラガブル・データベース(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の数が増えても低下することがなくなります。

ノート:

Oracle Cloud Infrastructure (OCI)クラウド・ツールでは分離モードのPDBはサポートされていません。この非サポートが適用されるのはOracle Base Database Service、専用インフラストラクチャ上のOracle Exadata Database Service、専用Exadata Infrastructure上のOracle Autonomous Database、Cloud@Customer上のOracle Exadata Database ServiceおよびCloud@Customer上のOracle Autonomous Databaseで、これらのデータベース・デプロイメントのキー管理がOracle Key Vaultによって行われる場合でもサポートされません。

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

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

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

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

表4-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がここで自分のキーを管理できるようになります。

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

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

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

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

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

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

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

4.4.1 分離モードでのキーストアの場所とタイプの構成について

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を分離モードに構成して、独自のキーストア・タイプを使用できるようにする方法を詳しく説明します。

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

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

  1. ルートで、WALLET_ROOTパラメータが正しく設定されていることを確認します。
    たとえば:
    SHOW PARAMETER WALLET_ROOT
  2. ALTER SYSTEM権限を持つユーザーで、次の文を実行して動的パラメータTDE_CONFIGURATIONを構成します。
    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=keystore_type" SCOPE=BOTH;
    Oracleデータベースでは、次のように指定されている場合、TDEキー管理に関連するディレクトリが自動的に検出されます。
    • /u01/opt/oracle/product/$ORACLE_UNQNAME/pdb_guid/tde
    • /u01/opt/oracle/product/$ORACLE_UNQNAME/pdb_guid/okv
    • /u01/opt/oracle/product/$ORACLE_UNQNAME/pdb_guid/tde_seps
  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のキーストアは実質的に「空」のままになります。これで、バックアップして削除できる状態になります。キーストアを削除する場合は、キーストアが空であっても、必ず事前にバックアップを行ってください。

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

リストアが必要な古いバージョンの制御ファイルがあり、分離モードで構成されている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;

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

制御ファイルを紛失した場合は、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;

4.4.5 例: 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='*';

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

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

4.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がこの外部ストアの場所にアクセスできます。このように、パスワードをまとめて配置すると、パスワードの更新は外部ストアで一度のみで済みます。

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

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

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

    このコマンドは、WALLET_ROOTの下に/tdeディレクトリを作成し(まだ存在しない場合)、このディレクトリにパスワードで保護されたウォレットを作成します。WALLET_ROOTがASMの共有ディレクトリを指している場合、/tdeサブディレクトリは自動作成されず、CREATE KEYSTORE文を実行する前に存在している必要があります。

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

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

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

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

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

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

4.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となっている必要があります。

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

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

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

Oracle Cloud Infrastructure (OCI)で管理されないオンプレミス・データベース・デプロイメント上の分離モードPDBのキー管理にはOracle Key Vaultが必要です。

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

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

分離モードのPDBの外部キーストアを構成するには、まずWALLET_ROOTパラメータを設定する必要があります。これが必要な理由は2つあります。1つは、将来ソフトウェア・キーストアに移行できるようにするため、もう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になります。

4.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のキーストアを構成するにはOKV、Oracle Key Vaultの自動オープン接続にはOKV|TDEを、keystore_typeに指定できます。

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

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

4.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ルートのキーストアを最初に開く必要があります。

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

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

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

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

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. データベースがREAD WRITEモードでオープンしていることを確認します。
    OPEN_MODEREAD WRITEに設定されている場合、TDEマスター暗号化キーを設定できます。ステータスを確認するには、show pdbsコマンドを実行します。
  3. ハートビート・バッチ・サイズを構成するには、HEARTBEAT_BATCH_SIZE初期化パラメータを設定します。
    HEARTBEAT_BATCH_SIZEパラメータは、ハートビート期間ごとに外部キー・マネージャに送信される「ハートビートのバッチ」のサイズを構成します。2 (ゼロ)から100の値を入力します。デフォルト値は5です。ハートビート期間のデフォルトの期間は3秒です。ハートビート・バッチ・サイズを設定することで、PDBのバッチ間でハートビートをずらして、ハートビート期間中にバッチ内の各PDBに対してバッチごとにハートビートを完了できるようにしたり、PDBのTDEマスター暗号化キーをOracle Key Vaultサーバーから確実にフェッチしてOracle Key Vault永続キャッシュにキャッシュできるようにすることができます。(HEARTBEAT_BATCH_SIZEの動作の詳細は、外部キーストアのハートビート・バッチ・サイズを参照してください。)
    ALTER SYSTEM SET HEARTBEAT_BATCH_SIZE=30 SCOPE=BOTH SID='*';
  4. 次の構文を使用して、TDEマスター暗号化キーを設定します。
    ADMINISTER KEY MANAGEMENT SET KEY 
    [USING TAG 'tag'] 
    [FORCE KEYSTORE] 
    IDENTIFIED BY EXTERNAL STORE|Oracle_Key_Vault_password;

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

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

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

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

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

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

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

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